Форум: "Основная";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];
ВнизПривязование процидуры Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c