Главная страница
    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.013 c
14-25575
Juster~~
2003-12-18 09:27
2004.01.09
DirectInput


14-25509
РВА
2003-12-16 13:27
2004.01.09
Подключение к сети


6-25468
lena19
2003-11-08 10:49
2004.01.09
как узнать мак адрес сетевой платы


3-25192
AlexDBases
2003-12-13 17:54
2004.01.09
Comment в XML


1-25334
Андреев
2003-12-21 20:46
2004.01.09
сохранение StringGrid в файле





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