Введение в DELPHI

       

Более сложные методы и управляющие элементы


Теперь, когда Вы освоили базовые понятия в системе программирования Delphi, можно продолжить изучение компонент и способов создания их методов.

В программе CONTROL1, рассмотренной в начале урока, был сгенерирован метод, являющийся откликом на событие OnClick строки редактирования Edit1. Аналогично, можно сгенерировать метод, являющийся реакцией на событие OnDblClick. В программе CONTROL2, имеющейся на диске, расширен список находящихся на форме компонентов и для многих из них определены события OnClick и OnDblClick. Для исследования Вы можете просто скопировать файлы проекта CONTROL1 в новую директорию CONTROL2, изменить имя проекта на CONTROL2.DPR (в этом файле после ключевого слова "program" также должно стоять название "CONTROL2") и добавить компоненты Label, GroupBox, CheckBox, RadioButton, Button на форму (эти компоненты находятся на страничке "Standard" Палитры Компонентов). Ваша форма будет иметь примерно следующий вид - Рис. Ошибка! Текст указанного стиля в документе отсутствует.-E.

Рис. Ошибка! Текст указанного стиля в документе отсутствует.-E: Внешний вид программы CONTROL2

Заметим, что Вы должны "положить" компонент GroupBox на форму до того, как Вы добавите компоненты CheckBox и RadioButton, которые, в нашем примере, должны быть "внутри" группового элемента. Иначе, объекты CheckBox1, CheckBox2, RadioButton1 и RadioButton2 будут "думать",что их родителем является форма Form1 и при перемещении GroupBox1 по форме не будут перемещаться вместе с ней. Таким образом, во избежание проблем, компонент, который должен быть "родителем" других компонент (Panel, GroupBox, Notebook, StringGrid, ScrollBox и т.д.), нужно помещать на форму до помещения на нее его "детей". Если Вы все же забыли об этом и поместили "родителя" (например, GroupBox) на форму после размещения на ней его "потомков" (например, CheckBox и RadioButton) - не отчаивайтесь! Отметьте все необходимые объекты и скопируйте (с удалением) их в буфер обмена с помощью команд меню Edit|Cut. После этого отметьте на форме нужный Вам объект (GroupBox1) и выполните команду меню Edit|Paste. После этого все выделенные Вами ранее объекты будут помещены на форму, и их "родителем" будет GroupBox1. Описанный механизм является стандартным и может быть использован для всех видимых компонент.

Выберите объект Label1. Создайте для него метод, являющийся откликом на событие OnDblClick (см. выше). Введите в метод одну строчку, например: procedure TForm1.Label1DblClick(Sender: TObject); begin Edit1.Text := 'Двойной щелчок на Label1'; end;

Запустите программу на выполнение и дважды щелкните мышкой на метке Label1. Вы увидите, что строка редактирования изменится, и в ней появится текст "Двойной щелчок на Label1".

Теперь закройте приложение и возвратитесь в режим проектирования. Добавьте обработчики событий OnClick и OnDblClick для каждого объекта, имеющегося на форме. Текст вашего головного модуля будет выглядеть следующим образом:

Листинг Ошибка! Текст указанного стиля в документе отсутствует.-D: Головной модуль программы CONTROL2. Unit Main; interface uses WinTypes, WinProcs, Classes, Graphics, Controls, StdCtrls, Printers, Menus, Forms; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Button1: TButton; GroupBox1: TGroupBox; CheckBox1: TCheckBox; CheckBox2: TCheckBox; RadioButton1: TRadioButton; RadioButton2: TRadioButton; procedure Edit1DblClick(Sender: TObject); procedure Label1DblClick(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure CheckBox2Click(Sender: TObject); procedure RadioButton1Click(Sender: TObject); procedure RadioButton2Click(Sender: TObject); procedure Button1Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Edit1DblClick(Sender: TObject); begin


Edit1.Text := 'Двойной щелчок на Edit1'; end; procedure TForm1.Label1DblClick(Sender: TObject); begin Edit1.Text := 'Двойной щелчок на Label1'; end ; procedure TForm1.CheckBox1Click(Sender: TObject); begin Edit1.Text := 'Щелчок на CheckBox1'; end; procedure TForm1.CheckBox2Click(Sender: TObject); begin Edit1.Text := 'Щелчок на CheckBox2'; end; procedure TForm1.RadioButton1Click(Sender: TObject); begin Edit1.Text := 'Щелчок на RadioButton1'; end; procedure TForm1.RadioButton2Click(Sender: TObject); begin Edit1.Text := 'Щелчок на Radiobutton2'; end; procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text := 'Щелчок на Button1'; end; end.

Эта программа служит двум целям:

  • Она показывает, как создавать процедуры (методы) и как "наполнять" их содержательной "начинкой"
  • Она демонстрирует технику работы с управляющими элементами Windows.



Содержание раздела