ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Теоретические сведения. Компонент TChart (диаграмма)Компонент TChart (диаграмма) Компонент TChart предназначен для построения диаграмм с использованием информации, содержащейся в наборе данных. Компонент размещаются на форму при нажатии кнопки на дополнительной (Additional) панели инструментов. Этот компонент достаточно сложен и имеет большое количество разнообразных свойств, многие из которых являются компонентами и имеют свои свойства. Установка значений этих свойств выполняется при разработке приложения с помощью Редактора диаграмм, который вызывается с помощью контекстного меню EditChart … этого компонента (рис. 20. 1). Рис. 20.1 Окно редактора диаграмм Основным свойством этого компонента является свойство Series типа TChartSeries, представляющее собой массив диаграмм, выводимых в области компонента (часто компонент отображает только одну диаграмму). Разработчик должен указать тип диаграммы и источник данных. Тип выбранной диаграммы и ее название отображаются на странице Chart – Series редактора диаграмм. Для добавления новой диаграммы пользуются кнопкой Add. Для выбранной диаграммы можно выполнить следующие действия: · изменить имя по умолчанию (Series1, Series2 и т. д.) – кнопка Title; · изменить тип диаграммы – кнопка Change; · скопировать диаграмму – кнопка Clone; · удалить диаграмму – кнопка Delete. Источник данных выбирается на странице Series – DataSourse из следующих вариантов: · No Data — значения, вводимые программно; · Random Values — случайные числа; · Function — значения, определяемые выбранной функцией. Если выбран программный способ ввода значений, то при выполнении приложения нужно вызывать соответствующие методы. Для управления значениями, по которым строится диаграмма, часто используются методы Add, Delete или Clear. Функция Add (Const AValue: Double; Const ALabel: String; AColor: TColor): Longint добавляет к диаграмме значение, указанное параметром AValue. Параметры ALabel и AColor — необязательные и содержат соответственно подпись значения и цвет, используемый при выводе. В качестве результата функция возвращает номер значения в массиве значений диаграммы. Функция AddXY (Const AXValue, AYValue: Double; Const AXLabel: String; AColor: TColor): Longint добавляет в серию новую точку, которая имеет X(AXValue)- и Y(AYValue)-значения. Параметры AXLabel и AColor — необязательные и содержат соответственно подпись значения и цвет, используемый при выводе. В качестве результата функция возвращает номер значения в массиве значений диаграммы. Кроме этих функций существует несколько других методов, также позволяющих добавлять значения. Процедура Delete (Valueindex: Longint) удаляет значение с номером, указанным параметром Valueindex. Для удаления всех значений удобно использовать процедуру Сlear. Пример 20. 1. Построить график функции с шагом 0.1 в интервале [-5;5]. Экранная форма программы показана на рис. 20.2. Приведем фрагмент кода программы с обработкой основных событий: const L:double=-5; // левая граница графика R:double=5; // правая граница графика st:double=0.1; // шаг var FrmGraf: TFrmGraf; implementation //функция для которой строится график function y(x:double):double; begin y:=abs(x)+1; end; //обработка события при нажатии на кнопку «График» procedure TFrmGraf.BtnGrafClick(Sender: TObject); var m,i:integer; x:double; begin BtnClear.Enabled:=true; ChtY.Visible:=true; ChtY.Title.Text.Add('График функции y:=abs(x)+1'); m:=round(abs(R-L)/st); //количество точек на графике x:=L; // начальное значение x for i:=0 to m-1 do begin ChtY.Series[0].AddXY(x,y(x),'',clTeeColor); x:=x+st; end; BtnGraf.Enabled:=false; end; //обработка события при нажатии на кнопку «Очистить» procedure TFrmGraf.btnClearClick(Sender: TObject); begin ChtY.Title.Text.Delete(1); ChtY.Series[0].Clear; BtnGraf.Enabled:=true; end; //обработка события изменения выбора «Показать/Скрыть легенду» procedure TFrmGraf.RgrLegClick(Sender: TObject); Begin if RgrLeg.ItemIndex=0 then ChtY.Legend.Visible:=true else ChtY.Legend.Visible:=false; end;
Рис. 20.2. Экранная форма примера 20.1 Создание библиотеки динамической компоновки (DLL) Библиотека динамической компоновки (библиотека) не является исполняемой программой, но содержащийся в ней код может быть вызван из приложения или из другой DLL. Создание библиотеки начинается выбором компонента DLLWizard на странице New в хранилище объектов, который вызывается через меню File ® New ® Other… (рис. 20. 3). Первоначально проект библиотеки состоит из одного файла, который имеет вид library Project2; { Important note about DLL memory management: ShareMem must be the first unit in your library's USES clause AND your project's (select Project-View Source) USES clause if your DLL exports any procedures or functions that pass strings as parameters or function results. This applies to all strings passed to and from your DLL--even those that are nested in records and classes. ShareMem is the interface unit to the BORLNDMM.DLL shared memory manager, which must be deployed along with your DLL. To avoid using BORLNDMM.DLL, pass string information using PChar or ShortString parameters. } uses SysUtils, Classes; {$R *.res} Begin End. Этот проект является заготовкой, к которой необходимо добавить код, для содержания которого создана эта библиотека. Ключевое слово library указывает, что это динамическая библиотека, а не исполняемый файл, и что при компиляции проекта будет создан файл с расширением DLL, а не ЕХЕ. Код, располагаемый между операторными скобками begin и end, служит для инициализации библиотеки и автоматически выполняется при ее загрузке. При инициализации библиотеки можно проверить какие-либо условия, задать начальные значения переменным и т. п. Комментарий в проекте библиотеки предупреждает, что если функции библиотеки в качестве параметров или результата передают строки, то в раздел uses самой библиотеки и вызывающих ее программ и других библиотек должен быть включен модуль ShareMem. Причем этот модуль должен быть первым в списке модулей. Кроме того приложению и библиотеке при передаче строк требуется файл BorlndMM.dll.
Рис. 20.3. Хранилище объектов Delphi с DLL Wizard Дальнейшее создание библиотеки заключается в следующем · в добавлении к проекту функций,; · в экспортировании их из библиотеки. Описание функций располагают между секциями подключения модулей и инициализации. Функции кодируются обычным способом. Экспортирование функций заключается в объявлении функции как внешней. Для этого функция указывается в секции exports, которая имеет следующий вид: Exports <Имя функции> [name <Внешнее имя функции>], <Имя функции> [name <Внешнее имя функции>]; Имя функции — это имя, заданное при описании функции в проекте библиотеки. Внешнее имя представляет собой имя, под которым функция экспортируется и может быть вызвана извне DLL. Указывать внешнее имя не обязательно, в этом случае функция экспортируется под своим именем. Кроме экспортируемых функций библиотека может включать в себя внутренние (неэкспортируемые) функции, а также глобальные переменные. Не нашли, что искали? Воспользуйтесь поиском:
|