Кнопка (TButton) в Delphi

Есть еще один способ установить кнопку на форме. Для этого дважды щелкните мышью по изображению кнопки на палитре компонентов. Но в этом случае кнопка окажется в

Кнопка (TButton) в Delphi

 центре формы, а не там, где мы хотим.

 

Выделите кнопку и перейдите в объект­ный инспектор. В нем (рис. 7.2) показаны свойства кнопки. Как видите, большинство свойств нам уже знакомо по свойствам формы, поэтому не будем их рассматри­вать. Есть только одно интересное свойст­во— ModalResult, но с ним мы познако- мимся позже.

 

Давайте изменим заголовок кнопки. За заголовок формы отвечает свойство caption. Здесь то же самое. Найдите свойство caption и измените содержащийся в нем текст на "Нажми меня".

 

Сразу ИЗМеНИМ И СВОЙСТВО Name у кноп­ки. Ранее говорилось, что любым компо­нентам и формам лучше давать понятные имена. Поэтому давайте с самого начала будем привыкать к нормальному стилю программирования. Найдите свойство 

Кнопка (TButton) в Delphi

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

 

Теперь изменим имя формы. Для этого снимите выделение с кнопки (щелкните мышью в любом месте формы). Вверху окна объектного инспектора должна заго­реться надписьFormlTFormi,как это показано на рис. 7.3. Нужный для редактиро­вания компонент можно выбрать и в этом списке.

 

Теперь найдите здесь свойство Name (оно должно быть равно Forml) и измените его значение на MainForm (это переводится как главная форма).

 

Попробуйте запустить программу (нажмите клавишу <F9>). Оболочка Delphi скомпилирует программу и запустит на выполнение. Теперь можно спокойно на­жимать на кнопку, только ничего в этом случае происходить не будет.

 

Давайте усложним пример и введем реакцию на событие, когда нажимается кнопка. Для этого перейдите на вкладку Events (События) в окне объектного ин­спектора. Когда мы рассматривали события формы, говорилось, что за щелчок клавиши мыши отвечает событие onclick. Для кнопки есть такое же событие. Найдите его (для этого надо перейти на вкладку объектного инспектора Events (События)) и щелкните по нему дважды. Delphi должен создать в редакторе кода процедуру— обработчик события onclick. По умолчанию ей присваивается имя в виде имени компонента (нашей кнопки) плюс имя события без пристав­ки on. В нашем случае получается, что имя процедуры обработчика будет

 

MyFirstButtonclick:

Procedure TFormi.MyFirstButtonclick(Sender: TObject);

begin

end;

 

В объектном инспекторе напротив строки onclick также должно появиться имя процедуры обработчика. Вы можете изменить его, просто напечатав новое имя или выбрав уже существующий обработчик из ниспадающего списка в этой же строке. В нашем случае ниспадающий список пуст, потому что мы больше не дела­ли схожих обработчиков событий, и оно у нас пока единственное.

 

Давайте вернемся в редактор кода и посмотрим, что там создал для нас Delphi? Это процедура MyFirstButtonclick. Ей передается ОДИН параметр Sender объектного типа TObject. В начале выполнения процедуры в переменной sender будет находиться указатель на объект, который вызвал этот обработчик. Это очень важно, потому что вы без проблем можете сделать так, что одна процеду­ра-обработчик сможет обрабатывать нажатия сразу нескольких кнопок или во­обще компоненты разного типа. По содержимому этой переменной можно уз­нать, какой именно компонент сгенерировал событие. Чуть позже вы увидите этот трюк на практике.

 

Давайте напишем внутри процедуры (между операторными скобками begin и end) команду close. Это метод формы, который закрывает процедуру. Теперь наша процедура должна выглядеть как:

 

Procedure TFormi.MyFirstButtonclick(Sender: TObject);

begin

Close();

end;

 

Попробуйте запустить программу и нажать на кнопку. Программа закроется.

Так как close — это метод формы, мы могли написать и так:

 

Procedure TFormi.MyFirstButtonclick(Sender: TObj ect);

begin

Forml.Close;

end;

 

Разницы между первым и вторым вариантом нет абсолютно никакой. Так поче­му же в первом случае написано просто close, не указывая имя объекта, метод ко­торого используется? Мы же знаем, что методы нужно вызывать в форме имя_объекта.имя_метода. Все очень просто. Процедура обработчика события отно­сится к объекту Forml (об этом говорит объявление процедуры TForm1.MyFirstButtonclick), и внутри нее можно использовать его свойства и ме­тоды без указания владельца. По умолчанию будет браться Forml. Но если мы за­хотим из этой процедуры закрыть другую форму, например, Form2, то придется указать, что необходим объект именно Form2.

 

 

procedure TFormi.MyFirstButtonclick(Sender: TObj ect);

begin

Form2.Close;

end;

 

 

Если мы просто напишем close, то закроется Forml, а не Form2. Когда вы пише­те имя какой-то процедуры, то сначала поиск этого имени осуществляется среди членов класса, внутри которого написан код.

 

В объектном инспекторе напротив строки onclick также должно появиться имя процедуры обработчика. Вы можете изменить его, просто напечатав новое имя или выбрав уже существующий обработчик из ниспадающего списка в этой же строке. В нашем случае ниспадающий список пуст, потому что мы больше не дела­ли схожих обработчиков событий, и оно у нас пока единственное.

 

Давайте вернемся в редактор кода и посмотрим, что там создал для нас Delphi? Это процедура MyFirstButtonclick. Ей передается ОДИН параметр Sender объектного типа TObject. В начале выполнения процедуры в переменной sender будет находиться указатель на объект, который вызвал этот обработчик. Это очень важно, потому что вы без проблем можете сделать так, что одна процеду­ра-обработчик сможет обрабатывать нажатия сразу нескольких кнопок или во­обще компоненты разного типа. По содержимому этой переменной можно уз­нать, какой именно компонент сгенерировал событие. Чуть позже вы увидите этот трюк на практике.

 

Давайте напишем внутри процедуры (между операторными скобками begin и end) команду close. Это метод формы, который закрывает процедуру. Теперь наша процедура должна выглядеть как:

 

Procedure TForm1.MyFirstButtonclick(Sender: TObject);

begin

Close();

end;

 

Попробуйте запустить программу и нажать на кнопку. Программа закроется.

dle

Помоги проекту! Расскажи друзьям об этом сайте: