Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

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/)
-   -   Form Namen Variable verwenden (https://www.delphipraxis.net/169927-form-namen-variable-verwenden.html)

Andidreas 21. Aug 2012 15:21

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?

DeddyH 21. Aug 2012 15:24

AW: Form Namen Variable verwenden
 
Wieso als String und nicht als Instanz?

mkinzler 21. Aug 2012 15:26

AW: Form Namen Variable verwenden
 
Da müsste mit
Delphi-Quellcode:
Application.FindComponent(<Name der Form>).ComponentCount;
gehen

DeddyH 21. Aug 2012 15:28

AW: Form Namen Variable verwenden
 
Aber doch nur dann, wenn Application auch der Owner der gesuchten Form ist, oder?

mkinzler 21. Aug 2012 15:33

AW: Form Namen Variable verwenden
 
Ja. Sollte normalerweise ja so sein.

DeddyH 21. Aug 2012 15:35

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.

Medium 21. Aug 2012 15:37

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 :)

DeddyH 21. Aug 2012 15:38

AW: Form Namen Variable verwenden
 
Zitat:

Zitat von Medium (Beitrag 1179077)
Edit: Deddy is heut flott :)

Ich muss mich heute irgendwie wach halten :lol:

Andidreas 21. Aug 2012 16:09

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:

Andidreas 21. Aug 2012 16:23

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 21:06 Uhr.
Seite 1 von 4  1 23     Letzte »    

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