Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вызвать обработчик, имя которого неизвестно в дизайн-тайме


Страницы:   1 2

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]

Ну и что, что много, все смотреть не надо, достаточно одного, любого


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо