Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.03;
Скачать: CL | DM;

Вниз

Привязование процидуры   Найти похожие ветки 

 
Fog ©   (2002-09-20 18:59) [0]

Я создаю TMenuItem во время исполнения, и мне требуется привязать к ней процидуру (чтобы при клике выполнялась) как это сделать?


 
troits ©   (2002-09-20 19:04) [1]

procedure TYourForm.YourProcOnClick(Sender: TObject);
begin
end;

....
MyTMenuItem.OnClick := YourForm.YourProcOnClick;


 
Fog ©   (2002-09-20 19:17) [2]

А если мне надо привязать
procedure Drugaye(blabla: string);
begin

end;...


 
Внук ©   (2002-09-20 19:40) [3]

События в смысле Delphi (events) - это просто переменные того или иного процедурного типа of object. То есть, нельзя событию назначить произвольную процедуру. Обычно события имеют тип TNotifyEvent, хотя, вообще говоря, могут быть любыми.


 
Fog ©   (2002-09-20 19:53) [4]


> Обычно события имеют тип TNotifyEvent

Это понятно, а как здалать то?...


 
Shadow ©   (2002-09-20 20:43) [5]

procedure Drugaye(blabla: string);
begin

end;...

procedure TYourForm.YourProcOnClick(Sender: TObject);
begin
Drugaye(blabla: string);
end;

....
MyTMenuItem.OnClick := YourForm.YourProcOnClick;

Может так?


 
Fog ©   (2002-09-22 16:14) [6]

А если у нового объекта должен быть другой параметр поцидуры?...


 
Старый паскалист   (2002-09-22 16:23) [7]

Если уж ты собрался стать программистом,
научись, пожалуйста, правильно писать слово ПРОЦ ЕДУРА
(а то "поцидуры" твои несколько раздражают).


 
Fog ©   (2002-09-22 16:45) [8]


> Старый паскалист

Проц Е дура :)


 
Fog ©   (2002-09-22 16:59) [9]

Например у меня создаются 2 TMenuItem"a и у одного должно быть

Drugaya(blablabla);

а у другого

Drugaya(albalbalb);...


 
Song ©   (2002-09-22 17:22) [10]

Ну дык и в чём проблема-то? Тебе же сказали: TMenuItem.onClick


 
Старый паскалист   (2002-09-22 17:30) [11]

2Fog © (22.09.02 16:59)

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

procedure TYourForm.MenuItem1Click(Sender: TObject);
begin
Drugaye(blablabla);
end;

procedure TYourForm.MenuItem2Click(Sender: TObject);
begin
Drugaye(albalbalb);
end;

Все начинающие так обычно и делают.

А во вторых, ты неправильно понимаешь проблему.
Проблема не в том, чтобы "привязать" процедуру, а в том, чтобы
ассоциировать с пунктом меню некоторые данные, в данном случае
albalbalb и blablabla.

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

Более правильный путь - написать наследник TMenuItem"a и
добавить в него дополнительные данные.

Существует также WinApi"шные способы асоциации некоторых данных с окном (GetWindowLong/GWL_USERDATA).

Существуют и другие пути - ассоциативные массивы и т.д.



Страницы: 1 вся ветка

Текущий архив: 2002.10.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
1-8049
Карлсон
2002-09-22 15:05
2002.10.03
преобразование времени.


1-8010
Kran
2002-09-20 20:51
2002.10.03
Excel


7-8196
vasya_dvc
2002-06-07 00:48
2002.10.03
Как


1-7985
s.ts
2002-09-20 21:21
2002.10.03
Узнать запущена ли IDE


3-7775
ghost_by
2002-09-13 08:20
2002.10.03
Обновление Blob полей - глючит....