![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вызвать обработчик, имя которого неизвестно в дизайн-тайме
TrainerOfDolphins © (2006-12-08 16:25:00)День добрый!
Есть ли способ из кода вызвать обработчик, указатель на который содержится в свойстве типа, например, TNotifyEvent?
Заранее спасибо.
Anatoly Podgoretsky (2006-12-08 18:57:00) [1]> TrainerOfDolphins (08.12.2006 17:20:22) [22]
Генотип принципиально не хочем смотреть, тоже твое право.
Anatoly Podgoretsky (2006-12-08 18:56:00) [2]> TrainerOfDolphins (08.12.2006 17:17:21) [21]
Ну не рассказывай. Твое право.
Anatoly Podgoretsky (2006-12-08 18:56:00) [3]> Игорь Шевченко (08.12.2006 17:07:18) [18]
А стихами?
Учило - Чудило
TrainerOfDolphins (2006-12-08 17:39:00) [4]Я просто поражаюсь себе!
:). Таких простых вопросов я ещё не задавал....
Всё оказывается тривиально до безобразия.
Оказывается можно написать Grid.OnClick(Grid), и это будет равносильно вызову обработчика. Н-да.
Спасибо, господа! Прощения за отобранное у Вас время :)
Stanislav (2006-12-08 17:27:00) [5]т.е.
Procedure Handler (sender:TObject);
begin
if {условие}
Handler1 (Sender);
else Handler2 (Sender);
end;
Stanislav (2006-12-08 17:26:00) [6]TrainerOfDolphins © (08.12.06 17:00) [12]
Не проще переписать логику?
Примерно так:
Procedure Handler (sender:TObject);
begin
if {условие}
Handler1 (Sender);
else Grid.OnDblClick:=Handler2 (Sender);
end;
Procedure onGrid1dblclick (sender:TObject);
begin
Handler(Sender);
end;
umbra (2006-12-08 17:23:00) [7]
> А если, скажем, BeforeDelete?
>
даже для OnMouseMove сработает :) Лишь бы обработчик был назаначен.
TrainerOfDolphins (2006-12-08 17:20:00) [8]
> umbra © (08.12.06 17:09) [20]
> см. [14]
OnDblClick - это я для примеру и для простоты. А если, скажем, BeforeDelete?
TrainerOfDolphins (2006-12-08 17:17:00) [9]
> Кстати можно вызов прописать прямо в Then или в Else. Зачем
> определять что откуда вызывается?
Вопрос, конечно, конструктивный.
Тем не менее, если бы так можно было бы, было бы гибче...
Тем более, что меня просто интересует этот вопрос. Зачем мне это - это уже дело третье. Долго расказывать...
umbra (2006-12-08 17:09:00) [10]см. [14]
TrainerOfDolphins (2006-12-08 17:07:00) [11]
> Хоть понял что спросил?
я то понял... Чувствую, что хреново спросил. Меняпонять, что ли не могут...
Игорь Шевченко (2006-12-08 17:07:00) [12]Elen © (08.12.06 17:04) [16]
Ты б матчасть что ли учило. Чудо.
Elen (2006-12-08 17:06:00) [13]
> begin
> if {условие}
> then Grid.OnDblClick:=Handler1
> else Grid.OnDblClick:=Handler2;
> end;
>
> Как из кода вызвать то, что "содержится" в Grid.OnDblClick?
>
Кстати можно вызов прописать прямо в Then или в Else. Зачем определять что откуда вызывается?
TrainerOfDolphins (2006-12-08 17:04:00) [14]
> Метод с подходящими параметрами написан?
> Имя или адрес его перед присваиванием известны?
> Задавай!
куда задавать?
Elen (2006-12-08 17:04:00) [15]
> Grid.DblClick ?
Ага. И зациклится сразу. Автор ты что с дельфинами перепил?
Игорь Шевченко (2006-12-08 17:03:00) [16]
> begin
> if {условие}
> then Grid.OnDblClick:=Handler1
> else Grid.OnDblClick:=Handler2;
> end;
> Как из кода вызвать то, что "содержится" в Grid.OnDblClick?
Grid.DblClick ?
Elen (2006-12-08 17:02:00) [17]
> Как из кода вызвать то, что "содержится" в Grid.OnDblClick?
Хоть понял что спросил? - "Как вызвать из кода код который сейчас выполняется".
TrainerOfDolphins (2006-12-08 17:00:00) [18]Чувствую, надо конкретней. А то сеанс телепатии начинается :).
Значится так.
Предположим есть два обработчика.
procedure Handler1 (Sender:object);
begin
{алгоритм1}
end;
procedure Handler2 (Sender:object);
begin
{алгоритм2}
end;
Есть код, в котором в зависимости от некоторого условия определённому событию ставится в соответствие один из обработчиков.
begin
if {условие}
then Grid.OnDblClick:=Handler1
else Grid.OnDblClick:=Handler2;
end;
Как из кодавызвать то, что "содержится" в Grid.OnDblClick?
Если есть такой способ, привидите, плиз, хотя бы примерный код, хоть принцип.
Anatoly Podgoretsky (2006-12-08 16:58:00) [19]> novill (08.12.2006 16:48:08) [8]
Ничем, наоборот помогает.
Anatoly Podgoretsky (2006-12-08 16:58:00) [20]> TrainerOfDolphins (08.12.2006 16:48:07) [7]
Ну и что, что много, все смотреть не надо, достаточно одного, любого