Einzelnen Beitrag anzeigen

Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#5

Re: Mehrere erzeute Objekte in Schleife wieder löschen?

  Alt 19. Mär 2004, 14:54
Du mußt "Owner" durch den tatsächlichen gewünschten Owner (Form1?) ersetzen denke ich
Das folgende funzt tadellos:
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure AuftragArtCheck(Sender: TObject; var Key: Char);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
   procedure DeleteTheControls;
   procedure CreateTheControls;
  end;

var Form1: TForm1;
    MyEditList
  , MyChkBoxList
  , MyLabelList : TList;

implementation

{$R *.DFM}


// beschränke mich i.F. auf die Edits - die anderen Listen strickst Du nach dem selben Muster...
procedure TForm1.FormCreate(Sender: TObject);
begin
  MyEditList := TList.Create;
end;

procedure TForm1.CreateTheControls;
begin
  MyEditList.Add(TEdit.Create(self));
  with TEdit(MyEditList.Last) do begin
      Name := 'NewEditAuftragArt_1';
      Parent := Form1.Panel1;
      Font.Size := 10;
      Width := 33;
      Left := 81;
      Top := 80;
      Text := 'A';
      MaxLength := 1;
      OnKeyPress := AuftragArtCheck;
// OnEnter := AuftragAuftragErfassenEditOnEnter;
// OnChange := AuftragAuftragErfassenEditOnEnter;
  end;
end;

procedure TForm1.DeleteTheControls;
var i : Integer;
begin
  for i := MyEditList.Count-1 downto 0 do TEdit(MyEditList[i]).Free;
  MyEditList.Clear;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FreeAndNil(MyEditList);
end;



procedure TForm1.AuftragArtCheck(Sender: TObject; var Key: Char);
begin
//
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  CreateTheControls;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 DeleteTheControls;
end;
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat