AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Anwendung mit 'Unterformularen' im Outlook-Stil
Thema durchsuchen
Ansicht
Themen-Optionen

Anwendung mit 'Unterformularen' im Outlook-Stil

Ein Thema von APP · begonnen am 29. Apr 2003 · letzter Beitrag vom 30. Apr 2003
Antwort Antwort
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#1

Anwendung mit 'Unterformularen' im Outlook-Stil

  Alt 29. Apr 2003, 11:22
Hallo,
ich habe dazu im Entwickler-Forum eine Antwort von Hagen Reddmann gefunden die mir sehr gut gefällt.

Allerdings möchte ich diese Funktion erweitern, heute sitze ich aber ziemlich auf der Leitung, vielleicht kann mir jemand helfen:

Delphi-Quellcode:
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;
Ich habe verschiedene Form-Klassen erzeugt (TMyForm1, TMyForm2, TMyForm13,..) die ich nacheinander in das OutlookPanel einbetten möchte.

Nun möcht ich bei der Prozedur
procedure TOutlookForm.CreateMyFormInplaced(<Gewünsche Klasse>); die jeweilige Klasse meines gewünschten Formulars mitgeben, habe aber im Moment keinen Durchblick

2. Frage:
Das Formular wird mit NewForm := TMySubForm.Create(Self); erzeugt und mit   FCurrentForm.Free; zerstört, muß ich jetzt vor dem Beenden der Applikation NewForm auch noch freigeben oder NIL setzen?


Wie gesagt, heute
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#2
  Alt 30. Apr 2003, 12:44
Tja,
nachdem (zumindest bei uns im Ösiland) das Sommerhoch voll zugeschlagen hat,
und niemand mein Problem lösen wollte, habe ich es selbst gemacht

Delphi-Quellcode:
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;
der Aufruf erfolgt nun so:

Delphi-Quellcode:
PROCEDURE TfMain.Button2Click(Sender: TObject);
BEGIN
  CreateMyFormInplaced(TMySubForm1, alClient);
END;
Aber meine 2. Frage ist noch ausständig, wer weiß was?
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#3
  Alt 30. Apr 2003, 12:58
Zitat von APP:
Aber meine 2. Frage ist noch ausständig, wer weiß was?
Freigeben kannst Du es nicht mehr. Das Objekt wurde ja anscheinend schon freigegeben, ein weiteres .Free würde also zu einer AccVio führen. Die Variable auf NIL zu setzen gehört sich zwar eigentlich, führt aber meist zu einem Compilierungshinweis von wegen zugewiesener Wert wird nie verwendet.

Es ist also nicht unbedingt notwendig, aber eigentlich ein guter bzw. sauberer Stil.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 30. Apr 2003, 17:05
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#5
  Alt 30. Apr 2003, 18:35
Alles klar,
Danke!
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz