Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Wie gehe ich am besten mit Frames um? (https://www.delphipraxis.net/104452-wie-gehe-ich-am-besten-mit-frames-um.html)

guidok 4. Dez 2007 13:54


Wie gehe ich am besten mit Frames um?
 
Hallo erst mal!

Ich schreibe eine Anwendung und möchte für verschiedene Ansichten, z.B. Projektansicht, Administration, usw. Frames verwenden. Diese sollen dann über einen Toolbar angewählt und im Hauptformular angezeigt werden. Der Vorteil ist dabei, dass ich die Ansichten entspannt zur Entwurfszeit designen kann und in das Gesamtkonzept einbette.

Das funktioniert auch prinzipiell, das Hauptformular als Parent für den Frame zuweisen und damit erscheint er auch schon. Ich habe jetzt allerdings mehrere verschiedene und bin mir nicht ganz sicher, wie ich das handeln soll.

Ich könnte beim Erzeugen des Formulares alle Frames gleich mit erzeugen und immer sichtbar und unsichtbar setzen, je nach Bedarf. Jetzt komm ich allerdings noch aus einer Zeit, als man noch sparsam mit dem Speicher umging und einige Frames werden sicher sehr selten benötigt. Soll ich also die Frames erst erzeugen, wenn ich sie benötige und anschließend wieder entfernen?

Dazu müsste ich allerdings wissen, welchen Frame ich gerade anzeige. Wie kriege ich das raus? Wie macht ihr das mit den Frames?

Fragend :?:
Guido

Deep-Sea 4. Dez 2007 13:56

Re: Wie gehe ich am besten mit Frames um?
 
Zitat:

Zitat von guidok
Hallo erst mal!

Ich schreibe eine Anwendung und möchte für verschiedene Ansichten, z.B. Projektansicht, Administration, usw. Frames verwenden. Diese sollen dann über einen Toolbar angewählt und im Hauptformular angezeigt werden. Der Vorteil ist dabei, dass ich die Ansichten entspannt zur Entwurfszeit designen kann und in das Gesamtkonzept einbette.

Das funktioniert auch prinzipiell, das Hauptformular als Parent für den Frame zuweisen und damit erscheint er auch schon. Ich habe jetzt allerdings mehrere verschiedene und bin mir nicht ganz sicher, wie ich das handeln soll.

Ich könnte beim Erzeugen des Formulares alle Frames gleich mit erzeugen und immer sichtbar und unsichtbar setzen, je nach Bedarf. Jetzt komm ich allerdings noch aus einer Zeit, als man noch sparsam mit dem Speicher umging und einige Frames werden sicher sehr selten benötigt. Soll ich also die Frames erst erzeugen, wenn ich sie benötige und anschließend wieder entfernen?

Dazu müsste ich allerdings wissen, welchen Frame ich gerade anzeige. Wie kriege ich das raus? Wie macht ihr das mit den Frames?

Fragend :?:
Guido

Ist eine TPageControl nichts für dich?! ^^

Das Erzeugen und Freigeben ist ggf. langsam und schlimmer als das im Speicher behalten ^^ *find*

Nuclear-Ping 4. Dez 2007 13:57

Re: Wie gehe ich am besten mit Frames um?
 
Gegenfrage: Warum nicht MDI?

guidok 4. Dez 2007 14:06

Re: Wie gehe ich am besten mit Frames um?
 
Zitat:

Zitat von Nuclear-Ping
Gegenfrage: Warum nicht MDI?

Weil ich damit erst recht noch nichts gemacht habe und die Frames eigentlich schon ganz gut finde. MDI bietet mir doch den Komfort einzelne Formulare innerhalb meines Hauptformulars zu verwenden, also so wie Dokumente unter Word, oder irre ich mich hier? Persönlich finde ich das für meinen Zweck eher unhandlich, ich möchte lieber zwischen Bildern umschalten können und glaube das ich da mit Frames besser bedient bin als mit MDI (womit ich das sicher auch realisieren könnte).

Ja PageControl würde auch gehen, aber der (für mich) riesige Vorteil von Frames ist, dass dieser in einer eigenen Unit gespeichert wird und mein Quellcode nicht komplett in einer Datei steckt. Das wird mir schnell zu unübersichtlich. So kann ich meine Anwendung auf verschiedene Dateien verteilen (nach Funktionalitäten) und das finde ich echt gut und wirklich entspannend, weil ich mich immer nur um einen Bereich kümmern und den Rest nicht beachten und sehen muss.

Nuclear-Ping 4. Dez 2007 14:10

Re: Wie gehe ich am besten mit Frames um?
 
Hm ok, stimmt. Für deinen Fall sollten Frames besser sein.

Mit einer TPageControl kannst du auf jeder Page einen Frame einbetten.

TNotebook gänge auch noch ... das ist aber von Win 3.1 und daher etwas "verpönt". Verwende es persönlich aber auch ganz gern mal, vorallem da wo man - wie in deinem Fall - verschiedene Seiten darstellen will, aber keine Reiter möchte. Aber keine Ahnung, ob man die beim TPageControl ausblenden könnte. Hab da nichts gefunden oder vlt. übersehen. :mrgreen: *duck*

Tyrael Y. 4. Dez 2007 14:11

Re: Wie gehe ich am besten mit Frames um?
 
Zitat:

Zitat von guidok
Dazu müsste ich allerdings wissen, welchen Frame ich gerade anzeige. Wie kriege ich das raus? Wie macht ihr das mit den Frames?

Wieso musst du wissen welchen Frame du gerade anzeigst?
Du könntest einen Aufzählungstypen bzw einen Set erstellen, falls es mehrere Frames gleichzeitig geben kann. Machst eine Feldvariable vom Aufzählungstypen bzw. vom Set und weisst dieser Variablen die sichtbaren Fenster bzw. ihren Gegenpart als Aufzählungstyp zu.

Ich hab nur nicht verstanden wieso du wissen musst welchen du gerade anzeigst.


Also ich persönlich erstelle immer eine Instanz des jeweiligen Frames und weise ihm den Anzeigebereich als Parent zu, wenn ich den Frame nicht mehr brauche gebe ich ihn frei.
Aber auch das mache ich nicht in jedem Fall, es gibt ab und an Frames, die ziemlich viel Info beinhalten, die ich bei einer Neu-Erzeugung aus Dateien, Datenbanken usw. holen müsste, solche Frames geb ich nicht frei, sondern setze nur den Parent auf nil und lasse ihn im Speicher.
Wenn ich ihn wieder brauche weise ich ihm wieder einen Parent zu.

Deep-Sea 4. Dez 2007 14:13

Re: Wie gehe ich am besten mit Frames um?
 
Zitat:

Zitat von Nuclear-Ping
Gegenfrage: Warum nicht MDI?

Weil MDI "out" ist. Es ist weitaus unübersichtlicher als zB. Tabs *find* :-D

Zitat:

Zitat von guidok
Ja PageControl würde auch gehen, aber der (für mich) riesige Vorteil von Frames ist, dass dieser in einer eigenen Unit gespeichert wird und mein Quellcode nicht komplett in einer Datei steckt. Das wird mir schnell zu unübersichtlich. So kann ich meine Anwendung auf verschiedene Dateien verteilen (nach Funktionalitäten) und das finde ich echt gut und wirklich entspannend, weil ich mich immer nur um einen Bereich kümmern und den Rest nicht beachten und sehen muss.

Jaja, das war mir klar. Ich meinte die sollst das PageControl als Grundlage nehmen und auf jede Seite ein Frame machen.
Eben als Lösung für
Zitat:

Zitat von guidok
immer sichtbar und unsichtbar

und
Zitat:

Zitat von guidok
Dazu müsste ich allerdings wissen, welchen Frame ich gerade anzeige

Mache ich auch so. Geht eig. ganz gut (außer das Frames selber etwas tückisch sind) ...

SirThornberry 4. Dez 2007 14:21

Re: Wie gehe ich am besten mit Frames um?
 
Zitat:

Zitat von Nuclear-Ping
Hm ok, stimmt. Für deinen Fall sollten Frames besser sein.

Mit einer TPageControl kannst du auf jeder Page einen Frame einbetten.

TNotebook gänge auch noch ... das ist aber von Win 3.1 und daher etwas "verpönt". Verwende es persönlich aber auch ganz gern mal, vorallem da wo man - wie in deinem Fall - verschiedene Seiten darstellen will, aber keine Reiter möchte. Aber keine Ahnung, ob man die beim TPageControl ausblenden könnte. Hab da nichts gefunden oder vlt. übersehen. :mrgreen: *duck*

verpönt ist das falsche wort - depricated lautet das richtige. Du weißt also nicht wie lange es noch von Windows oder zukünftigen delphi-ids unterstützt wird.
Beim PageControl kann man die Reiter auch ausblenden, sogar für jede Page einzeln. Dazu einfach bei jedem TabSheet das Property TabVisible setzen. Zudem kann dann beim PageControl selbst der Style noch gesetzt werden so das der 3D-Effekt verschwindet.

guidok 4. Dez 2007 14:30

Re: Wie gehe ich am besten mit Frames um?
 
Ich denke ich werde es so ähnlich machen, wie Tyrael es vorschlägt. Häufig benötigte Ansichten halte ich im Speicher und die anderen erzeuge ich nach Bedarf.

So ganz habe ich das:
Zitat:

Du könntest einen Aufzählungstypen bzw einen Set erstellen, falls es mehrere Frames gleichzeitig geben kann. Machst eine Feldvariable vom Aufzählungstypen bzw. vom Set und weisst dieser Variablen die sichtbaren Fenster bzw. ihren Gegenpart als Aufzählungstyp zu.
zwar nicht verstanden, aber ich werde es schon irgendwie hinkriegen.

Nuclear-Ping 4. Dez 2007 14:40

Re: Wie gehe ich am besten mit Frames um?
 
Zitat:

Zitat von SirThornberry
Zitat:

Zitat von Nuclear-Ping
Hm ok, stimmt. Für deinen Fall sollten Frames besser sein.

Mit einer TPageControl kannst du auf jeder Page einen Frame einbetten.

TNotebook gänge auch noch ... das ist aber von Win 3.1 und daher etwas "verpönt". Verwende es persönlich aber auch ganz gern mal, vorallem da wo man - wie in deinem Fall - verschiedene Seiten darstellen will, aber keine Reiter möchte. Aber keine Ahnung, ob man die beim TPageControl ausblenden könnte. Hab da nichts gefunden oder vlt. übersehen. :mrgreen: *duck*

verpönt ist das falsche wort - depricated lautet das richtige. Du weißt also nicht wie lange es noch von Windows oder zukünftigen delphi-ids unterstützt wird.
Beim PageControl kann man die Reiter auch ausblenden, sogar für jede Page einzeln. Dazu einfach bei jedem TabSheet das Property TabVisible setzen. Zudem kann dann beim PageControl selbst der Style noch gesetzt werden so das der 3D-Effekt verschwindet.

Ah ok, danke. Gut zu wissen. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:24 Uhr.
Seite 1 von 2  1 2      

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