Конференция "KOL" » Не удаётся получить объект Sender в обработчике...
 
  • Алексей К. (22.02.08 18:28) [0]
    Делаю вот что:


    procedure ButtonDn( Sender: PControl);
    var
     s: string;
    begin
     case Sender.Tag of
       1: s := 'BUTTON 1!';
       2: s := 'BUTTON 2!';
       3: s := 'BUTTON 3!';
     end;
     MsgOk(s);
    end;

    begin
    ...
    MyBtn := NewBitBtn(form, 'Some', [], glyphOver, 0, 0);
    MyBtn.tag := 1;
    MyBtn.OnClick := TOnEvent(MakeMethod(nil, @ButtonDn));



    Далее в отладчике смотрю:
    Sender|nil, т.е. его св-ва я получить не смогу, и следовательно, программа падает на case Sender.Tag of... =( Что я делаю не так?

    Зарание спасибо!
  • mdw © (22.02.08 18:37) [1]

    > MyBtn.OnClick := TOnEvent(MakeMethod(nil, @ButtonDn));

    Передаете nil, получаете соответствено, тоже его.
  • Алексей К. (22.02.08 18:37) [2]
    ясно, спасибо!
  • D[u]fa (22.02.08 18:48) [3]
    procedure ButtonDn( Sender: PControl);

    а как же

    procedure ButtonDn(Dummy: Pointer; Sender: PControl);
  • Алексей К. (22.02.08 20:47) [4]
    интересный получается учебник по KOL (Урок №xx)

    www.kolnmck.ru/lessons/lessonsind.shtml

    =(

    сплошной сборник ошибок какой-то :((
    там MakeMethod(nil, @ButtonDn) и т.п. на каждом шагу + куча других недочетов, сейчас скачал книгу Владимира Кладова, думаю, она от таких багов избавлена ;)

    ЗЫ
    Уважаемый, Владимир. Пожалуйста исправте эти баги в уроках (или уберите этот учебник совсем), а то у людей, не имевших дело с KOL (напр. таких как я =)) возникнит тонна подобных вопросов...

    ЗЫЫ
    Всем спасибо за ответы!
  • ANTPro © (23.02.08 00:06) [5]
    > [4] Алексей К.   (22.02.08 20:47)

    Ошибки в студию!


    > [4] Алексей К.   (22.02.08 20:47)
    > nil

    Это указаатель на экземпляр объекта, если не используется в обработчике события, то можно юзать nil :о)
  • Алексей К. (23.02.08 09:23) [6]

    Ошибки в студию


    Например:
    Урок 3.
    ...
    В KOL также есть группа свойств, которые описывают положение объекта относительно объекта который был создан первым.
    PlaceRight (справа относительно первого), PlaceDown (снизу), PlaceUnder (абсолютно под первым объектом)

    не правильно.
    я немного разобрал систему (PlaceDown, PlaceUnder) см. соседний топик...
    насчёт PlaceRight, ф-ия размещает контрол справа относительно  последнего размещенного, а не справа относительно первого
    ...

    Урок 5.


    ....
      var
        form,
        PanTools,
        REdit,
        butOpen,
        butSave:PControl;

      procedure clikButOpenSave( Dummy : Pointer; Sender : PControl );
      var
       Dialog:POpenSaveDialog;
       title:string;
      begin
       if sender= butOpen then  //определяем что за кнопка

    ... а в качестве параметра мы передали nil :(
         ...

      end;

      begin
        form:=NewForm(Applet,'Ðåäàêòîð');

    покажите мне, где обьявлена глобальная переменная Dialog?

        Dialog:=NewOpenSaveDialog(title,'',[]) ;
       
    ...
    Собственно ошибка при назначении обработчика...

        butOpen.OnClick := TOnEvent(MakeMethod(nil,@clikButOpenSave));
        butSave.OnClick := TOnEvent(MakeMethod(nil,@clikButOpenSave));
        run(form);
      end.




    и т.д. и т.д...
  • ANTPro © (23.02.08 14:18) [7]
    Пофиксил, надеюсь заметят mdw или MTsv DN.
    http://www.antprog.narod.ru/fixlessons.7z [14кб]
  • Алексей К. (23.02.08 14:25) [8]
    отлично!
    но, просмотрите так-же остальные уроки, подобные ошибки встречаются и там...
  • mdw © (24.02.08 15:16) [9]
    В уроках могут встречаться ошибки еще и по той причине, что писались они несколько лет назад, а с тех пор много воды утекло, и многое изменилось в КОЛ....

    > NTPro ©   (23.02.08 14:18) [7]
    > Пофиксил, надеюсь заметят mdw или MTsv DN.http://www.antprog.
    > narod.ru/fixlessons.7z [14кб]

    Обновлю во вторник.
 
Конференция "KOL" » Не удаётся получить объект Sender в обработчике...
Есть новые Нет новых   [134431   +15][b:0][p:0.002]