КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Свойство НазначениеAllowGrayed Имеет значение True, если флажки списка могут находиться в промежуточном («сером») состоянии Checked Массив состояний флажков. Отслеживаются только два состояния: включен (True) и выключен («серое» состояние считается выключенным) Flat Имеет значение True, если форма флажков плоская ItemEnabled Массив допустимых состояний флажков. Если для конкретного флажка задано значение True, то его состояние можно менять, в противном случае флажок недоступен для изменения State Массив состояний флажков, элементы которого принимают одно из трех значений: cbLlnchecked (выключен), cbChecked (включен), cbGrayed («серый»)
При работе со списком флажков можно обрабатывать событие OnClickCheck, которое возникает, когда пользователь меняет состояние одного из флажков.
Компонент Редактор списка строк (TVaLueListEditor) Компонент TValueLIstEditor предназначен для создания списков строк, состоящих из пар «имя — значение». TVaLueListEditor напоминает компонент Таблица строк (TStringGrid), но он более простой. Расположенный на форме объект TValueListEditor представляет собой таблицу из двух столбцов. В первом указывается имя, во втором — соответствующее ему значение. Название каждого столбца можно изменить в свойстве TitleCaptions. На этапе проектирования исходная информация вводится в таблицу с помощью свойства Strings (для этого вызывается визуальный редактор пар значений). Строки, записываемые в это свойство во время работы программы, должны иметь формат «имя = значение» (например, 'XI = 50'). С помощью свойства KeyOptions можно ограничить возможности данного компонента, например разрешить или запретить редактирование, добавление или удаление строк. Свойство Options дает возможность подробно настроить внешний вид объекта па форме. Когда пользователь будет менять значение в строке данного объекта в работающей программе, ему можно предложить на выбор раскрывающийся список готовых значений. Для этого необходимо сформировать собственный обработчик события OnGetLookup. В качестве параметра KeyName перелается очередное значение ключевого (первого) столбца. Программист может записать в параметр Values (тип TStrings) список соответствующих этому значению строк, которые отображаются в меню. Например: procedure TForml.ValueListEditorlGetLookup( const KeyName: String; Values; TStrings); begin if KeyName = 'X1' then begin Values.Add('V1');
end; end; Ячейка такого поля в правом столбце дополнительно сопровождается небольшой кнопкой-стрелкой меню. Для добавления новой строки служит метод:
function InsertRow (const KeyName, Value: string; Append:Boolean): Integer; для удаления — метод: procedure DeleteRowfARow: Integer) ; а для поиска — метод: function FindRowfconst KeyName: string,- var Row: Integer): Boolean,- Компонент Текстовое поле с подписью (TLabeledEdit) Весьма полезный компонент. В большинстве случаев ввода сопровождаются подписями. В предыдущих версия,бовалось создавать по отдельности поле ввода TEdit и надпись TLabel, которую надо было достаточно точно и аккуратно расположить вблизи поля ввода. Теперь, с появлением данного компонента, эта проблема решена. По своим свойствам Текстовое поле с подписью практически полностью совпадает с компонентом TEdit, но в нем появилось новое свойство EditLabel, представляющее собой вложенный компонент TLabel, который автоматически привязан к местоположению поля ввода. Название (подпись) редактируется именно в атом вложенном объекте — в свойстве Caption.
Компонент Диаграмма (TChart) Это очень мощный и богатый возможностями компонент, разработанный Дэвидом Бернеда (версия, включенная в систему Delphi 7, имеет номер 4.02). Он позволяет строить красивые двух- и трехмерные диаграммы на основе различных данных, является наследником класса TPanel и наследует все свойства панели. Создать диаграмму можно двумя способами: визуально с помощью Мастера (без программирования) и непосредственно средствами Паскаля. Начало работы. Мастер запускается командой File > New > Business > TeeChart Wizard (Файл >• Создать >• Деловые >• Мастер диаграмм), после чего разработчику надо выполнить ряд уточнений. Сначала выбирается источник данных. Пусть он не расположен в файле, а генерируется программой — переключатель Non Database Chart (He на основе базы данных). Затем выбирается внешний вид диаграммы. Она может быть двумерной или трехмерной что определяется переключателем 2D/3D (рис. 4.9). На следующем этапе работы Мастера флажок Show Legend (Отображать легенду) определяет наличие легенды — дополнительной панели, на которой указывается соответствие цветов частей диаграммы указанным значениям. Флажок Show Marks включает небольшие желтые подсказки у каждой из частей диаграммы. На этом создание диаграммы заканчивается. После щелчка на кнопке Finish (Готово) в Проектировщике форм появится новая форма, на которой будет расположен объект Chartl. Он заполнен неким набором случайно сгенерированных значений (рис. 4.10),
Настройка диаграммы выполняется с помощью редактора, который вызывается двойным щелчком на объекте Chartl (рис. 4.11). Параметры отойражения диаграммы в окне определяются на вкладке Chart (Диаграмма), состоящей в свою очередь из набора дополнительных панелей. О Панель Series (Ряд данных) очень важна. Она позволяет объединять несколько диаграмм на одном графике с помощью кнопки Add (Добавить). При этом над значениями рядов данных можно выполнять различные операции, задаваемые на вкладке Functions (Функции): сложение (Add), вычитание (Subtract),умножение (Multiply), деление (Divide), взятие наибольшего (High), наименьшего (Low) или среднего (Average) значения (рис. 4.12). О Панель General (Общие) содержит элементы управления для: • экспорта изображения в файл — кнопка Export (Экспортировать); • установки (в процентах) сдвига границ изображения по отношению к границам объекта — поля Margins (Поля); • масштабирования — панель Zoom (Масштаб); • прокрутки — панель Allow Scroll (Разрешить прокрутку). О Средства панели Axis (Оси) отвечают за все, что касается определения координатных осей, их масштаба, заголовков, шага пунктирной сетки и так далее. О Панель Titles (Заголовки) содержит средства для оформления заголовка. О Панель Legend (Легенда) используется при оформлении внешнего вида и содержимого легенды. О Средства панели Panel (П анель) описывают форму и визуальное представление панели-основы, на которой расположена диаграмма. О Панель Pages (Страницы) служит для разделения диаграммы на страницы. Увеличивая число точек на странице с помощью поля Points per Page (Точки на страницу), можно подобрать оптимальное соотношение между наглядностью диаграмм и разумным числом страниц. О Панель Walts (Границы) позволяет задать цвет и размеры границ диаграммы. О Панель 3D описывает пространственное представление трехмерных диаграмм, С помощью нескольких движков проектируемую диаграмму можно вращать и масштабировать. На вкладке Series (Ряды данных) в редакторе задаются конкретные параметры оформления каждого ряда данных (каждого графика, добавленного при помощи вкладки Chart). Выбор текущего ряда данных производится с помощью раскрывающегося списка Area (Область) (рис. 4.13). задать для ряда случайные значения (Random Values), отказаться от генерации значений (No Data) или сформировать значения текущего ряда данных как результат применения некоторой функции (раскрывающийся список Function) к значениям выбранных рядов данных. Выбор рядов данных — занесение в список Selected Series (Выбранные ряды) осуществляется с помощью кнопки >. Программная работа с диаграммами. Рассмотрим пример создания трехмерной диаграммы и заполнения ее значениями непосредственно из программы. На форме Forml разместим компонент TChart и вызовем редактор. Это можно сделать также из контекстного меню объекта выбором пункга Edit Chart (Изменить диаграмму). На панели Series (Ряд данных) вкладки Chart (Диаграмма) щелкните на кнопке Add (Добавить) и выберите подходящее трехмерное представление, например Point (Точечное). На форме появится диаграмма, заполненная случайными данными. На панели Titles (Заголовки) надо указать подходящее название диаграммы и закрыть редактор. Диаграмма связывается с программным кодом очень просто. Большинство настроек, имеющих отношение к оформлению диаграммы, формируются в редакторе, а в программе (в разделе класса TForml, где располагаются создаваемые в Проектировщике элементы управления) должен появиться новый объект — переменная Seriesl TnnaTPointSeries, Она описывает последовательность значений, которые будут отображаться на диаграмме. Всю остальную работу система Delphi 7 берет на себя — очень удобный и простой подход. Рассмотрим основные свойства и методы класса TPointSeries (он является наследником базового класса TChartSeries, который служит основой для всех классов, описывающих содержимое конкретных типовдиаграмм).Разработчику требуются такие возможности, как добавление и удаление точки, изменение некоторого значения, очистка всех точек, получение общего числа точек и доступ к их текущим значениям. Пусть имеется диаграмма типа Point (Точечное представление), на которой должны располагаться условные значения результатов двух экспериментов (≪Эксперимент А*- и ≪Эксперимент Б*). Эти значения вводятся с помощью двух текстовых полей, для их редактирования используется щелчок мыши на точке диаграммы. Нужны также возможности удаления точки и очистки текущего графика. Так как требуется выводить результаты двух экспериментов (два ряда значений), надо добавить к текущей диаграмме еще один ряд. В редакторе диаграммы на панели Chart > Series (Диаграмма >- Ряд дачных) щелкните на кнопке Add (Добавить) и выберите вид представления Point (Точечное). Примерный вид такой формы показан на рис. 4.14.
диаграммы целиком помещалась на панели Chartl, можно немного сдвинуть левую границу области диаграммы вправо. Для этого на панели редактора Chart >• General (Диаграмма > Общие) можно задать значение 5% в левом поле на панели Margins (Поля). Добавление новой точки к серии выполняется с помощью метода Add, заголовок которого выглядит следующим образом. function AddXY(ConstAXValue, AYValue: Double; Const AXLabel: String; AColor: TColor) : Longint; Добавляемая точка задается параметрами AXValue и AYValue. Параметры AXLabeL и AColor — необязательные. Первый описывает произвольное название группы, к кото- рой будет принадлежать точка, второй — цвет этой группы. В нашем случае выберем красный цвет для точек эксперимента А, а цвет точек эксперимента Б сделаем синим. Функция возвращает позицию (номер) новой точки в свойстве XValues или YVaLues (массивы значений) в зависимости от того, по какому измерению добавля- ется на диаграмму точка. Обработчик щелчка на кнопке Эксперимент A (Buttonl) запишется следующим образом. procedure TForml.ButtonlClick(Sender: TObject]; begin Seriesl.AddXY( StrToFloat(Edit 1.Text) , StrToFloat(Edit2.Text) , 'Эксперимент A' , clRed) ; end; Обработчик щелчка на кнопке Эксперимент Б (Button?) будет выглядеть так. procedure TForm2.ButtonlClick(Sender: TObject); begin Series2.AddXY{ StrToFloat(Editl.Text), StrToFloat{Edit2.Text), 'Эксперимент Б ' , clBlue) ; end; Теперь можно запустить программу, ввести в поля значения и добавить «результаты эксперимента» на диаграмму (рис. 4.15). Чтобы удалить ранее введенную точку или изменить ее значение, надо предварительно определить ее номер в массиве Values. Для этого по каждому ряду данных (объекты Seriesl и Series?) формируется обработчик события OnClickPointer. Его заголовок выглядит следующим образом. procedure SeriesClickPointer(Sender: TCustomSeries; Valuelndex: Longlrit: X, Y: Integer);
Наиболее важный параметр Valuelndex содержит номер ближайшей точки ряда, около которой на диаграмме был выполнен щелчок. X и Y — это координаты точки щелчка. Поместим на форму новый элемент—флажок Режим удаления (назовем его DeleteBox). Когда он установлен, выбираемые точки будут удаляться (после уточняющего запроса). В противном случае текущая точка будет корректироваться в соответствии со значениями, указанными в полях ввода. ЗАМЕЧАНИЕМожно было бы обрабатывать щелчки и с помощью события OnClick, в котором кроме номера точки передается и состояние кнопок мыши. Анализируя это состояние, можно выполнять удаление точки по нажатию правой кнопки мыши, а корректировку значения — по нажатию левой кнопки. Удаление элемента из ряда данных осуществляется с помощью метода Delete, имеющего единственный параметр — номер элемента. Изменение текущего значения и положения на диаграмме выполняется простым изменением содержимого соответствующих элементов массивов ValueX и ValueY. Чтобы сделанные изменения отобразились на диаграмме, надо вызвать метод Repaint (Перерисовать) для соответствующего ряда данных. Чтобы не дублировать одинаковый текст обработчиков щелчка на двух рядах точек, добавим в класс TForml метод, который будет получать в качестве параметров номер ряда данных и индекс точки, после чего выполнять все необходимые действия. Введем в часть public класса TForml заголовок такой процедуры. procedure SerieClick( SNum: Integer; Index: Longint ); Теперь достаточно установить на имя данного метода указатель ишши и выбрать в контекстном меню пункт Complete class at cursor (Завершить реализацию класса).
В части реализации модуля сразу появится пустая реализация данной процедуры. В нее надо добавить проверку состояния флажка DeleteBox и в зависимости от этого состояния выполнить либо удаление точки, либо корректировку ее значения (перерисовка диаграммы осуществится автоматически). procedure TForml.SerieClicklSNum: Integer; Index: Integer); begin If DeleteBox.Checked then begin if SNum = 1 then Seriesl.Delete(Index) else Series2.Delete(Index) end else begin if SNum = 1 then begin Seriesl .XValues [Index] : = StrToFloat (Editl. Text) ,- Seriesl.YValuesI Index] := StrToFloat (Edit 2 -Text) ,- Seriesl. Repaint ,• end else Begin Series2. XValues [Index] := StrToFloat (Editl .Text) ,- Series2.YValues[Index] := StrToFloat (Edit2.Text) ,- Series2.Repaint; end end end; Тогда обработчики щелчка на точках каждого ряда данных запишутся следующим образом. procedure TForml.SerieslClichPointer(Sender: TCustomSeries; Valuelndex, X, Y: Integer); Begin SerieClickf 1,Valuelndex ) ; end; procedure TForml. Series2Cl ickPointer (Sender г TCustomSeries ,- Valuelndex, X, Y: Integer) ,- Begin SerieClickf 2,Valuelndex ) ; end; Теперь программа позволяет с помощью щелчков удалять лишние точки и корректировать положение точек, введенных ранее. Для удаления всех значений в ряду данных служит метод Clear. Seriesl.Clear; Вызов этого метода можно вставить, например, в обработчик щелчка па новой кнопке Очистить эксперимент А и так далее.
|