Delphi-PRAXiS

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 [XE5]: Von Form zu Frame (https://www.delphipraxis.net/178852-%5Bxe5%5D-von-form-zu-frame.html)

Kralle 31. Jan 2014 17:52

[XE5]: Von Form zu Frame
 
Moin,

da ich jetzt gelernt habe, das ich mein Ziel mit Frames einfacher erreichen kann,
dachte ich mir:"Mach doch einfach auf den einzelnen Formularen Frames."

Also, im Projekt noch ein Frame erzeugt und geschaut wo sind in den Units die Unterschiede.
Die einzigen Unterschiede die ich fand waren:
Delphi-Quellcode:
type
  TMainForm = class(TForm)
wird zu
Delphi-Quellcode:
type
  TMainFrame = class(TFrame)
und die Deklaration
Delphi-Quellcode:
var
  MainForm: TMainForm;
entfällt.

Tja, dachte ich mir:"Das ist ja einfach."
Also, obiges erledigt und das Projekt neu erzeugt.
Tja, soweit war alles gut. Also, das einige Formular aufgerufen und die Komponente "Frames" in der Tool-Palette ausgewählt. Nur leider erkennt diese Komponente mein "neues" Frame nicht.
Okay, also ziehe ich einfach alle Komponenten in das leer Frame.
Aber immer wenn ich auf das "neue" Frame im Designer klicke kommt die Meldung
Zitat:

"Fehler im Modul allgemein: Deklaration der Klasse "TMainForm" fehlt oder ist fehlerhaft."
Also, packe ich die Deklaration wieder rein bis ich die Komponenten kopiert habe, aber nix da, die Meldung bleibt und ich kann die Komponenten nicht kopieren.

An welchen Stellen merkt sich Delphi noch, das es mal ein Formular war und warum bekommt es nicht mit, das es jetzt ein Frame ist.

Gruß Heiko

Sir Rufo 31. Jan 2014 18:42

AW: [XE5]: Von Form zu Frame
 
So einfach geht das nicht.

Eine Form musst du haben, dann das ist die MainForm (nicht nur vom Namen sondern auch von der Funktion her).
Alle anderen Teile können Frames sein. Die verhalten sich prinzipiel so, wie zusammengebaute Komponenten die man aber visuell zusammenklicken kann (wie eine Form).

Einfach nur die Basisklasse von
Delphi-Quellcode:
TForm
auf
Delphi-Quellcode:
TFrame
zu ändern bringt aber (wie du bemerkt hast) das System durcheinander, denn hinter einer Form/Frame verbirgt sich noch die .dfm Datei. Und da steht auch noch
Delphi-Quellcode:
TForm
drin (und evtl. sogar noch Werte zu Eigenschaften, die das Frame nicht kennt)

Kralle 31. Jan 2014 20:28

AW: [XE5]: Von Form zu Frame
 
N'abend;

Zitat:

Zitat von Sir Rufo (Beitrag 1246173)
So einfach geht das nicht.

Das habe ich auch gemerkt.

Zitat:

Zitat von Sir Rufo (Beitrag 1246173)
Eine Form musst du haben, dann das ist die MainForm (nicht nur vom Namen sondern auch von der Funktion her).

Schon klar. Das in meinem Fall dort MainForm stand liegt einfach daran, das ich in den anderen Forms schon gelöscht hatte.
:)
Zitat:

Zitat von Sir Rufo (Beitrag 1246173)
Alle anderen Teile können Frames sein. Die verhalten sich prinzipiel so, wie zusammengebaute Komponenten die man aber visuell zusammenklicken kann (wie eine Form).

Habe ich auch verstanden.
Zitat:

Zitat von Sir Rufo (Beitrag 1246173)
Einfach nur die Basisklasse von
Delphi-Quellcode:
TForm
auf
Delphi-Quellcode:
TFrame
zu ändern bringt aber (wie du bemerkt hast) das System durcheinander, denn hinter einer Form/Frame verbirgt sich noch die .dfm Datei. Und da steht auch noch
Delphi-Quellcode:
TForm
drin (und evtl. sogar noch Werte zu Eigenschaften, die das Frame nicht kennt)

Okay, in denen hatte ich jetzt nicht gesucht.
Ich habe mich jetzt für den Weg entschieden, ein TFrame zu erstellen und dann die Komponenten dorthin zu verschieben.

Was leider icht geht, ist dem Frame und/oder dem TabSheet eine eigene Hintergrundfarbe zuzuweisen.
Beide habe keine Eigenschaft "Color". Aber, Hauptsache das Programm macht was es soll.
Vielleicht sollte ich mir mal den Style-Designer anschauen.

Gruß Heiko

Sir Rufo 31. Jan 2014 20:44

AW: [XE5]: Von Form zu Frame
 
Hmmm, und was ist das hier? Delphi-Referenz durchsuchenVcl.Forms.TFrame.Color

Der schöne Günther 31. Jan 2014 21:08

AW: [XE5]: Von Form zu Frame
 
Die Frame hat wahrscheinlich noch
Delphi-Quellcode:
ParentColor=True
? Das und/oder
Delphi-Quellcode:
ParentBackground
oder so ähnlich?

Kralle 31. Jan 2014 21:23

AW: [XE5]: Von Form zu Frame
 
Hallo Günther,

Zitat:

Zitat von Der schöne Günther (Beitrag 1246190)
Die Frame hat wahrscheinlich noch
Delphi-Quellcode:
ParentColor=True
? Das und/oder
Delphi-Quellcode:
ParentBackground
oder so ähnlich?

genau das war es und deshalb wurde die Eigenschaft "Color" nicht im Objektinspektor angezeigt. Danke.

Gruß Heiko


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