Отправляет email-рассылки с помощью сервиса Sendsay

Delphi. Уроки

  Все выпуски  

Delphi. Уроки


Информационный Канал Subscribe.Ru

Delphi. Библиотека VCL. Уроки по программированию с сайта http://progs.biz

Рассылка №14

Delphi. VCL. Урок 26. Диалог с вкладками (компонент PageControl).
Delphi. VCL. Урок 27. Строка состояния.
Delphi. VCL. Урок 28. Работаем с таймером.

Полные версии уроков (с картинками) можно найти по адресам
Урок 26. Диалог с вкладками (компонент PageControl).
Урок 27. Строка состояния.
Урок 28. Работаем с таймером.

Изучаем Delphi. Библиотека VCL. Урок 26. Диалог с вкладками (компонент PageControl)

Для диалога со вкладками используется компонент PageControl со вкладки Win32.

Разместите его на форме. Для добавления вкладок на наш компонент просто щелкните на нем правой кнопкой мыши из контекстного меню выберите New Page. Таким способом можно добавить требуемое число вкладок. Удаляются они аналогично - из контекстного меню нужной вкладки выбираем Delete Page (для того, чтобы выделить нужную вкладку, просто щелкните на ней (но не на ее ярлычке - в этом случае выделится весь PageControl)).

После того, как вы добавите пару-тройку вкладок, они появятся в окне Object TreeView, так что для задания свойств конкретной вкладки просто щелкните на соответствующей стороке в окне Object TreeView.

Теперь можно размещать на вкладках разные элементы управления (как и на обычной форме). Добираться до размещенных элементов управления можно, например, так:

procedure TForm1.Button1Click(Sender: TObject);
begin
  CheckBox1.Enabled:=false;
end;

Обратите внимание, что несмотря на то, что наш checkbox расположен на вкладке (и если вы попытаетесь перетащить его мышкой за ее пределы, то у вас ничего не получится), добраться до него мы можем через форму (в данном примере по нажатии на кнопку). Если вы расположите на второй вкладке другой checkbox, то он получит имя CheckBox2, а не CheckBox1.

Посмотрим теперь, как могут располагаться вкладки если их слишком много, чтобы умещаться в один ряд. Если свойство MultiLine для нашего компонента PageControl установлено в true, то они распологаются в несколько рядов.

А если MultiLine установлено в false (по умолчанию), то в один ряд, причем справа появляются две кнопки для перемещения (совсем как в палитре компонент Delphi).

Свойство TabIndex определяет активную в данный момент вкладку (нумерация с нуля). Это свойство доступно только для чтения.

Из полезных свойств отметим также TabPosition. Возможные значения для него - tpTop, tpBottom, tpLeft, tpRight. При этих значениях ярлыки ко вкладкам располагаются наверху, внизу, слева и справа соответственно). По умолчанию это свойство равно tpTop.

Для получения количества вкладок служит свойство PageCount объекта PageControl. Оно, естественно, доступно только для чтения.

Из модных нововведений интерфейса отметим также свойство HotTrack. Если его установить в true, то при наведении мышки заголовок вкладки будет подсвечиваться.

Вкладки можно добавлять во время выполнения программы. Вот пример такого кода (у нас он выполняется при нажатии кнопки):

procedure TForm1.Button1Click(Sender: TObject);
var
  tab : TTabSheet; //Заводим новую вкладку
begin
  tab:=TTabSheet.Create(Form1); //Задаем родителя
  tab.PageControl:=PageControl1;
  tab.Caption:='New'; //Задаем заголовок
end;

При щелчке на кнопке Button1 на нашей форме появится новая вкладка с заголовком new.

Наверх

Изучаем Delphi. Библиотека VCL. Урок 27. Строка состояния

Компонент StatusBar расположен на вкладке Win32 палитры компонентов.

На строке состояния может располагаться одна или несколько панелей. За это отвечает свойство SimplePanel. Если оно установлено в true, то панель - одна, если в false - то несколько. В первом случае за текст в строке состояния отвечает свойство SimpleText. Оно доступно и на этапе разработки, и на этапе выполнения. Если жа панелей несколько (SimplePanel равно false), то до их свойств можно добраться через свойство Panels. Для добавления панелей к строке состояния просто щелкните на многоточии рядом со свойством Panels в Инспекторе объектов (или просто сделайте двойной щелчок на самой строке состояния на форме).

После добавления панелей можно редактировать их свойства. Основное свойство для них - это text. Естественно, что оно задает текст в сответствующей панели. Это свойство доступно для чтения и записи (в том числе и во время работы программы). Вот так, например, можно задать некотрую надпись в первой панели строки состояния:

 ...
  StatusBar1.Panels[0].Text:='сохранение';
  ...

Обратите внимание, что нумерация панелей идет с нуля.

Количество панелей в строке состояния возвращает следующее выражение:

  ...
  StatusBar1.Panels.Count
  ...

Вот так, например, можно обнулить строки во всех панелях строки состояния:

...
for i:=0 to StatusBar1.Panels.Count-1 do
  StatusBar1.Panels[i].test:='';
  ...
Наверх

Изучаем Delphi. Библиотека VCL. Урок 28. Работаем с таймером

Таймер - это компонент, имеющий только одно одноименное событие. Это событие таймер генерирует через определенные промежутки времени. С технической же точки зрения таймер просто посылает окну сообщение WM_TIMER. Этот компонент расположен на вкладке System Палитры компонентов.

Перенесите его на форму. Основое свойство для таймера - это Interval. Оно определяет (в миллисекундах), как часто наш компонент будет генерировать событие Timer. Например, если мы установим его значение в 1000, то событие Timer будет генерироватся раз с секунду, а если установим в 500 - то 2 раза в секунду. Если же это свойство установить в 0, то наше событие вообще генерироваться не будет.

Для примера рассмотрим, как наша программа раз в секунду может издавать звуковой сигнал. Для этого установите Interval в 1000, затем в заготовке для события таймера (для ее получения перейдите на вкладку Events Инспектора объектов и сделайте двойной щелчок в строке OnTimer) внесите следующий код:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  MessageBeep(0); //Звуковой сигнал
end;

Запускайте программу. Раз в секунду будет раздаваться стандартный звуковой сигнал.

А вот как можно заставить таймер выполнить некоторое действие однократно:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
    Timer1.Interval:=0; //Отключаем таймер
    ... //Некоторое действие
end;

Разумеется, в этом случае необходимо установить для свойства Interval таймера некоторое первоначальное значение.

Наверх

Copyright Алексеев Игорь, 2002

Copyright сайт progs.biz, 2002



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное