![]() |
Form Namen Variable verwenden
Hallo zusammen,
über den folgenden Source erhalte die Komponenten Anzahl die sich in einer Form befinden:
Delphi-Quellcode:
Form1.ComponentCount;
Ich versuche nun in meinem Programm in einer Prozedur an den Component Count einer anderen Form ranzukommen, wobei ich mir den Namen der Form als String Variable übergeb. Wie Funktioniert sowas? Oder ist mein Ansatz Falsch das ich den Namen der Form als String übergebe? |
AW: Form Namen Variable verwenden
Wieso als String und nicht als Instanz?
|
AW: Form Namen Variable verwenden
Da müsste mit
Delphi-Quellcode:
gehen
Application.FindComponent(<Name der Form>).ComponentCount;
|
AW: Form Namen Variable verwenden
Aber doch nur dann, wenn Application auch der Owner der gesuchten Form ist, oder?
|
AW: Form Namen Variable verwenden
Ja. Sollte normalerweise ja so sein.
|
AW: Form Namen Variable verwenden
Bei dynamisch erzeugten Formularen nicht unbedingt. Allerdings ist ja meine Frage von oben immer noch offen, aus welchem Grund das ein String ist und nicht eine Instanz oder auch eine TFormClass-Variable.
|
AW: Form Namen Variable verwenden
Dennoch wäre es mehr als ratsam das Formular als Referenz zu übergeben, wenn diese für den Aufrufer ohenhin vorliegt.
Edit: Deddy is heut flott :) |
AW: Form Namen Variable verwenden
Zitat:
|
AW: Form Namen Variable verwenden
Damit man mein Vorhaben ein bißchen besser versteht noch ein paar zusätzliche Infos...
In meinem Programm gibt es mehrere Forms... In jeder Form gibt es mehrere Komponenten wie z.B. Labels etc. Die Anforderung ist nun das der Benutzer eine csv Datei erstellen kann in der er je nach Land die Captions von Labels & Co. übersetzen kann. Damit ich nun im OnCreate Ereignis jeder Form die csv Datei auslesen muss wollte ich mir eine Prozedur basteln an die ich den Form Namen übergebe und über die Prozedur sollen aus der csv Datei dann die richtigen Captions ausgelesen werden. Bisher sieht das ganze nun so aus:
Delphi-Quellcode:
procedure prLoadModuleLanguage(sModule : String);
var i : Integer; begin For i := 0 To Application.FindComponent(sModule).ComponentCount -1 Do Begin //TAdvPage If (Application.FindComponent(sModule).Components[i] is TAdvPage) Then Begin (Application.FindComponent(sModule).Components[i] as TAdvPage).Caption := fnGetComponentCountryText('Component', sModule, 'TAdvPage', (Application.FindComponent(sModule).Components[i] as TAdvPage).Name); End; //TAdvToolBar If (Application.FindComponent(sModule).Components[i] is TAdvToolBar) Then Begin (Application.FindComponent(sModule).Components[i] as TAdvToolBar).Caption := fnGetComponentCountryText('Component', sModule, 'TAdvToolBar', (Application.FindComponent(sModule).Components[i] as TAdvToolBar).Name); End; //TAdvGlowButton If (Application.FindComponent(sModule).Components[i] is TAdvGlowButton) Then Begin (Application.FindComponent(sModule).Components[i] as TAdvGlowButton).Caption := fnGetComponentCountryText('Component', sModule, 'TAdvGlowButton', (Application.FindComponent(sModule).Components[i] as TAdvGlowButton).Name); End; End; end; Bisher habe ich keine bessere Idee wie ich das sonst umsetzen könnte... Ich lass mir aber gern auf die Sprünge helfen :lol: |
AW: Form Namen Variable verwenden
Und jetzt habe ich glaub das Problem das Ihr angesprochen habt...
Meine Forms werden Dynamisch erzeugt... Mit der Variante von mkinzler erhalte ich jetzt eine Zugriffsverletzung... Wie kann ich den die Form, bzw. den Namen als Instanz oder Referenz übergeben? @deddyH Warum ich das bis jetzt so probiert habe ist eigentlich ganz einfach... Mir ist nichts anderes eingefallen beim rumprobieren :-O |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:22 Uhr. |
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-2025 by Thomas Breitkreuz