Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.01.09;
Скачать: [xml.tar.bz2];

Вниз

Вызов процедуры!!!   Найти похожие ветки 

 
Иваныч   (2003-12-24 09:54) [0]

Есть несколько лейблов. При нажатии на лейбл выполняется какое - то действие. А как можно вызвать процедуру OnClick этого лейбла(procedure TForm1.glLabel50Click(Sender: TObject);
), например, при нажатии на кнопку.


 
Reindeer Moss Eater   (2003-12-24 09:56) [1]

Написав имя процедуры и передав ей параметр


 
Иваныч   (2003-12-24 09:59) [2]

С именем понятно, а с параметром можно подробней пожалуйста!!!


 
Skier   (2003-12-24 10:00) [3]

glLabel50Click(glLabel50);


 
Serge   (2003-12-24 10:01) [4]

TForm1.glLabel50Click(glLabel50) ???


 
xli   (2003-12-24 10:03) [5]

проще всего написать Self, если внутри обработчика информация о вызвавшем компоненте не использутеся.


 
Serge   (2003-12-24 10:03) [6]

Ups - не заметил ответа, извиняюсь за повторение.


 
Иваныч   (2003-12-24 10:06) [7]

Спасибо всем - Получилось!!!


 
TUser   (2003-12-24 10:08) [8]

Или ваще назначить им один и тот же обработчик.


 
Sandman25   (2003-12-24 11:41) [9]

Или создать новый метод, и вызывать его, откуда надо.


 
Rem   (2003-12-24 12:48) [10]

Метод OnClick() для подавляющего большинства компонентов определен как:
pro perty OnClick: TNotifyEvent;

В свою очередь:
TNotifyEvent = procedure(Sender: TObject) of object;

Поэтому один общий обработчик может быть назначен для методов OnClick как TLabel, так и TEdit, и TButton и т.д.

(На всякий случай: выбираем на форме нужную нам кнопку; в Object Inspector"е выбираем свойство OnClick; нажимаем на "кнопочку со стрелочкой вниз справа от поля"; выбираем из выпавшего списка glLabel50Click; получаем вызов обработчика события glLabel50Click)

P.S. Метод glLabel50Click() - это не "процедура лейбла", а метод формы. См. "делегирование методов".


 
Artem03   (2003-12-24 15:07) [11]

glLabel50.OnClick(Sender)


 
VMcL   (2003-12-24 15:43) [12]

>>xli © (24.12.03 10:03) [5]
>>проще всего написать Self, если внутри обработчика информация о
>>вызвавшем компоненте не использутеся.

тогда уж проще nil :))


 
Тимохов   (2003-12-24 15:47) [13]

ИМХО все зависит от того, нужен или не нужен sender внутри обработчика. Если не нужен, то nil. Если нужен - то требованиям логики.


 
Sandman25   (2003-12-24 15:54) [14]

В-общем, чтобы не заморачиваться с Sender (вдруг потом решат в том обработчике Sender анализировать), нужно делать отдельный метод без параметров, и вызывать его. Тогда и от интерфейса зависеть не будет - убрали кнопку с формы, что теперь с обработчиком делать?


 
Тимохов   (2003-12-24 16:00) [15]

Sandman25 © (24.12.03 15:54) [14]
Согласен. В обрабочиках ИМХО лучше вообще логику не писать никакую - только вызовы методов.


 
Sandman25   (2003-12-24 16:04) [16]

[15] Тимохов © (24.12.03 16:00)

Но обычно всем лень...
К тому же, если метод вызывается только из одного обработчика, то ухудшается скорость по сравнению со способом без явного метода. Правда, вызов этого метода без параметров не очень долго выполняется, но все-таки, некоторое время занимает.


 
Тимохов   (2003-12-24 16:20) [17]

Sandman25 © (24.12.03 16:04) [16]

> Правда, вызов этого метода без параметров не очень долго
> выполняется, но все-таки, некоторое время занимает.

Думаю, что задумываться о скорости при вызове из событий визуальных компонентов вообще мягко говоря странновато. На визуалку, уверен, тратяться несравнимо большие накладные расходы, чем на вызов.

Думаю, что задумываться об этом стОит в случае написания сложного алгоритма. Я тут писал группировку, аналог select ...
from ... where ... group by ... order ... . Последняя стадия оптимизации была как раз ограничение вызовов методов. Результат был хорош - на той же машине где стоит ms sql сервер, группировка 2 млн строк работала ровно такое же время как на самом сервере.

В случае же визуалки имхо - главное функциональность, наглядность, легкость модернизации. Опять же имхо.


 
Sandman25   (2003-12-24 16:24) [18]

[17] Тимохов © (24.12.03 16:20)

Согласен, конечно. Я просто попытался взглянуть на ситуацию со стороны тех, кто так не делает, чтобы найти все возможные оправдания (скорее, даже "отмазки"). Кстати, еще одно оправдание - код (не исходник, а машинный) занимает больше места...
Но это уже совсем несерьезно, конечно :)



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

Форум: "Основная";
Текущий архив: 2004.01.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.012 c
3-25233
Sergey
2003-12-11 12:20
2004.01.09
Dbase


14-25568
Andryk
2003-12-16 20:15
2004.01.09
Где отчет о выездной международной встрече Мастаков?


14-25598
IronHawk
2003-11-27 16:31
2004.01.09
Какой форматировщик кода проги выбрать для Delphi & C++ Builder ?


3-25185
malamba
2003-12-08 17:37
2004.01.09
программа должна работать на другом ПК. Но не хочет


3-25191
Denisiy
2003-12-12 15:11
2004.01.09
НД для временного хранения записей - присоветуете ?





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