-
Делаю вот что:
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... =( Что я делаю не так? Зарание спасибо!
-
> MyBtn.OnClick := TOnEvent(MakeMethod(nil, @ButtonDn));
Передаете nil, получаете соответствено, тоже его.
-
ясно, спасибо!
-
procedure ButtonDn( Sender: PControl);
а как же
procedure ButtonDn(Dummy: Pointer; Sender: PControl);
-
интересный получается учебник по KOL (Урок №xx)
www.kolnmck.ru/lessons/lessonsind.shtml
=(
сплошной сборник ошибок какой-то :(( там MakeMethod(nil, @ButtonDn) и т.п. на каждом шагу + куча других недочетов, сейчас скачал книгу Владимира Кладова, думаю, она от таких багов избавлена ;)
ЗЫ Уважаемый, Владимир. Пожалуйста исправте эти баги в уроках (или уберите этот учебник совсем), а то у людей, не имевших дело с KOL (напр. таких как я =)) возникнит тонна подобных вопросов...
ЗЫЫ Всем спасибо за ответы!
-
> [4] Алексей К. (22.02.08 20:47)
Ошибки в студию!
> [4] Алексей К. (22.02.08 20:47) > nil
Это указаатель на экземпляр объекта, если не используется в обработчике события, то можно юзать nil :о)
-
Ошибки в студию
Например: Урок 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.
и т.д. и т.д...
-
-
отлично! но, просмотрите так-же остальные уроки, подобные ошибки встречаются и там...
-
В уроках могут встречаться ошибки еще и по той причине, что писались они несколько лет назад, а с тех пор много воды утекло, и многое изменилось в КОЛ.... > NTPro © (23.02.08 14:18) [7] > Пофиксил, надеюсь заметят mdw или MTsv DN.http://www.antprog. > narod.ru/fixlessons.7z [14кб]
Обновлю во вторник.
|