-
procedure TForm1.butAddClick(Sender: PObj);
var f, butOK, Ename: PControl;
procedure Click(d, Sender: PObj);
var i: integer;
begin
i := LV.LVItemAdd(Ename.Text); end;
begin
f := NewForm(Applet, 'Добавление/редактирование записи').SetSize(400,300);
f.ExStyle := f.ExStyle or WS_EX_DLGMODALFRAME or WS_EX_WINDOWEDGE;
f.Style := f.Style and not (WS_MINIMIZEBOX or WS_MAXIMIZEBOX);
Ename := NewEditbox(f, []).SetSize(145, 22);
butOK := NewButton(f, 'OK').PlaceRight.SetSize(64, 23);
butOK.OnClick := TOnEvent( MakeMethod(nil, @Click));
f.ShowModal;
Ename.Free;
butOK.OnClick := nil;
butOK.Free;
f.Free;
end;
-
объект LV вы создаёте?
-
> Ename.Free; > butOK.OnClick := nil; > butOK.Free;
Лишнее
-
LV есть. МСКшный
-
забыл сказать, что Add2Autofree или как там его - AV в этом коде. KOLnMCK 2.86 и 2.87+
-
> что не так
то, что локальная процедура метода TForm1 используется как обработчик события другого объекта
-
а КАК правильно? Это и был вопрос. При выносе Click не видится Ename, а глобальным делать не хочу
-
Ну сделай так: procedure TForm1.BtnAddClick(Sender: PObj);
var f, butOK, Ename: PControl;
procedure Click(D: PControl; Sender: PObj);
var i: integer;
begin
i := Form1.LV.LVItemAdd(D.Text);
end;
begin
f := NewForm(Applet, 'Добавление/редактирование записи').SetSize(400,300);
Ename := NewEditbox(f, []).SetSize(145, 22);
butOK := NewButton(f, 'OK').PlaceRight.SetSize(64, 23);
butOK.OnClick := TOnEvent(MakeMethod(Ename, @Click));
f.ShowModal;
f.Free;
end; только это тоже не совсем правильно, хотя работает.
-
там 5 компонентов. butOK, Ename и остальное вынес в глобал. Не нравится, зато работает
|