![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не удаётся получить объект Sender в обработчике...
Алексей К. © (2008-02-22 18:28:00)Делаю вот что:
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 (2008-02-24 15:16:00) [1]В уроках могут встречаться ошибки еще и по той причине, что писались они несколько лет назад, а с тех пор много воды утекло, и многое изменилось в КОЛ....
> NTPro © (23.02.08 14:18) [7]
> Пофиксил, надеюсь заметят mdw или MTsv DN. http://www.antprog.
> narod.ru/fixlessons.7z [14кб]
Обновлю во вторник.
Алексей К. (2008-02-23 14:25:00) [2]отлично!
но, просмотрите так-же остальные уроки, подобные ошибки встречаются и там...
ANTPro (2008-02-23 14:18:00) [3]Пофиксил, надеюсь заметят mdw или MTsv DN.
http://www.antprog.narod.ru/fixlessons.7z[14кб]
Алексей К. (2008-02-23 09:23:00) [4]
Ошибки в студию
Например:
Урок 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 (2008-02-23 00:06:00) [5]> [4] Алексей К. (22.02.08 20:47)
Ошибки в студию!
> [4] Алексей К. (22.02.08 20:47)
> nil
Это указаатель на экземпляр объекта, если не используется в обработчике события, то можно юзать nil :о)
Алексей К. (2008-02-22 20:47:00) [6]интересный получается учебник по KOL (Урок №xx)
www.kolnmck.ru/lessons/lessonsind.shtml
=(
сплошной сборник ошибок какой-то :((
там MakeMethod(nil, @ButtonDn) и т.п. на каждом шагу + куча других недочетов, сейчас скачал книгу Владимира Кладова, думаю, она от таких багов избавлена ;)
ЗЫ
Уважаемый, Владимир. Пожалуйста исправте эти баги в уроках (или уберите этот учебник совсем), а то у людей, не имевших дело с KOL (напр. таких как я =)) возникнит тонна подобных вопросов...
ЗЫЫ
Всем спасибо за ответы!
D[u]fa (2008-02-22 18:48:00) [7]procedure ButtonDn( Sender: PControl);
а как же
procedure ButtonDn( Dummy: Pointer;Sender: PControl);
mdw (2008-02-22 18:37:00) [8]
> MyBtn.OnClick := TOnEvent(MakeMethod( nil, @ButtonDn));
Передаете nil, получаете соответствено, тоже его.
Алексей К. (2008-02-22 18:37:00) [9]ясно, спасибо!