hallo,
hab da mal ne frage zum "button-prog". wie müsste ich das ganze lösen, wenn ich einfach in einer schleife einige objekte löschen möchte?
PostMessage(Handle,PM_FREEBUTTON,TComponent(Sender).Tag,0);
da müsste ich doch jetzt quasi nur "TComponent(Sender)" durch meine komponente (über FindComponent) ersetzen.
nur was muss ich nun hier machen:
FreeAndNil(FButtonArray[Message.wParam]);
ich habe ja kein array mit den objektnamen und möchte auch keins erstellen. was bedeutet denn das "message.wparam" überhaupt. Muss ich bei FreeAndNil nicht einfach nur den Objektnamen wie "Edit1" einsetzen?
danke schonmal
gruß
tkliewe
hier mal kurz der ganze quelltext:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
iCnt : Integer;
begin
SetLength(FButtonArray,MAX_BUTTONS);
For iCnt:=0
to MAX_BUTTONS-1
do
begin
FButtonArray[iCnt]:=TButton.Create(Self);
FButtonArray[iCnt].Parent:=Self;
FButtonArray[iCnt].Caption:='
Button '+IntToStr(iCnt+1);
FButtonArray[iCnt].SetBounds(100,12+iCnt*(FButtonArray[iCnt].Height+4),FButtonArray[iCnt].Width,FButtonArray[iCnt].Height);
FButtonArray[iCnt].Tag:=iCnt;
FButtonArray[iCnt].OnClick:=ButtonClick;
end;
Button1.Enabled:=False;
end;
procedure TForm1.ButtonClick(Sender: TObject);
begin
{PostMessage wird hier verwendet, weil PostMessage ans Ende der Botschafts-
warteschlange gestellt wird und deshalb erst abgearbeitet wird wenn alle
anderen Botschaft, wie z.B. die Click Botschaft an den Button abgearbeitet
wurde}
PostMessage(
Handle,PM_FREEBUTTON,TComponent(Sender).Tag,0);
end;
procedure TForm1.PMFREEBUTTON(
var Message: TMessage);
begin
FreeAndNil(FButtonArray[
Message.wParam]);
end;