Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Komponenten zur Laufzeit erzeugen - auf 4 Formularen mit 1 ? (https://www.delphipraxis.net/144956-komponenten-zur-laufzeit-erzeugen-auf-4-formularen-mit-1-a.html)

torf160 20. Dez 2009 17:23


Komponenten zur Laufzeit erzeugen - auf 4 Formularen mit 1 ?
 
Hallo, ich hoffe, ich habe mich mit meiner Frage für das richtige Forum entschieden.

Also:
Ich habe eine Anwendung mit 1 Haupt-Formular und 4 weiteren Formularen.
Auf den 4 weiteren Formularen möchte ich zur Laufzeit weitere Komponenten erzeugen.

Ich habe das jetzt so realisiert, dass für jedes Formular ein entsprechendes OnCreate-Ereignis vorhanden ist.
Das ist dann aber praktisch 4 x derselbe Code.

Geht das nicht irgendwie eleganter? So, dass ich mit nur 1 Routine die Komponenten auf allen 4 Formularen erzeugen kann?
Das wäre weniger Tipparbeit und Ändeerungen müsste ich nur noch an 1 Stelle durchführen.

Das ganze Formular an eine Prozedur zu übergeben ist mir nicht gelungen. :-(

Vielen Dank schon mal, für Eure Müühe.

torf160

SirThornberry 20. Dez 2009 17:44

Re: Komponenten zur Laufzeit erzeugen - auf 4 Formularen mit
 
Zitat:

Das ganze Formular an eine Prozedur zu übergeben ist mir nicht gelungen.
Da wäre Interessant wie du es versucht hast und was genau dabei schief gegangen ist denn im Grunde genommen ist die einfachste Variante genau diese.

Delphi-Quellcode:
procedure erstelle_komponenten_auf_form(AForm: TCustomForm);
begin
  // Komponenten erzeugen mit AForm als Parent und Owner
end;

torf160 21. Dez 2009 13:33

Re: Komponenten zur Laufzeit erzeugen - auf 4 Formularen mit
 
Suuuper, so funktioniert es. :-D

Ich bin nicht auf die Idee gekommen, die Prozedur aus dem Formular selbst aufzurufen, außerdem hatte ich noch ein "var" im Prozeduraufruf.

Also etwa so:
Delphi-Quellcode:
procedure erstelle_komponenten_auf_form(var Form2: TForm);
begin
  // Komponenten erzeugen
end;
Der Aufruf erfolgte dann aus Form1.

Vielen Dank für die schnelle Hilfe.

torf160

himitsu 21. Dez 2009 13:38

Re: Komponenten zur Laufzeit erzeugen - auf 4 Formularen mit
 
Das VAR ist nicht nötig, da du ja den Inhalt von Form2 ändern willst und nicht die Form2-Instanz selber.

'ne andere Frage:
Wenn du auf 4 Forms die selben Komponenten hast, warum dann nicht nur eine Form 4-mal verwenden?

Hansa 21. Dez 2009 15:34

Re: Komponenten zur Laufzeit erzeugen - auf 4 Formularen mit
 
Zitat:

Zitat von himitsu
Wenn du auf 4 Forms die selben Komponenten hast, warum dann nicht nur eine Form 4-mal verwenden?

Das geht zumindest in die richtige Richtung. Er geht aber besser noch einen Schritt weiter und lässt 4 Forms eben 4 Forms sein und auch das Gefummele mit Parent,Owner etc. weg. Solche Geschichten macht man besser mit einem Musterformular. Dieses kriegt das richtige FormCreate und alles was gemeinsam sonst noch gebraucht wird. Farben, Schriftarten, bei Maus und Tastatur macht es auch keinen Sinn das überall anders zu handhaben. Von diesem Musterformular soll er sich dann die 4 anderen ableiten und fertig. Sollte es nötig werden irgendeine Eigenschaft in allen 4 oder später noch mehr Formularen zu ändern, dann muss lediglich dieses Musterformular geändert werden. Und er hätte es auch für andere Programme immer zur Verfügung.


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