Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1183328674
Германн
2007-07-02 02:24
2007.07.29
Какая всё-таки хорошая вещь - современные бытовые водонагреватели


15-1183112627
*Pavel
2007-06-29 14:23
2007.07.29
Посоветуйте цифровой фотоаппарат, плиз.


15-1183170285
Ино
2007-06-30 06:24
2007.07.29
Что означает такая запись? Зачем она используется?


1-1179832264
pasha_golub
2007-05-22 15:11
2007.07.29
Получить значение заданных полей через RTTI


15-1183403720
исследователь
2007-07-02 23:15
2007.07.29
Несоотвествие браузера





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский