Читать книгу: «Программирование на Delphi 7», страница 6

Шрифт:

ЛЕКЦИЯ № 7


1. КОМПОНЕНТЫ СТРАНИЦЫ «WIN32»

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 – событие возникает после смены выбора вкладки

2. КОМПОНЕНТЫ СТРАНИЦЫ «SYSTEM»

1) Timer – таймер, для вызова какой-либо процедуры через заданный промежуток времени

Enabled – включение/выключение таймера

Interval – время в миллисекундах, через которое будет вызываться событие «OnTimer»

 OnTimer – событие, которое вызывается таймером каждый раз через время «Interval»

2) MediaPlayer – компонент для воспроизведения видео и звуковых файлов

FileName – указание имени видео или звукового файла

DeviceType – вид проигрываемого файла (видео, аудио)

Display – указывается компонент, на котором будет выводиться видео

Open – метод открытая устройства отображения видео или аудио (вызывается перед «PLAY»)

Play – метод запуска видео или аудио (вызывается после «OPEN»)

Stop- метод остановки видео или аудио (вызывается после «PLAY»)

3. КОМПОНЕНТЫ СТРАНИЦЫ «SAMPLES»

Gauge – компонент для отображения числовой величины в рисунке с процентами

Мах – максимальное значение

Min – минимальное значение

Progress – текущее значение

Kind – вид диаграммы (круговая диаграмма, вертикальный столбик, горизонтальный столбик и др.)

BackColor – цвет не закрашенной части компонента

ForeColor – цвет закрашенной части

ShowText – если "TRUE", то текстовое значение в процентах будет отображаться в компоненте, иначе нет

SpinEdit – аналог компонента «EDIT» для ввода цифр с возможность инкремента/декремента величины

MaxValue – максимальное значение

MinValue – минимальное значение

MaxLength – максимальное количество цифр (длина строки)

Increment – шаг наращивания величины

Value – текущее значение

ЛЕКЦИЯ № 8

1. РАБОТА С ГРАФИКОЙ В DELPHI

Рассмотрим задачу, когда нужно на форме программно создать изображение, показанное на рис.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;

2. СОЗДАНИЕ ИНТЕРАКТИВНОГО ГРАФИЧЕСКОГО ИНТЕРФЕЙСА НА БАЗЕ КОМПОНЕНТА «STRINGGRID»

Установки «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.

3. РАБОТА С «TCHART»

Компонент «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».

Покупайте книги и получайте бонусы в Литрес, Читай-городе и Буквоеде.

Участвовать в бонусной программе
Возрастное ограничение:
12+
Дата выхода на Литрес:
11 июня 2021
Дата написания:
2012
Объем:
84 стр. 57 иллюстраций
Правообладатель:
Автор
Формат скачивания:
Текст
Средний рейтинг 3,7 на основе 3 оценок
По подписке
Аудио
Средний рейтинг 4,7 на основе 425 оценок
По подписке
Текст PDF
Средний рейтинг 4,9 на основе 8 оценок
По подписке
Текст PDF
Средний рейтинг 5 на основе 6 оценок
Текст, доступен аудиоформат
Средний рейтинг 0 на основе 0 оценок
По подписке
Текст
Средний рейтинг 4,4 на основе 14 оценок
По подписке
Текст PDF
Средний рейтинг 3,9 на основе 13 оценок
По подписке
Текст PDF
Средний рейтинг 4,6 на основе 11 оценок
По подписке
Текст
Средний рейтинг 4,3 на основе 9 оценок
По подписке
Текст
Средний рейтинг 5 на основе 2 оценок
По подписке
Текст
Средний рейтинг 2,3 на основе 3 оценок
По подписке
Текст
Средний рейтинг 5 на основе 6 оценок
Текст
Средний рейтинг 5 на основе 2 оценок
Текст
Средний рейтинг 5 на основе 3 оценок