S1:=0; S2:=0;
for i:=1 to stringgrid1.RowCount-2 do begin
s1:=s1+strtoint(Stringgrid1.cells[1,i]);
s2:=s2+strtoint(Stringgrid1.cells[2,i]);
end;
Stringgrid1.Cells[1,6]:=inttostr(s1);
Stringgrid1.Cells[2,6]:=inttostr(s2);
for i:=1 to StringGrid1.RowCount-1 do
StringGrid1.cells[3,i]:=inttostr(strtoint(StringGrid1.Cells[1,i])-strtoint(StringGrid1.Cells[2,i]));
17. Построение графиков и диаграмм с использованием компонента Chart
![]()

Для построения эффектных диаграмм, графиков используется компонент Chart. Компонент Chart является контейнером объектов Series – серий данных, характеризующихся различными стилями отображения. Каждый компонент может включать несколько серий. Если вы хотите отображать график, то каждая серия будет соответствовать одной кривой на графике. Если вы хотите отображать диаграммы, то для некоторых видов диаграмм можно наложить друг на друга несколько различных серий, для других (например, для круговых диаграмм) это вероятно, будет выглядеть некрасиво. Однако и в этом случае вы можете задать для одного компонента Chart несколько серий одинаковых данных с разным типом диаграммы. Тогда, делая в каждый момент времени активной одну из них, вы можете предоставить пользователю выбор типа диаграммы, отображающей интересующие его данные.
Большинство свойств компонента Chart задается в Редакторе Диаграмм, вызываемом двойным щелчком по компоненту. Назначение основных элементов Редактора Диаграмм приведено на рисунке.



После проектирования внешнего вида диаграммы, обычно требуется программное задание данных для отображения на диаграмме. Для задания отображаемых значений надо использовать методы серии Series. Остановимся на основных методах.
Метод Clear очищает серию от занесенных ранее данных. Например: Series1.Clear; или Chart1.SeriesList. Series[0].Clear; Эти две команды равносильны.
Метод Add(Value, Label, Color) позволяет добавить в диаграмму новую точку. Value – добавляемое значение, Label – название, которое будет отображаться на диаграмме и в легенде, Color – цвет.
Метод AddXY(XValue, YValue, Label, Color) позволяет добавить новую точку в график функции. Параметры XValue и YValue соответствуют аргументу и функции.

Следующий фрагмент программы позволяет построить диаграмму, представленную на рисунке.
series1.clear;
series1.add(155,'Цех 1',clYellow);
series1.add(251,'Цех 2',clBlue);
series1.add(203,'Цех 3',clRed);
series1.add(404,'Цех 4',clPurple);
Series2.clear;
for i:=0 to 100 do
Series2.AddXY(0.02*Pi*i, sin(0.02*Pi*i), '', clRed);
18. Отображение и ввод графической информации – компоненты Image, PaintBox, их свойства
![]()
Для отображения графической информации в библиотеке Delphi предусмотрены следующие компоненты:
Image – используется для отображения графики: пиктограмм, битовых матриц и метафайлов.
PaintBox – используется для создания на форме некоторой области, в которой можно рисовать.
DrawGrid – используется для отображения в строках и столбцах графических данных.
Chart – для создания диаграмм и графиков.
Кроме того отображать и вводить графическую информацию можно на поверхности любого оконного компонента, имеющего свойство Canvas.
Свойства компонента Image:
Picture – позволяет выбрать и загрузить файл рисунка;
AutoSize – автоматическая подгонка компонента под размер, помещенной в него картинки;
Stretch – позволяет подогнать рисунок под размер компонента;
Center – центрирует изображение на площади Image;
Transparent – позволяет сделать изображение прозрачным.
Рисунок можно загрузить и во время выполнения приложения: Image1.Picture. LoadFromFile(FileName);

