Форум: "Основная";
Текущий архив: 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() для подавляющего большинства компонентов определен как:
property 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