Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Динамическое создание компонентов

Читайте также:
  1. Creation Kit - Создание своего заклинания
  2. II. Создание кредитной организации.
  3. Балансовое уравнение тепловых эквивалентов компонентов шихты и топлива.
  4. Бриф на создание креативной концепции кампании социальной рекламы
  5. Глава 1 Создание единой федеральной системы в сфере государственной регистрации прав на недвижимость и государственного кадастрового учета недвижимости
  6. Глава 5. СОЗДАНИЕ ОТНОШЕНИЙ МЕЖДУ ГЕРОЯМИ
  7. Глава 6.4. СОЗДАНИЕ ОБЩЕСТВА БУДУЩЕГО

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

Откройте 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;

рис. 1

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

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

Например, нам надо расположить на форме 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) //Задаем заголовок для кнопки endend;

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

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

Возьмите за основу программу рис 1. Добавьте на её форму компонент 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.

Это свойство присутствует и в Инспекторе объектов. Например, для нашей обычной кнопки Button1 оно выглядит так:

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

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


Дата добавления: 2015-07-15; просмотров: 133 | Нарушение авторских прав


Читайте в этой же книге: У дипломних проектах ( роботах) | У дипломних проектах (роботах) | Правознавство | У сучасних умовах | Дипломних проектах (роботах) | Розрахункова частина роботи. | Розрахунки протипожежного водопостачання | Т а б л и ц я 4.5. 4 | Т а б л и ц я 4.5.10 |
<== предыдущая страница | следующая страница ==>
Дикий белок 16 страница| У ДИПЛОМНИХ ПРОЕКТАХ (РОБОТАХ)

mybiblioteka.su - 2015-2024 год. (0.007 сек.)