Компонент PaintBox не имеет каких либо специфических свойств и может использоваться для программного вывода графической информации. Для рисования на нем, как и на других компонентах используется свойство Canvas – холст для рисования. Каждая точка канвы имеет координаты X, Y. Начало системы координат находится в левом верхнем углу. Максимальное значение х соответствует ширине компонента (width), максимальное значение y соответствует высоте компонента (height).
Свойство Canvas имеет ряд команд для рисования.
Pixels[X, Y] – позволяет узнать или задать цвет пикселя с координатами X, Y.
Например: Form1.Canvas. Pixels[20, 30]:=clRed;
Pen – перо. Это объект, который в свою очередь имеет ряд свойств: Color – цвет которым наносится рисунок, Width – ширина пера, Style – определяет вид линии (psSolid, psDash, psDot, psDashDot, psDashDotDot, psClear, psInsideFrame). Например: PaintBox1.Canvas. Pen. style:=psDot; - устанавливает пунктирный вид линии.
Brush – кисть. Это свойство определяет фон и заполнение замкнутых фигур на канве. В свою очередь имеет ряд свойств: Color – цвет заполнения, Style – определяет шаблон заполнения (штриховку) и может принимать значения: bsSolod, bsClear, bsBDiagonal, bsFDiagonal, bsCross, bsDiagCross, bsHorizontal, bsVertical.
MoveTo(X, Y) – перемещение пера без прорисовки линии в точку с координатами X, Y.
LineTo(X, Y) – рисует линию от текущей точки до точки с координатами X, Y.
Arc(x1, y1, x2, y2, x3, y3, x4, y4) – рисует дугу окружности или эллипса.
Chord(x1, y1, x2, y2, x3, y3, x4, y4) – рисует замкнутую фигуру, ограниченную дугой окружности или эллипса и хордой.
Ellipse(x1, y1, x2, y2) – рисует окружность или эллипс.
Pie(x1, y1, x2, y2, x3, y3, x4, y4) – рисует сектор окружности или эллипса.
Polygon([Point(x1,y1), Point(x2,y2), …]) – рисует замкнутую фигуру с кусочно-линейной границей.
Polyline([Point(x1,y1), Point(x2,y2), …]) – рисует кусочно-линейную кривую.
Rectangle(x1, y1, x2, y2) – рисует прямоугольник.
RoundRect(x1, y1, x2, y2, x3, y3) – рисует прямоугольник со скругленными углами.
FillRect(Rect(x1,y1,x2,y2)) – заполняет заданным стилем или шаблоном прямоугольную область, заданную координатами x1, y1, x2, y2.
FloodFill(X, Y, Color, FillStyle) – заполняет замкнутую область на канве. X, Y – произвольная точка внутри заполняемой области. Color – указывает цвет, который используется для определения границы области. FillStyle определяет, как именно по этому цвету определяется границы. Если FillStyle=fsSurface, то заполняется область окрашенная цветом Color, а на других цветах метод останавливается. Если FillStyle=fsBorder, то наоборот, заполняется область, окрашенная любым цветом, не равным Color, а на цвете Color метод останавливается.
Для правильного отображения и прорисовки изображения, команды для рисования следует помещать в событие OnPaint, которое происходит всякий раз при необходимости перерисовать объект.
19. Использование таймера для организации повторяющихся действий
![]()
Компонент Timer позволяет задавать в приложении интервалы времени. Таймер находит многочисленные применения: синхронизация мультипликации, закрытие каких-то окон, с которыми пользователь долгое время не работает, включение хранителя экрана или закрытие связей с удаленным сервером при отсутствии действий пользователя, регулярный опрос каких-то источников информации, задание времени на ответ в обучающих программах — все это множество задач, в которых требуется задавать интервалы времени, решается с помощью таймера.
Таймер — невизуальный компонент, который может размещаться в любом месте формы. Он имеет два свойства, позволяющие им управлять: Interval — интервал времени в миллисекундах и Enabled — доступность. Свойство Interval задает период срабатывания таймера. Через заданный интервал времени после предыдущего срабатывания, или после программной установки свойства Interval, или после запуска приложения, если значение Interval установлено во время проектирования, таймер срабатывает, вызывая событие OnTimer. В обработчике этого события записываются необходимые операции.
Если задать Interval = 0 или Enabled = false, то таймер перестает работать. Чтобы запустить отсчет времени надо или задать Enabled = true, если установлено положительное значение Interval, или задать положительное значение Interval, если Enabled = false.
Например, если требуется, чтобы через 5 секунд после запуска приложения закрылась форма — заставка, отображающая логотип приложения, на ней надо разместить таймер, задать в нем интервал Interval = 5000, а в обработчик события OnTimer вставить оператор Close, закрывающий окно формы.
Если необходимо в некоторой процедуре запустить таймер, который отсчитал бы заданный интервал, например, 5 секунд, после чего надо выполнить некоторые операции и отключить таймер, это можно сделать следующим образом. При проектировании таймер делается доступным (Enabled = true), но свойство Interval задается равным 0, Таймер не будет работать, пока в момент, когда нужно запустить таймер, не выполнится оператор
TimerI. interval:=5000;
Через 5 секунд после этого наступит событие OnTimer. В его обработчике надо задать оператор
Timerl. Interval :=0; который отключит таймер, после чего можно выполнять требуемые операции.
Другой эквивалентный способ решения задачи — использование свойства Enabled. В время проектирования задается значение Interval = 5000 и значение Enabled = false. В момент, когда надо запустить таймер выполняется оператор TimerI. Enabled:=true;
20. Обработка событий мыши. Распознавание нажатых кнопок и координат курсора
При работе с приложением, пользователь может выполнять любые манипуляции мышью. Поэтому для каждого действия предусмотрены определенные события. Основные из них:
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 |


