Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Pagecontrol oder Frames (https://www.delphipraxis.net/177706-pagecontrol-oder-frames.html)

brunoM 22. Nov 2013 05:49

Pagecontrol oder Frames
 
Guten Morgen
Ich habe vor einiger Zeit ein CRM programmiert welches ich nun komplett neu erstellen möchte. Im bisherigen Programm habe ich für die unterschiedlichen Ansichten Pagecontrols verwendet (ohne Reiter). Die Entsprechenden Tabsheets werden über eine seitliche Navigation - ähnlich Outlook aktiviert. Dies hat sich ansich bewährt und ich könnte es mir vorstellen wieder in der Art zu lösen.

Es stellt sich nun die Frage, ob das ev. auch mit Frames zu lösen wäre wenn ja ob das eventuell vorteilhafter wäre (Dateigrösse usw.). Ich selber habe keine Erfahrungen in Sachen Frames. Aber vielleicht kann hier jemand näher Auskunft geben. Ich habe mittlerweilen die TMS-Koponenten gekauft und werde die bei der Entwicklung einsetzen.

Danke im Voraus für die Antworten

Lemmy 22. Nov 2013 05:58

AW: Pagecontrol oder Frames
 
Hi,

der Vorteil von Frames liegt ganz klar darin, dass die dahinter liegende Unit deutlich kleiner werden, da sich die Sourcen und Komponenten ja auf verschiedene Dateien aufteilen.

Aber da du bei einer Neuentwicklung die Businesslogik eh in eigene Klassen und Units implementierst fallen da nur noch ein paar Events und Komponenten an (<- das war ein Wink mit dem ganzen Zaun!)

Ich habe mit Frames auch schon ein größeres Projekt umgesetzt, würde aber heute nur noch Forms einsetzen. Diese kann man über die Zuweisung des Parents (und Owners) z.B: auf ein Panel wie Frames behandeln, hat aber auch die Möglichkeit diese über Docking/Undocking aus dem Mainform raus zuziehen.


GRüße

mquadrat 22. Nov 2013 06:24

AW: Pagecontrol oder Frames
 
Wir haben bei uns in der Software beides. Ich finde die Lösung von Lemmy am interessantesten, da zumindest D2007 bei Änderungen im Frame nicht immer mitkommt und man den im Parentform dann erst wieder entfernen und einfügen muss. Zudem zwingt einen die Lösung sauberer zu kapseln (siehe Zaun-Wink).

brunoM 22. Nov 2013 07:11

AW: Pagecontrol oder Frames
 
Hallo und vorerst mal besten Dank für eure Antworten.
Das mit den Forms tönt gut - ich brauch nur noch ein bisschen Starthilfe. Wie ist das gemeint? Ein Panel im Hauptprogramm wird mit einem anderen Formular, welches die entsprechenden Komponenten enthält verlinkt und dieses verhält sich dann wie ein Tabsheet eines Pagecontrols...? Meine Frage wie genau setze ich die Parameter? Oder geht das Ganze in Richtung MDI-Anwendung?

Sorry wegen meiner Fragerei....

Lemmy 22. Nov 2013 07:25

AW: Pagecontrol oder Frames
 
Liste der Anhänge anzeigen (Anzahl: 1)
kein Thema... ist eigentlich ganz einfach. Im Anhang eine kleine Testapp (mit viiiiiiiel Verbesserungspotential ;-))

Im Grunde baust Du ein "normales" Form, erzeugst es und setzt ein paar Eigenschaften:

Delphi-Quellcode:

  frm := TKunden.Create(nil);
  frm.Parent := Panel2;
  frm.BorderStyle := bsNone;
  frm.Align := alClient;
Speichermanangement usw. musst Du halt entsprechend selbst in die Hand nehmen...

mkinzler 22. Nov 2013 07:27

AW: Pagecontrol oder Frames
 
Wenn du das Sheet als Parent des Frames setzt, dann werden die Komponenten des Frames auf dem jeweilen TabSheet angezeigt. Was meinst du mit Parameter?

brunoM 22. Nov 2013 07:54

AW: Pagecontrol oder Frames
 
Super!!

Recht herzlichen Dank - da kann ich mich heranarbeiten und verschiedene Möglichkeiten testen.

Mit den Parametern meinte ich eigentlich das was lemmy erklärt hat - hab mich wahrscheinlich ungenau ausgedrückt. Jedenfalls hab ich jetzt einen Anhaltspunkt.:-D

Gruss

Bruno

RWarnecke 22. Nov 2013 08:24

AW: Pagecontrol oder Frames
 
Zitat:

Zitat von Lemmy (Beitrag 1237011)
Im Grunde baust Du ein "normales" Form, erzeugst es und setzt ein paar Eigenschaften:

Delphi-Quellcode:

  frm := TKunden.Create(nil);
  frm.Parent := Panel2;
  frm.BorderStyle := bsNone;
  frm.Align := alClient;

Wenn ich das aber so mache, dann habe ich das Problem, wenn die Hauptanwendung auf einem zweiten Bildschirm ist, sehe ich auf dem 1. Bildschirm ganz kurz das Fenster beim Erzeugen.

