![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте, подскажите пожалуйста:
Делаю программу которая будет запускаться из консоли, поэтому все Win элементы будут создаваться за счёт кода. Не знаю как задать событие для кнопки, или вообще для любого элемента. Делал так, не работает! procedure Clicked(); begin Win.Close; end; // // Остальной код // ButtonOpt:=TButton.Create(Win); ButtonOpt.Parent:=Win; ButtonOpt.Left:=1; ButtonOpt.Top:=1; ButtonOpt.Width:=52; ButtonOpt.Height:=20; ButtonOpt.Caption:='Выход'; ButtonOpt.Click:=Clicked(); Последний раз редактировалось gadmaker, 11.05.2009 в 17:11. |
#2
|
||||
|
||||
![]() Прежде чем что-то советовать, поясите что вы хотите сделать?
Что вы хотели сказать фразой "...будет запускаться из консоли..." Причем здесь кнопки? Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
||||
|
||||
![]() Вариант 1. Если у тебя описан класс формы, то добавляешь в него описание события:
Код:
TForm1 = class(TForm) ButtonOpt: TButton; procedure Clicked(Sender: TObject); private ... public ... end; var Win:TForm1; procedure TForm1.Clicked(Sender: TObject); begin Win.Close; end; Код:
ButtonOpt.OnClick := Clicked; Вариант 2. Шаманство ![]() Код:
procedure Clicked(Sender: TObject); begin Win.Close; end; Код:
type TNotifyEvent = procedure(Sender: TObject) of object; TMethod = record Code, Data: Pointer; end; var pmethod : TMethod; begin ... pmethod.Code := @Clicked; // указатель на код pmethod.Data := Win; // указатель на объект, методом которого является данная процедура. ButtonOpt.OnClick := TNotifyEvent(m1); ... end Теория: Идентификатор обычной процедуры, к примеру Clicked - это просто указатель на код, который нужно выполнить. А идентификатор метода класса - это запись, состоящая уже из двух указателей - указатель на код и указатель на объект методом которого данная процедура является. Велик и могуч наш Object Pascal ! ICQ: 357-591-887 |
#4
|
|||
|
|||
![]() Интересно узнать возможна ли такая конструкция:
Check := Check_Command(); // Определение индекса нажатой в данный момент кнопки. if Check=Button1 then ... if Check=Button2 then ... if Check=Button3 then ... Только с поправкой на правильный синтаксис. |
#5
|
||||
|
||||
![]() Код:
if (SendMessage(Button1.Handle, BM_GETSTATE, 0, 0) and BST_PUSHED) = BST_PUSHED then Beep; ...сказал, и загрустил от бесспорной своей правоты |