![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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 - это просто указатель на код, который нужно выполнить. А идентификатор метода класса - это запись, состоящая уже из двух указателей - указатель на код и указатель на объект методом которого данная процедура является. |
|
#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; |