Форум: "Начинающим";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];
ВнизСоздать и уничтожить Найти похожие ветки
← →
Bad_B (2007-07-04 16:36) [0]Создаю в разброс несколько кнопок так:
for i:=0 to 5 do
begin
New:=TButton.Create(form1);
New.Top:= random(350);
New.Left:=random(350);
New.Name:="but"+inttostr(i);
new.Caption:=New.Name;
New.OnClick:=OnClickButton;
New.Parent:=form1;
end;
В OnClickButton пишу такой код(ну что бы по клику кнопка уничтожалась)Procedure TForm1.OnClickButton( Sender : TObject );
Begin
try
MessageDlg("Нажата кнопка ",mtInformation,[mbOk],0);
finally
tcontrol(sender).Free;
end;
End;
Не могу понять почему иногда работает а иногда нет. Что не так?
← →
Desdechado © (2007-07-04 16:41) [1]Нельзя вызывать уничтожение объекта из его обработчика.
← →
{RASkov} © (2007-07-04 16:55) [2]> [0] Bad_B (04.07.07 16:36)
Удаляй так:const WM_DELOBJ = WM_USER+1;
....
private
DelObj: TObject;
procedure MessDel(var Mes: TMessage); message WM_DELOBJ;
.....
procedure TForm1.MessDel;
begin
if Assigned(DelObj) then FreeAndNil(DelObj);
end;
Procedure TForm1.OnClickButton( Sender : TObject );
Begin
try
MessageDlg("Нажата кнопка ",mtInformation,[mbOk],0);
finally
DelObj:=Sender;
PostMessage(Handle, WM_DELOBJ, 0, 0);
end;
End;
Т.е. посылаем форме наше сообщение в котором и удаляется кнопка, но уже после отработки ее события ОнКлик...
ЗЫ И при создании нет необходимости в переменной New.....
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.047 c