Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-7813
REA
2002-09-09 12:53
2002.10.03
А как отличить Append от Insert?


7-8189
МИФИст
2002-07-24 21:13
2002.10.03
Красоту навожу...


3-7864
Vladimir*
2002-09-13 10:31
2002.10.03
Query глючит?


1-8037
DeepProg
2002-09-21 17:40
2002.10.03
Search


1-7916
Yarovoi Andrei
2002-09-23 18:21
2002.10.03
как можно узнать код любого знака в Memo Редакторе ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский