Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Komponenten in eigens Form auslagern während es läuft? (https://www.delphipraxis.net/79522-komponenten-eigens-form-auslagern-waehrend-es-laeuft.html)

moelski 24. Okt 2006 10:07


Komponenten in eigens Form auslagern während es läuft?
 
Moin !

Ist es mit vertretbarem Aufwand folgendes machbar...

Wir haben sagen wir mal 3 Panles die übereinanderliegen und verschiedene komponenten beinhalten. Das ganze wäre auch bei einem PagelControl denkbar .. Über das Menü kann man die Seite ansehen die man haben will und das wars.

Nun wäre es aber cool wenn man die Komponenten eines Panels bzw. die auf einer Seite eines PageControl sind in ein eigenes Formular "verschiebt" und dieses anstatt des Panels anzeigt.
Hintergrund: Wir haben in unserer Soft z.B. eine Grafik und eine Tabelle die man aber im Normalfall nicht zusammen darstellen kann. Ab und an wäre aber eben dies mal ganz interessant. Wir möchten allerdings keine MDI Anwendung. Das würde zu viel Umstellung bedeuten.
Drum diese Idee und die Frage der Machbarkeit ...

Any hints?

mkinzler 24. Okt 2006 10:14

Re: Komponenten in eigens Form auslagern während es läuft?
 
Du könntest gleichartige Komponenten dynamisch neu erzeugen und die Eigenschaften klonen.

moelski 24. Okt 2006 10:22

Re: Komponenten in eigens Form auslagern während es läuft?
 
Moin !

Zitat:

Du könntest gleichartige Komponenten dynamisch neu erzeugen und die Eigenschaften klonen.
Kann man sicher so machen, hat aber aus meiner Sicht Nachteile ..

- höhere Speicherauslastung
- ich habe dann auch neue Komponentennamen (und wir nutzen ab und an die Komponentennamen der vorhandenen Komponenten)
- ich muss die Tabs bzw. Panel extra ausblenden
- ich muss im Code die neuen Komponentennamen mitführen und überwachen

Ich glaube die Lösung wäre suboptimal ;)

hsg 24. Okt 2006 10:25

Re: Komponenten in eigens Form auslagern während es läuft?
 
Es geht auch einfacher: Eine Leeres Formular erzeugen und den Panels dieses Formular zur Laufzeit als Parent zuweisen
Delphi-Quellcode:
pnTab.Parent := Form1;
Gruß Jörg

moelski 24. Okt 2006 10:27

Re: Komponenten in eigens Form auslagern während es läuft?
 
Moin !

ui, das geht echt so easy? Das wäre ja cool!

Das sollte auch mit Panels und Tabs gehen oder? Bzw. zur Not auf das Tab ein Panel legen ...

Sidorion 24. Okt 2006 10:32

Re: Komponenten in eigens Form auslagern während es läuft?
 
Dabei muss man alerdings beachten, dass der Owner beim alten Form liegen bleibt und die Variablen für die Komponenten auch. D.h. dass Du wenn das neue Form geschlossen wird, die Komponenten zumindest wieder zurückschieben musst.
Das Problem dabei ist nämlöich, dass sowohl die neue, als auch die alte Form die Komponenten mitzerstört (einmal über Owner, einmal über Parent) und wenn dann die jeweils andere Form zerstört wird, hagelts Exceptions.

moelski 24. Okt 2006 10:36

Re: Komponenten in eigens Form auslagern während es läuft?
 
Moin !

Ok ..

Würde es dann reichen wenn ich im OnClose einfach den Parent wieder retour setze?

samson 24. Okt 2006 10:38

Re: Komponenten in eigens Form auslagern während es läuft?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin,

habe mal ein kleines Testprogramm gebaut.

Darauf kannst du aufbauen.

Gruß


Frank

moelski 24. Okt 2006 10:48

Re: Komponenten in eigens Form auslagern während es läuft?
 
Moin !

Danke für die Demo!
In dem Pas fehlt allerdings der Code für den Button ;)
Und beim schliessen von Form2 sollte ja dann alles wieder moven ...

Aber ich denke ich habe einen Ansatz den ich mal verfolgen kann.

samson 24. Okt 2006 10:52

Re: Komponenten in eigens Form auslagern während es läuft?
 
Moin,

in Unit1 steht doch für den Button der Code. Wenn der Button ins Form2 verschoben wird, wird trotzdem der Code aus Unit1 ausgeführt.

Die Event-Procedure ändert sich ja nicht.

Wie gesagt. Ist nur eine kleine Testapp. Wer, Was draus macht ist jedem selbst überlassen. Hauptsache der Ansatz ist da.

Gruß


Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:48 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz