Einzelnen Beitrag anzeigen

Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#1

Dynamisch erzeugt - Aber Speicherverbrauch bleibt nach Ende

  Alt 9. Okt 2003, 14:38
Hallo zusammen

Sorry für den Titel...Ist vielleicht etwas undeutlich formuliert.
Ich hab da ein Problem. Ich hab zwar schon die DP durchsucht und die OH bemüht, aber leider nix passendes gefunden. Also Da mir der Standard MessageDlg nicht gefällt, wollte ich mir selber einen machen. Ich wollte das so machen, dass ich dann in ein anderes Programm einfach die Unit einbinde und dann über eine Funktion einen Rückgabewert erhalte. Soweit so gut. Ich erstelle also ein dynamisches Form und zwei dynamische Buttons, denen ich jeweils eine andere Prozedure zuweise (Hab dazu was im Forum gefunden). Nun ja, das funzt auch alles ganz prächtig, nur wird irgendwie anscheinend der Speicher nicht ganz freigegeben. Soll heißen, ich rufe die Funktion aus einem anderen Formular auf => es erscheint der Dialog mit dem dyn. erzeugten Form => ich klicke auf "Ja" oder "Nein" und dann schließt sich das Fenster auch und gibt den Korrekten Wert zurück. Aber im Taskmanager bleibt auch nach dem Schließen des Dialogs der Speicherverbrauch der Anwendung gleich Also ich meine, zuerst hat die Anwendung zu, Beispiel 2.800 K und ab dem Aufruf des Dialogs dann 2.844. Beim nächsten Aufruf des Dialogs wird es entsprechend mehr. Kann mir da wer weiterhelfen? Mein Code is der folgende. Hab ich vielleicht irgendwas falsch freigegeben?

Danke schon mal. Man liest sich, Stanlay

Delphi-Quellcode:
procedure SetNo(Sender: TObject);
procedure SetYes(Sender: TObject);
function JesOrNo: Boolean;
procedure QuestionForm;


implementation

var Form : TForm;
    BtnYes : TButton;
    BtnNo : TButton;
    Bool : Boolean;

procedure QuestionForm;
begin
  Form := TForm.Create(nil);
  With Form do
    begin
    Caption := 'Möchten Sie den Button sichtbar lassen?';
    Width := 500;
    Height := 250;
    Left := Screen.WorkAreaWidth div 2 - Width div 2;
    Top := Screen.WorkAreaHeight div 2 - Height div 2;
    end;

  BtnYes := TButton.Create(Form);
  With BtnYes do
    begin
    Parent := Form;
    Width := 50;
    Height := 25;
    Left := Form.Width div 2 - Width div 2 - Width;
    Top := Form.Height div 2 - Height div 2 - Height;
    Caption := 'Ja';
    @OnClick := @SetYes;
    end;

  BtnNo := TButton.Create(Form);
  With BtnNo do
    begin
    Parent := Form;
    Width := 50;
    Height := 25;
    Left := Form.Width div 2 - Width div 2 + Width;
    Top := Form.Height div 2 - Height div 2 - Height;
    Caption := 'Nein';
    @OnClick := @SetNo;
    end;


  Form.ShowModal;
end;


procedure SetNo(Sender: TObject);
begin
  Bool := false;
  Form.Close;
end;

procedure SetYes(Sender: TObject);
begin
  Bool := true;
  Form.Close;
end;

function JesOrNo: Boolean;
begin
  QuestionForm;
  JesOrNo := Bool;
  BtnYes.Destroy;
  BtnNo.Destroy;
  Form.Destroy;
end;
  Mit Zitat antworten Zitat