Главная страница
    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.009 c
14-8129
Карлсон
2002-09-07 19:27
2002.10.03
Почему все диджеи такие сволочи???


14-8140
Roman002
2002-09-06 12:13
2002.10.03
NT+D6


3-7871
Alibaba
2002-09-13 16:22
2002.10.03
TDBNavigator


4-8211
Pascha
2002-08-09 13:17
2002.10.03
Файлы, директории


1-8031
Владимир_
2002-09-21 02:10
2002.10.03
из дельфи 6 в дельфи 5





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский