1) RichEdit – аналог компонента «MEMO» с возможностью отображения текста с несколькими разными шрифтами и поиском фрагмента текста
2) TrackBar – ползунок "научного" вида для отображения числовых данных
Frequency – шаг проставления меток шкалы на компоненте
Мах – максимальное значение
Min – минимальное значение
Position – текущее значение
Orientation – вид расположения на экране (вертикальный, горизонтальный)
3) ProgressBar – компонент для отображения процессинга
Мах – максимальное значение
Min – минимальное значение
Position – текущее значение
Orientation – вид расположения на экране (вертикальный, горизонтальный)
Smooth- если «False», то шкала закраски дискретная, иначе – сплошная заливка
4) Animate – компонент для отображения видео файлов “AVI” – формата
Active – включение движения в анимации
CommonAVI – выбор одной из стандартных анимаций (анимация поиска файла, копирования и др.)
FileName – указание имени файла анимации (используется для внешних анимаций, для стандартных анимаций свойство не используется)
Repetitions – количество повторов показа анимации (если «О» – то показ пока «Active – True»)
5) DateTimePicker – компонент-календарь для ввода и отображения дат
DateFormat – вид даты в компоненте (вид месяца: прописью или числом)
Kind – вид календаря (для отображения даты или времени)
Time – выбранное время
Date – выбранная дата
DateTime – выбранная дата с временем
MaxDate – максимальное значение даты для выбора и отображения
MinDate -минимальное значение деты для выбора и отображения
6) PageControl – компонент для создания в них вложенных страниц (вкладок-панелей)
ActivePageIndex – номер активной (видимой) вкладки (отсчет с нуля)
PageCount – количество созданных вкладок в компоненте (отсчет с единицы)
OnChanging – событие возникает перед изменением текущей вкладки компонента
OnShow – событие возникает при выборе вкладки компонента
OnHide – событие возникает после смены выбора вкладки
1) Timer – таймер, для вызова какой-либо процедуры через заданный промежуток времени
Enabled – включение/выключение таймера
Interval – время в миллисекундах, через которое будет вызываться событие «OnTimer»
OnTimer – событие, которое вызывается таймером каждый раз через время «Interval»
2) MediaPlayer – компонент для воспроизведения видео и звуковых файлов
FileName – указание имени видео или звукового файла
DeviceType – вид проигрываемого файла (видео, аудио)
Display – указывается компонент, на котором будет выводиться видео
Open – метод открытая устройства отображения видео или аудио (вызывается перед «PLAY»)
Play – метод запуска видео или аудио (вызывается после «OPEN»)
Stop- метод остановки видео или аудио (вызывается после «PLAY»)
Gauge – компонент для отображения числовой величины в рисунке с процентами
Мах – максимальное значение
Min – минимальное значение
Progress – текущее значение
Kind – вид диаграммы (круговая диаграмма, вертикальный столбик, горизонтальный столбик и др.)
BackColor – цвет не закрашенной части компонента
ForeColor – цвет закрашенной части
ShowText – если "TRUE", то текстовое значение в процентах будет отображаться в компоненте, иначе нет
SpinEdit – аналог компонента «EDIT» для ввода цифр с возможность инкремента/декремента величины
MaxValue – максимальное значение
MinValue – минимальное значение
MaxLength – максимальное количество цифр (длина строки)
Increment – шаг наращивания величины
Value – текущее значение
Рассмотрим задачу, когда нужно на форме программно создать изображение, показанное на рис.1. Для этого необходимо на форму поместить компонент «PaintBox1» из вкладки «System» и написать для него процедуру на событие «OnPaint» (событие программной прорисовки компонента).
Рис. 1.
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
with PaintBox1.Canvas do begin // Работа с канвой компонента «PaintBox1»
Pen.Style := psSolid; // Тип линии: сплошная линия(psDash: пунктирная линия)
Pen.Width := 4; // Ширина линии (точки)
Pen.Color := clRed; // Цвет линии
Brush.Color := clBlue; // Цвет закраски
Brush.Style := bsSolid; // Стиль закраски "сеткой" (bsDiagCross: "сеткой")
Ellipse(0, 0, PaintBox1.Width, PaintBox1.Height); // Закрашенный элипс
// Закрашенный четырехугольник
// Цвет линии задается в "Pen.Color", цвет заливки задается в "Brush.Color",
Rectangle(25,25,140,140);
FrameRect(rect(10,10,20,20)); // Не закрашенный четырехугольник, цвет задается в "Brush.Color"
Pixels[0,0]:=clAqua; // Рисование точки
MoveTo(1,1); // Перемещение на нужную точку
LineTo(PaintBox1.Width,PaintBox1.Height); // Рисование линии
// Вывод текста
Font.Color:=clLime; // Цвет шрифта
Font.Size := 20; // Размер шрифта
Font.Style := [] + [fsBold]; // Стиль шрифта
Brush.Style := bsClear; // Прозрачный фон текста
TextOut(50,40,'Hi!'); // Вывод текста
Brush.Color := clAqua; // Укажем цвет закраски
// Закраска области (x,y, цвет который стирать)
FloodFill(50,70, Pixels[50,70], fsSurface);
end;
end;
Установки «StringGrid1»:
ColCount = 60; RowCount = 50; DefaultColWidth = 5; DefaultRowHeight = 5
FixedCols = 0; FixedRows = 0; Options -> goRangSelection -> False
unit Unit1;
interface
. . . . . . .
var Form1: TForm1;
const
fp_down=tobject(1); fp_up=tobject(0); fp_color=clred;
x_min=0; x_max=10; y_min=-1; y_max=1; step=0.1;
implementation
{$R *.dfm}
function TForm1.GetColFromX(x_min, x_max, x: real; col_count: integer): integer;
{ Вычисление номера колонки по координате X }
var c: integer;
begin
try c:=col_count-round((x-x_min)*(col_count-1)/(x_max-x_min)+1);
except c:=0; end;
if c<0 then c:=0; if c>col_count then c:=col_count;
GetColFromX:=c;
end;
function TForm1.GetRowFromY(y_min, y_max, y: real; row_count: integer): integer;
{ Вычисление номера строки по координате Y }
var r: integer;
begin
try r:=row_count-round((y-y_min)*(row_count-1)/(y_max-y_min)+1);
except r:=0; end;
if r<0 then r:=0; if r>row_count then r:=row_count;
GetRowFromY:=r;
end;
procedure TForm1.Button1Click(Sender: TObject);
{ Очистка ячеек }
var i,j: integer;
begin
with StringGrid1 do begin
for i:=0 to colcount-1 do for j:=0 to rowcount-1 do begin
Objects[i,j]:=fp_up;
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
{ Построение синусоиды }
var c,r: integer; x: real;
begin
button1.Click;
with StringGrid1 do begin x:=0;
while x<=10 do begin try
c:=GetColFromX(x_min, x_max, x, stringgrid1.colcount);
r:=GetRowFromY(y_min, y_max, sin(x), stringgrid1.rowcount);
except r:=0; end;
Objects[c,r]:=fp_down;
x:=x+step;
end;
end;
end;
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
{ Нанесение/стирание кружка }
var C, R: Longint; t: TRect;
begin
with StringGrid1 do begin
MouseToCell(X, Y, C, R);
if Objects[c,r]=fp_down then Objects[c,r]:=fp_up else Objects[c,r]:=fp_down;
end;
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
{ Механизм ручной прорисовки ячеек StringGrid }
var t: TRect;
begin
with StringGrid1 do begin
t:=StringGrid1.CellRect(ACol, ARow);
if Objects[ACol, ARow]<>fp_down then begin
canvas.Pen.Color:=clWhite; canvas.Rectangle(t);
end else begin
canvas.Brush.Color:=fp_color; canvas.Pen.Color:=fp_color;
canvas.Ellipse(t);
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
{ Инициализация программы }
begin
label1.Caption:=formatfloat('##0.00',y_max); label2.Caption:=formatfloat('##0.00',y_min);
label3.Caption:=formatfloat('##0.00',x_min); label4.Caption:=formatfloat('##0.00',x_max);
end;
procedure TForm1.Button3Click(Sender: TObject);
{ Выход из программы }
begin
close;
end;
end.
Компонент «TChart» предназначен для отображения численных данных в виде диаграмм различного вида: линейных, круговых, точечных и др. Компонент «TChart» может одновременно отображать несколько графиков, называемых «сериями». Компонент автоматически масштабирует оси, позволяет производить аппроксимацию данных, увеличивать и уменьшать фрагменты графиков. Настройка внешнего вида компонента и задание количества серий в нем обычно производится через двойной щелчок по нему во время разработки программы.
Рассмотрим на простейшем примере работу с компонентом «TChart». Поместите компонент на форму, щелкните по нему мышью двойным щелчком. В появившемся меню выберите вкладку «Series» и нажмите на ней кнопку «Add» дважды, чтобы создать две пустые серии. При нажатии на кнопку «Add» нужно будет указать вид графика для создаваемой серии (линейный, круговой и т.д.). Все остальные настройки будут производиться программным путем. Cодержимое процедур-обработчиков программы приведено ниже.
procedure TForm1.Button1Click(Sender: TObject);
{ Загрузить серию 1 из мемо – компонента }
var n: integer;
begin
for n:=0 to memo1.lines.count-1 do
{ Добавляем в первую серию число с наклейкой к нему и данным цветом }
Chart1.series[0].add(strtofloat(memo1.lines[n]), inttostr(n),clBlue);
end;
procedure TForm1.Button2Click(Sender: TObject);
{ Загрузить синусоиду в серию 2 }
var n: integer;
begin
for n:=0 to 10 do Chart1.series[1].add(sin(n),inttostr(n)+’!’,clRed);
end;
procedure TForm1.Button3Click(Sender: TObject);
{ Очистка графиков (серий) }
begin
Chart1.series[0].clear; Chart1.series[1].clear;
end;
procedure TForm1.Chart1ClickSeries(Sender: TCustomChart; Series: TChartSeries;
ValueIndex: Integer; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
{ Щелчок мыши по серии }
begin
ShowMessage(' Выбрали серию: '+Series.Title+'; точку N: '+
inttostr(valueindex+1)+' со значением Y= '+floattostr(Series.YValues.Value[valueindex]));
end;
procedure TForm1.FormActivate(Sender: TObject);
{ Настройка компонента }
begin
Chart1.title.text.clear; Chart1.title.text.add('Пример'); Chart1.title.text.add('двух графиков');
Chart1.series[0].title:='Серия-1'; Chart1.series[1].title:='Серия-2';
Chart1.series[0].SeriesColor:=clBlue; Chart1.series[1].SeriesColor:=clRed;
Chart1.cursor:=crCross; { Вид курсора над графиками в виде прицела }
end;
procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
{ Перемещение мыши над графиком }
begin
StatusBar1.Panels[0].Text := 'x='+floattostr(x)+ ' y='+floattostr(y);
StatusBar1.Panels[1].Text := 'x='+floattostr( chart1.series[0].XScreenToValue(x))+
' y='+floattostr(chart1.series[0].YScreenToValue(y));
end;
Данный компонент имеет очень много возможностей и настроек, которые можно узнать из справочной системы «Delphi».