![]() |
Anwendung mit 'Unterformularen' im Outlook-Stil
Hallo,
ich habe dazu im Entwickler-Forum eine Antwort von ![]() Allerdings möchte ich diese Funktion erweitern, heute sitze ich aber ziemlich auf der Leitung, vielleicht kann mir jemand helfen:
Delphi-Quellcode:
Ich habe verschiedene Form-Klassen erzeugt (TMyForm1, TMyForm2, TMyForm13,..) die ich nacheinander in das OutlookPanel einbetten möchte.
procedure TOutlookForm.CreateMyFormInplaced;
var NewForm: TForm; begin // erzeuge das neue Form NewForm := TMySubForm.Create(Self); NewForm.Visible := False; NewForm.BorderStyle := bsNone; NewForm.Align := alClient; NewForm.Parent := OutlookPanel; NewForm.Show; // tausche aktuelles Form mit dem neuen aus und zerstöre das // vorherig aktuelle Form FCurrentForm.Free; FCurrentForm := NewForm; end; Nun möcht ich bei der Prozedur
Delphi-Quellcode:
die jeweilige Klasse meines gewünschten Formulars mitgeben, habe aber im Moment keinen Durchblick :party:
procedure TOutlookForm.CreateMyFormInplaced(<Gewünsche Klasse>);
2. Frage: Das Formular wird mit
Delphi-Quellcode:
erzeugt und mit
NewForm := TMySubForm.Create(Self);
Delphi-Quellcode:
zerstört, muß ich jetzt vor dem Beenden der Applikation
FCurrentForm.Free;
Delphi-Quellcode:
auch noch freigeben oder NIL setzen?
NewForm
Wie gesagt, heute :party: :party: |
Tja,
nachdem (zumindest bei uns im Ösiland) das Sommerhoch voll zugeschlagen hat, und niemand mein Problem lösen wollte, habe ich es selbst gemacht :mrgreen: :mrgreen: :mrgreen:
Delphi-Quellcode:
der Aufruf erfolgt nun so:
PROCEDURE TfMain.CreateMyFormInplaced(CONST aFormClass: TFormClass; CONST Alignment: TAlign);
VAR NewForm : Tform; BEGIN IF Assigned(aFormClass) THEN BEGIN NewForm := aFormClass.Create(Self); NewForm.Visible := False; NewForm.BorderStyle := bsSingle; NewForm.Align := Alignment; NewForm.Parent := Panel1; NewForm.Show; FCurrentForm.Free; FCurrentForm := NewForm; END; END;
Delphi-Quellcode:
Aber meine 2. Frage ist noch ausständig, wer weiß was?
PROCEDURE TfMain.Button2Click(Sender: TObject);
BEGIN CreateMyFormInplaced(TMySubForm1, alClient); END; |
Zitat:
Es ist also nicht unbedingt notwendig, aber eigentlich ein guter bzw. sauberer Stil. |
Moin Armin,
Du kannst Dein CurrentForm auch mit FreeAndNil(...) statt Free freigeben, dann wird intern automatisch := nil hinzugefügt. Da Du als Owner der Formulare self (also TOutlookForm) angegeben hast, müsstest Du sie noch nicht einmal selber zerstören, dies würde automatisch beim Zerstören des Owners geschehen. Um Resourcen zu sparen, ist es natürlich von Vorteil es doch selber zu machen. |
Alles klar,
Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz