Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.27;
Скачать: CL | DM;

Вниз

ошибка при удалении из Tstringlist   Найти похожие ветки 

 
redlord   (2005-03-12 15:23) [0]

всем привет народ подскажите в чём ошибка
при попытке удаления объекта происходит ошиька ( абстракт еррор)

procedure TForm1.Button1Click(Sender: TObject);
var cl:tbutton; n:integer;
begin
if   activclient= nil then
activclient:=Tstringlist.Create; //activclient:Tstrings;
for n:=0 to 10 do
begin
cl:= tbutton.Create(nil);
cl.Top:=n*30;cl.Left:=10;
cl.Caption:=inttostr(n);
cl.OnClick:=destrou;
cl.Parent:=form1;
activclient.AddObject(inttostr(n),cl);
end;
end;

procedure tform1.destrou(Sender: TObject);
var n:integer;
begin
n:=activclient.IndexOfObject(sender);
tbutton(activclient.Objects[n]).Free;
end;


 
kukuikar ©   (2005-03-12 15:29) [1]


> procedure tform1.destrou(Sender: TObject);
> var n:integer;
> begin
> n:=activclient.IndexOfObject(sender);
> tbutton(activclient.Objects[n]).Hide;
> end;


 
KSergey ©   (2005-03-12 15:41) [2]

> [1] kukuikar ©   (12.03.05 15:29)
> > tbutton(activclient.Objects[n]).Hide;

Почему??

redlord   (12.03.05 15:23)
> n:=activclient.IndexOfObject(sender);  что в n получаем? проверить бы надо


 
kukuikar ©   (2005-03-12 15:46) [3]


> > [1] kukuikar ©   (12.03.05 15:29)
> > > tbutton(activclient.Objects[n]).Hide;
>
> Почему??


не знаю......
:)


 
Юрий Зотов ©   (2005-03-12 16:07) [4]

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   procedure BtnClick(Sender: TObject);
   procedure WMUserPlus100(var Message: TMessage); message WM_USER + 100;
 end;

procedure TForm1.Button1Click(Sender: TObject);
var
 i: integer;
begin
 for i := 0 to 10 do
   with TButton.Create(Self) do
   try
     Parent := Self;
     SetBounds(10, i * 30, Width, Height);
     Caption := IntToStr(i);
     OnClick := BtnClick
   except
     Free;
     raise
   end;
end;

procedure Tform1.BtnClick(Sender: TObject);
begin
 PostMessage(Handle, WM_USER + 100, Integer(Sender), 0)
end;

procedure TForm1.WMUserPlus100(var Message: TMessage);
begin
 TObject(Message.WParam).Free;
 inherited
end;


 
redlord   (2005-03-13 00:31) [5]

To Юрий Зотов and ALL
а как быть в случае если
type
Tform1 = class
...
...
end;

тобиш не является окном и мессагу кидать некому


 
Palladin ©   (2005-03-13 01:10) [6]

у любого класса есть конструктор... и, кстати, деструктор тоже...


 
redlord   (2005-03-13 02:32) [7]

TO Palladin
а поподробней .......???

то что они есть я знаю тока воспользоватся ими
в данном случае у меня не  невыходит :((


 
Юрий Зотов ©   (2005-03-13 06:57) [8]

> redlord   (13.03.05 00:31) [5]

Сообщение можно послать Application"у (см. OnMessage), или главной форме (Application.MainForm). Главное не в том, кому его посылать, а в том, что это надо делать через PostMessage.


 
redlord   (2005-03-14 18:45) [9]

ето пошется отдельный класс поэтому крайне нежелатьльно задействовать ворму и ей подобные вещи
я это зделал по другому
обявил сой клас как наследник от нити обвешал его тем чем надо.
нить создается но не запускается в ето время идет  работа с моим классом ,а когда нодо клас похоронить я запускаю нить на исполнение где стоит код sleep(10);
после чего нить помирает и тащит за собой в могилу все что на ней висит



Страницы: 1 вся ветка

Текущий архив: 2005.03.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
1-1110450621
Прогин
2005-03-10 13:30
2005.03.27
Результат выполнения программы


14-1109916406
Skier
2005-03-04 09:06
2005.03.27
Знатокам Visual C++ ...


3-1109752936
sashuly
2005-03-02 11:42
2005.03.27
отражение информации из 2-х столбцов в DBComboBox


1-1110548376
Шурик Ш
2005-03-11 16:39
2005.03.27
Не могу открыть на чтение файл, который занят другим процесом...


14-1110455760
mmms
2005-03-10 14:56
2005.03.27
Холодильник молотит без остановки, есть ли спецы?