Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Проблемы при вызове обработчика событий


Автор: jcyber 30.4.2009, 01:27
Уважаемые, доброго времени суток.

У меня возникла довольно интересная ситуация.
Я, в своем приложении, в ран-тайм, определяю список файлов( по маске *.html ) из определенный директории(и ее поддиректорий), на основании этого дерева строю меню. В процессе всего это на каждый(нужный мне) пункт меню вешаю OnClick, и наблюдаю странную картину... первые два обратчика не вызываются, когда я кликаю на пункте меню, хотя они разегистрированы за этими меню.

Если у кого была подобная ситуация или есть идей по устранению данной проблемы, буду признателен.

Автор: Keeper89 30.4.2009, 01:48
Код в студию.

Автор: jcyber 30.4.2009, 01:52
Процедура обхода дерева и установка обработчиков для его листьев:
Код

procedure TGeneralForm.createMenuListener( m : TMenuItem );
  var
    i : Integer;
begin
  if ( m.Count > 0 ) then
    begin
      for i := 0 to m.Count-1 do
        createMenuListener( m.Items[i] );
    end
  else
    begin
      m.OnClick := openManual;
    end;
end;

Автор: Keeper89 30.4.2009, 02:43
Посмотрите прикрепление, у меня с вашим кодом все работает (может ошибка в другом куске кода).

Автор: jcyber 30.4.2009, 09:28
Цитата(Keeper89 @ 30.4.2009,  02:43)
Посмотрите прикрепление...

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

Автор: Christoph 30.4.2009, 13:31
зайди через другой браузер

Автор: Keeper89 30.4.2009, 14:14
jcyber, специально для вас smile : http://webfile.ru/3456839

Автор: jcyber 30.4.2009, 14:20
Цитата(Keeper89 @ 30.4.2009,  14:14)
jcyber, специально для вас smile : http://webfile.ru/3456839

Благодарю ;)

Автор: jcyber 30.4.2009, 15:25
Цитата(Keeper89 @ 30.4.2009,  02:43)
у меня с вашим кодом все работает (может ошибка в другом куске кода).

Очень интересно... в другом "куске" кода нет смысла искать... потому что только указаный мною метод "вешает" обработчики на пункты...
Проверяю адреса процедур для всех пунктов, адреса совпадают - одинаковы у тех пунктов меню, которые реагируют и тех, которые молчат...
Кто что посоветует?
P.S.
одинаковый эффект при использовании опримизации и без нее...

Автор: Keeper89 30.4.2009, 15:39
Цитата(jcyber @  30.4.2009,  15:25 Найти цитируемый пост)
Кто что посоветует?
P.S.
одинаковый эффект при использовании опримизации и без нее... 

Просто мистика.  smile. Надо смотреть. Мой проект идет правильно?
Цитата(jcyber @  30.4.2009,  15:25 Найти цитируемый пост)
в другом "куске" кода нет смысла искать... потому что только указаный мною метод "вешает" обработчики на пункты

Вдруг есть какой-то баг в других местах кода, и он перекрывает эффект. Ведь может быть.

Автор: jcyber 3.5.2009, 22:17
да, я с Вами согласен, Keeper89. Надо будет смотреть, хотя чудеса не исключены...

А как на счет того, что у меня происходит формирование пунктов меню в DLL-ке, а обработчики вешаются уже в хост-проге... Могут ли быть здесь подводные камни? И в связи с этим еще один вопросик: могу ли я вешать обработчики еще в dll-ке? у меня не получилось, посколько для OnClick-а нужен метод класса, а в dll-ке не получилось класс сделать...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)