mkinzler 22. Nov 2013 08:28

AW: Pagecontrol oder Frames
 
Zitat:

Wenn ich das aber so mache, dann habe ich das Problem, wenn die Hauptanwendung auf einem zweiten Bildschirm ist, sehe ich auf dem 1. Bildschirm ganz kurz das Fenster beim Erzeugen.
Da kein Show aufgerufen wird, sollte das Fenster nicht angezeigt werden. Ich würde auch von einem TFrame und nicht von einer TForm ableiten

RWarnecke 22. Nov 2013 08:32

AW: Pagecontrol oder Frames
 
Zitat:

Zitat von mkinzler (Beitrag 1237021)
Da kein Show aufgerufen wird, sollte das Fenster nicht angezeigt werden. Ich würde auch von einem TFrame und nicht von einer TForm ableiten

Wenn man aber von einem Frame ableitet, hat man nicht mehr die Docking-Funktion, so wie Lemmy geschrieben hat.

himitsu 22. Nov 2013 08:35

AW: Pagecontrol oder Frames
 
Zitat:

Zitat von RWarnecke (Beitrag 1237020)
Wenn ich das aber so mache, dann habe ich das Problem, wenn die Hauptanwendung auf einem zweiten Bildschirm ist, sehe ich auf dem 1. Bildschirm ganz kurz das Fenster beim Erzeugen.

Wenn du in der Form das Visible auf False setzt, dann nicht.

Delphi-Quellcode:
  frm := TKunden.Create(nil);
  frm.Parent := Panel2;
  //frm.BorderStyle := bsNone; // kann man schon im OI einstellen?
  //frm.Align := alClient;
  frm.Show;

Lemmy 22. Nov 2013 08:51

AW: Pagecontrol oder Frames
 
Hi,

natürlich brauchts da noch ein Show (s. Testanwendung).
@himitsu: klar kann man das im IO einstellen - nur sieht man das im Code schneller was gemacht werden muss. Zudem kann man das (anstelle jedesmal im Desinger einzustellen) auch schön generalisieren.... (Factory)

@mkinzler: wie oben geschrieben kann man die Forms dann per Undocking raus ziehen. Geht natürlich auch mit einem Frame - dann brauchts aber wieder einen Container. Zudem gibts im Form noch ein paar Events, die ganz nützlich sind, die in den Frames fehlen... kann man selbstverständlich nachrüsten.... Und weiterhin verhindert der Einsatz von TForm, dass jemand auf die Idee kommt zur Desingzeit (weils halt geht und so schön "einfach" ist) ein Frame direkt über "Frames" in einen Container zu legen um dann irgend wann den Überblick zu verlieren, weil man anfängt im Frame an sich und im eingebetteten Frame zu ändern (was dann 2 unterschiedliche Klassen sind)

Grüße

stahli 22. Nov 2013 13:12

AW: Pagecontrol oder Frames
 
Ich halte Formulare idR auch für günstiger als Frames.
Einige Infos findet man noch bei der Suche nach "embedded Forms".

himitsu 22. Nov 2013 14:08

AW: Pagecontrol oder Frames
 
Zitat:

Zitat von Lemmy (Beitrag 1237024)
@himitsu: klar kann man das im IO einstellen - nur sieht man das im Code schneller was gemacht werden muss. Zudem kann man das (anstelle jedesmal im Desinger einzustellen) auch schön generalisieren.... (Factory)

Das kann man auch andersrum sehen. :zwinker:

Man kann es auch einmal in der Form einstellen und muß es dann nicht überall, bei jedem einzelnen Aufruf machen.
(es sei denn man erstellt die Form nicht direkt und bietet sie nur über eine entsprechende Funktion an, welche das Erstellen und das Setzen der Parameter übernimmt)



Für Windows ist es fast egal, denn für das sind es beides "Fenster", genauso wie ein Edit.
Aber Seitens der VCL könnte es auch mal Problemchen geben, demm diese Unterscheidet nunmal zwischen Kompoente/Frame und Form.

brunoM 22. Nov 2013 15:20

AW: Pagecontrol oder Frames
 
Sehr interessant - ich habe mich bereits entschieden das Ganze mit Formularen zu lösen. Die Demoanwendung ist trotz der Einfachheit sehr aussagekräftig. Ich hab noch eine andere Frage - ist es möglich das Hauptmenü je nach Aktivierung des Formulars anzuzeigen bzw. auszutauschen. Ähnlich wie das in MDI-Anwendungen funktioniert. Oder kann nur mit einem Hauptmenü gearbeitet werden? Vorgesehen wäre eine Ribbon-Komponente bzw. der ToolbarPager von Tms.

RWarnecke 22. Nov 2013 15:25

AW: Pagecontrol oder Frames
 
Setze doch auf der Hauptform den Toolbar-Pager von TMS. Dann setzt Du die Forms alClient auf die Hauptform. Damit kannst Du dann den Inhalt der einzelnen Forms steuern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:19 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