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 nicht instanziiertes Frame zur Laufzeit finden (https://www.delphipraxis.net/21527-nicht-instanziiertes-frame-zur-laufzeit-finden.html)

cBoB 4. Mai 2004 11:22


nicht instanziiertes Frame zur Laufzeit finden
 
HAllo liebe DelphiNutzerGemeinde 8)

Folgende Frage hab ich heute an Euch:
Wie kann ich ein Frame, welches zwar als Klasse vorhanden ist, aber noch nicht instanziiert ist während der Laufzeit finden? Geht das überhaupt?
Mir geht es nämlich um folgende Übung: ich schreib jetzt an der Grundausstattung für ein Programm, welches später einfach über das einhängen von Frames erweiterbar sein soll, ich will aber am eigentlichen Programm nix mehr verändern müssen, da es sein kann, daß später jemand anderes ein Frame hinzufügt, welches aber vom Programm aus gefunden werden soll. Sieht also wie eine Art Plug-in - allerdings quelltextseitig aus.
WÜrde mich zwar freuen, wenn ich das einfach àla Winamp (u.a.) schaffen könnte, indem ich einfach ne DLL in ein bestimmtes Verzeichniss schreibe und das Programm die dann automatisch einbindet, aber dazu fehlt mir glaube ich auch noch eine gehörige Portion Programmiererfahrung. Wenn allerdings dazu Jemand ne Art Tutorial oder Hinweis hat, kann er das auch posten, nich?!

Vilen Dank!
-c-

Sanchez 4. Mai 2004 11:53

Re: nicht instanziiertes Frame zur Laufzeit finden
 
Hallo,

Schau dir mal das UIL-Plugin System an. Die Version 5 ist Opensource --> download für D5

Ich bin damit ganz gut zurechtgekommen. Das dürfte dir helfen.

grüße, daniel

cBoB 4. Mai 2004 12:04

Re: nicht instanziiertes Frame zur Laufzeit finden
 
Klingt erstmal nicht schlecht, aber wie gesagt, zum jetzigen Zeitpunkt muß es ao gehen, dass noch direkt in den Quellcode geschrieben wird, was uns wieder zurück zur eigentlichen Frage bringt. Irgendwelche Ideen?

-c-

shmia 4. Mai 2004 12:41

Re: nicht instanziiertes Frame zur Laufzeit finden
 
siehe Code-Library: Formulare & Datenmodule dynamisch über Klassennamen erzeugen :dp:
Dies geht auch für Frames. :mrgreen:

cBoB 4. Mai 2004 13:12

Re: nicht instanziiertes Frame zur Laufzeit finden
 
Hm, jaja, is shon ok, erzeugen kann ich's ja und per 'uses' in den code einfügen könnte ich aber auch noch verkraften. Es geht mir ja darum, dass ich wie zum Bleistift mit Application.Components[i] schon instanziierte Komponenten finde, auch noch nicht instanziierte finden kann wie z.B. ein frame, dass noch nicht mit Create erzeugt wurde, was aber theoretisch möglich wäre, da es ja im Programm enthallten ist.

-c-

Muetze1 4. Mai 2004 13:25

Re: nicht instanziiertes Frame zur Laufzeit finden
 
Moin!

Du könntest dir eine Liste mit einer Metaklasse (vom Typ Class Of TFrame) aufbauen und damit das ganze bewerkstelligen. In dem Initialization Teil der Unit die eine Frame definiert, fügst du einfach die Frame in die Liste ein. Ein Beispiel für ein solches Vorgehen findest du bei den StringAdaptern in der XML Library auf meiner HP.

MfG
Muetze1

Sanchez 4. Mai 2004 13:27

Re: nicht instanziiertes Frame zur Laufzeit finden
 
Tut mir Leid, ich werde aus deiner Frage nicht schlau.
Ist eine nicht instanziierte Komponente für dich einfach eine Klasse oder eine noch nicht zugewiesene Variable?

shmia 4. Mai 2004 13:34

Re: nicht instanziiertes Frame zur Laufzeit finden
 
Zitat:

Zitat von cBoB
Hm, jaja, is shon ok, erzeugen kann ich's ja und per 'uses' in den code einfügen könnte ich aber auch noch verkraften. Es geht mir ja darum, dass ich wie zum Bleistift mit Application.Components[i] schon instanziierte Komponenten finde, auch noch nicht instanziierte finden kann wie z.B. ein frame, dass noch nicht mit Create erzeugt wurde, was aber theoretisch möglich wäre, da es ja im Programm enthallten ist.

Dazu müsstest du an das Objekt ClassList aus der Unit Classes herankommen.
Dann hättest du Zugriff auf alle registrierten Klassen und könntest deine Frames
ausfiltern.
Leider ist das Objekt nicht im Interface-Abschnitt veröffentlicht. :cry:
Es bebleibt dir also nichts anderes übrig, als deine Frameklassen selbst
in einer selbstgebauten Liste nach dem Vorbild von ClassList anzumelden.
Später kannst du diese Liste durchsehen und findest so alle registrierten Frameklassen.
Mit der Frameklasse kannst du dann eine (oder mehrere) Instanz(en) erzeugen
und dynamisch in ein Formular einbetten.

cBoB 4. Mai 2004 13:49

Re: nicht instanziiertes Frame zur Laufzeit finden
 
@sanchez
Na mit nicht instanziierte Komponente meinte ich z.B. ein Frame, das zwar im Projekt enthalten ist, aber es wurde eben noch keine Instanz gebildet.

@shmia & @muetze
Ja, dann muß ich wohl oder übel die Frames doch mittels einer Liste verwalten.

erstmal danke so weit!
-c-

Sanchez 4. Mai 2004 14:00

Re: nicht instanziiertes Frame zur Laufzeit finden
 
Also eine Klasse


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