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 Frames alternative zu Komponente? (https://www.delphipraxis.net/113325-frames-alternative-zu-komponente.html)

taaktaak 6. Mai 2008 07:46


Frames alternative zu Komponente?
 
Moin, Moin.

Sicherlich wird man die Fragestellung weder mit einem klaren JA noch NEIN beantworten können; sie beschreibt aber ganz gut meine augenblickliche Überlegung, zu der ich eine Entscheidungshilfe erhoffe:

Nachdem ich lange Zeit TFrames ignorierte, habe ich jetzt doch ein wenig damit herumexperimentiert und die Delphi beiliegende Richedit-Demo in einen Frame gepackt. Im Verlauf des Bastelns habe ich ein benutzerdefiniertes Event benötigt und dieses auch in die Frameklasse einbauen können. So weit, so gut.

Nun stoße ich allerdings auf zwei offenbar grundsätzliche Eigenarten der Frames, die die Frage aufkommen lassen, ob anstelle eines Frames nicht eine Komponente die bessere Wahl wäre:
  • Der Zugriff auf das im Frame definierte Event ist im Source (natürlich) problemlos möglich. Ich hatte aber erwartet, dass nach Placierung des Frames im Formular das Event im Objektinspektor in der Ereignisliste des Frames erscheint. Dort kann ich dieses aber nicht entdecken. Das ist zwar nur eine Schönheitsfehler, aber immerhin! Frage: Ist das prinzipbedingt, oder muss das Event auf irgendeine Art und Weise "registriert" werden, damit es im OI angezeigt wird?
  • Ergebnis der Bastelei soll sein, einen kompletten kleinen Editor zu erstellen, der dann überall verwendet werden kann. Der Frame wäre dann quasi der Editor-Container. Durch Zufall habe ich nun festgestellt, dass Frames aber offenbar nur projektbezogen (?) verfügbar sind. Auch wenn die Frame-Unit in einem Verzeichnis innerhalb des Suchpfades abgelegt wird: In anderen Projekten zeigt mir das Frame-Auswahlfenster den erstellten EditorFrame nicht an?! Frage: Ist das ebenfalls prinzipbedingt, oder mache ich da wieder einmal etwas falsch?

alzaimar 6. Mai 2008 08:16

Re: Frames alternative zu Komponente?
 
Füge den Frame einfach dem Projekt hinzu, dann kannst du damit auch normal arbeiten.

Mich stört es auch, das man die eigenen published Properties zur Designzeit nicht sehen kann, aber dazu müsste die IDE sich ja das Kompilat des Frames nehmen und das wäre dann doch zu viel des Guten. Du hättest immer eine Diskrepanz zwischen Framecode und Quelltext... Wäre nett, halte ich aber nicht für praktikabel.

Wenn man allerdings Frames wie Komponenten behandeln könnte, wäre das nett. Ich komme aber auch so damit zurecht.

taaktaak 6. Mai 2008 09:24

Re: Frames alternative zu Komponente?
 
Vielen Dank für die schnelle Antwort! :hi:

zu meiner 1. Frage:
OK, damit kann man leben, dass der OI die eigenen Properties nicht anzeigt!

zu meiner 2. Frage:
Prima! Daran habe ich gar nicht gedacht: Zuerst die Frame-Unit dem Projekt zufügen, dann steht sie auch im Auswahlfenster der Frames zur Verfügung und kann eingefügt werden - sehr schön!

franktron 6. Mai 2008 09:31

Re: Frames alternative zu Komponente?
 
Zu 1 du kanns ja auch eine eigene Klassen von TFrame ableiten und da deine Proceduren u.s.w. ableiten und die sind dann somit auch im OI zu sehen.

alzaimar 6. Mai 2008 09:33

Re: Frames alternative zu Komponente?
 
Kleinigkeit noch, und das ist eine echte Macke von Delphi:

Wenn Du im Designer ein Formular lädst, auf dem sich ein Frame befindet, und dieser Frame ist noch gar nicht geladen, dann meckert die IDE. Und wenn Du dann nicht aufpasst (einfach ab-entern), ist der Frame flöten. Ist mir gerade eben bei einem fetten Projekt passiert und die Anwendung wurde so ausgeliefert.. Schönen Dank.

taaktaak 6. Mai 2008 13:36

Re: Frames alternative zu Komponente?
 
Moin, Moin.

@franktron: Ähhhh, ich muss gestehen, ich verstehe das nicht :pale:

Wenn ich eine Klasse ableite und in meinem Programm nutzen will, dann muss ich doch im Source z.B. im OnCreate meines Forms davon eine Instanz erstellen - und dann sehe ich im OI weder einzelne Controls der Klasse noch die von dieser Klasse bereitgestellten Properties.

Sorry, aber so sehr mich dein Hinweis interessiert, er ist mir leider absolut unverständlich. Könntest du für mich Unwissenden etwas konkretere Arbeitsschritte aufzeigen?

franktron 6. Mai 2008 13:42

Re: Frames alternative zu Komponente?
 
Zitat:

Zitat von taaktaak
Moin, Moin.

@franktron: Ähhhh, ich muss gestehen, ich verstehe das nicht :pale:

Beispiel

Delphi-Quellcode:
  TMeinFrame = class(TFrame)
    public
      Porperty Var : Integer;....
     
     Procedure MachWas;
  End;

Tyrael Y. 6. Mai 2008 13:50

Re: Frames alternative zu Komponente?
 
Zitat:

Zitat von taaktaak
...und dann sehe ich im OI weder einzelne Controls der Klasse noch die von dieser Klasse bereitgestellten Properties.

@frank ...ich glaub taktaak weiss wie man etwas ableitet, er möchte gern das es auch im OI sichtbar wird. Einzige Chance ist, daß die abgeleitete Klasse als neue Komponente registriert wird, wie du taktaak es schon richtig erkannt hast.

taaktaak 6. Mai 2008 15:10

Re: Frames alternative zu Komponente?
 
Noch einmal vielen Dank für die Antworten.
Meine Irritation ist jetzt beseitigt. Als Fazit halte ich fest: Im Prinzip kann ich einen Frame wie eine Komponente nutzen, muss dann aber auf den Zugriff auf die Properties im OI verzichten. Wenn ich diese Bequemlichkeit unbedingt nutzen will, dann muss es eine Komponente sein.


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