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

Delphi. Уроки

  Все выпуски  

Уроки программирования по Delphi.


Служба Рассылок Subscribe.Ru

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

Рассылка №6

Delphi. VCL. Урок 12. Динамическое создание компонентов
Delphi. VCL. Урок 13. Массивы компонентов
Delphi. VCL. Урок 14. Используем TActionList

Полные версии уроков (с картинками) можно найти по адресам
Урок 12. Динамическое создание компонентов
Урок 13. Массивы компонентов
Урок 14. Используем TActionList

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

Иногда компоненты надо создавать динамически. Например, на форме вашей программы может находится кнопка "Дополнительно...", при нажатии на которую ваша форма должна увеличится в размерах и на ней должны появится дополнительные элементы управления. Именно такой пример мы сейчас и рассмотрим.

Откройте Delphi, именьшите форму и расположите на ней кнопку Button1. Установите свойство Caption для кнопки в "Дополнительно...".

Щелкните на кнопке Button1 и внесите в появившуюся заготовку следующий код:

procedure TForm1.Button1Click(Sender: TObject);
var
  btn: TButton; //Переменная для кнопки
  edt: TEdit;   //Переменная для Edit'а
begin
  //Увеличиваем размер формы
  Form1.Height:=Form1.Height+40;
  //Отключаем кнопку
  Button1.Enabled:=false;
  //Создаем новую кнопку
  btn:=TButton.Create(Form1);
  btn.Parent:=Form1;
  //Устанавливаем расположение новой кнопки
  btn.Top:=Form1.Height div 2+20;
  btn.Left:=10;
  btn.Width:=100;
  btn.Height:=25;
  btn.Caption:='Новая кнопка';
  //Создаем новый Edit
  edt:=TEdit.Create(Form1);
  edt.Parent:=Form1;
  //Устанавливаем расположение нового Edit'а
  edt.Top:=Form1.Height div 2+20;
  edt.Left:=120;
  edt.Width:=100;
  edt.Height:=25;
end;

Запускайте программу и нажимайте на кнопку. Форма увеличит размеры и на ней появятся два новых компонента - кнопка и Edit.

Наверх

Изучаем Delphi. Библиотека VCL. Урок 13. Массивы компонентов

Динамическое создание компонентов, рассмотреное на предыдущем уроке, можно использовать и для создания массивов компонентов.

Например, нам надо расположить на форме 3 конопки. Если они будут выполнять в программе схожие функции, то лучше их оформить в виде массива. Для этого сначала этот массив объявляем:

...
var
  Form1: TForm1;
  btn: Array[1..3] Of TButton;
  ...

После этого добавьте в окно кода следующий обработчик для события OnCreate (для этого перейдите в Инспекторе объектов на вкладку Events, и сделайте двойной щелчок на событии OnCreate):

procedure TForm1.FormCreate(Sender: TObject);
var
  i:Integer;
begin
  for i:=1 To 3 do
  begin
    btn[i]:=TButton.Create(Form1); //Создаем кнопку
    btn[i].Parent:=Form1; //Задаем родительское окно
    btn[i].Top:=10;
    btn[i].Left:=10+60*(i-1);
    btn[i].Width:=50;
    btn[i].Height:=50;
    btn[i].Caption:=IntToStr(i) //Задаем заголовок для кнопки
  end
end;

Теперь можете запускать программу (F9). Будет создан массив из трех кнопок.

Наверх

Изучаем Delphi. Библиотека VCL. Урок 14. Используем TActionList

На двух прошлых уроках мы с вами посмотрели, как можно динамически создавать компоненты управления. Но у созданных нами кнопок был один недостаток - при нажатии на них ничего не происходило. Давайте сейчас посмотрим, как к созданной динамически кнопке можно добавить (также динамически) код, который будет выполнятся при нажатии на ней.

Возьмите за основу программу из урока 12. Добавьте на её форму компонент ActionList с вкладки Standard.

Для добавления действия в наш компонент ActionList1 сделайте двойной щелчок на нем. Появится окно Editing Form1.ActionList1. Нажмите в нем на кнопку New Action.

В правом списке появится новое действие Action1. Сделайте на нем двойной щелчок для перехода в окно кода. Добавьте следующие строки:

procedure TForm1.Action1Execute(Sender: TObject);
begin
  MessageDlg('Событие для новой кнопки',
    mtConfirmation,
    [mbOK],
    0);
end;

Мы добавили в нашу программу некоторое действие (появление MessageBox'а). Это действие называется Action1. Теперь свяжем этой действие с нашей кнопкой. Для этого добавьте в обработчик Button1Click следующую строку:

  ...
  btn.Caption:='Новая кнопка';
  btn.Action:=Action1;
  //Создаем новый Edit
  ...

В этой строке мы связываем свойство Action для кнопки с конкретным событием Action1.

Это свойство присутствует и в Инспекторе объектов.

Теперь запускайте программу, нажимайте на кнопку "Дополнительно", потом на нашу динамически созданную кнопку. Появится MessageBox - как мы и задумывали.

Таким образом мы присоединили к динамически созданной кнопке некотрое действие.

Наверх

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

Copyright сайт alexeev.nm.ru, 2002


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

В избранное