Delphi-PRAXiS

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 TForm finden (https://www.delphipraxis.net/86683-tform-finden.html)

delphinia 17. Feb 2007 18:16


TForm finden
 
Hallo,,


Der Compiler schimpft nicht über

Delphi-Quellcode:
var
 AComponent: Tcomponent;

 AComponent := TForm(Lang_Sections.Strings[i2]).findcomponent('button1');

Aber dann beim ausführen hagelt es eine Zugrifsverletzung.
Was habe ich vor. Auf einer mir erst zur laufzeit bekannten Form eine mir auch nur zur Laufzeit bekanten Componente ansprechen.

Sowas wie findcomponent('MeineForm' as TForm) kennt der Compiler nicht.


Bitte Helfen ;-)

Sharky 17. Feb 2007 18:24

Re: TForm finden
 
Hai delphinia,

auf "die Form" könntest Du eventuell zugreifen indem Du aus dem Code der Form diese als Parameter vom Type TForm mit dem Wert self an eine Funktion übergibst.

Was genau möchtest Du denn machen? Evntuell gibt es ja einen anderen Ansatz für dein Problem.

delphinia 17. Feb 2007 18:26

Re: TForm finden
 
Ich möchte zur Laufzeit zB.: die Caption einer Label componente ändern. Von der ich erst aus einer LanguageFile den Namen und dessen Platz auf einer mir auch erst aus der languageFile bekannten TForm erfahre.

Neutral General 17. Feb 2007 18:27

Re: TForm finden
 
Delphi-Quellcode:
TButton(TForm(Application.FindComponent(Lang_Sections.Strings[i2])).FindComponent('Button1')).Caption := 'lol';
Ich glaube so müsste das hinhauen :freak:

delphinia 17. Feb 2007 18:32

Re: TForm finden
 
OK danke hab es ;-)

AForm := TForm(Application.FindComponent(Lang_Sections.Stri ngs[i2]));


Zumidnest funktioniert das so ;-) Danke

Hansa 17. Feb 2007 18:34

Re: TForm finden
 
Der General war nah dran. Habe mal etwas gesucht und das gefunden :

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  showmessage (FindComponent('Button1').Name);
  TForm (FindComponent('Button1')).caption := 'sdfd';
end;
Neues Projekt -> 2 Buttons drauf und die 2 Zeilen einfügen. Hoffe mal, das geht in die richtige Richtung. :-D

@roter Kasten :mrgreen: : Application würde ich nicht verwenden.

Edit : der Button heißt erst mal "Button1". Die Beschriftung (Caption) ist auch "Button1". Den suche ich und ändere das eben zur Laufzeit ab. :stupid:

Neutral General 17. Feb 2007 18:38

Re: TForm finden
 
Zitat:

@roter Kasten Mr. Green : Application würde ich nicht verwenden.
Ja aber delphinia weiß ja auch nicht auf welchem Formular sich der Button befindet.. Sie muss ja erstmal das Formular finden das den Namen trägt das sie in ihren Strings gespeichert hat...

Sharky 17. Feb 2007 18:39

Re: TForm finden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hai,

ich habe auch mal damit gespiel die Captions in meinen Programm für verschiedene Sprachen zu setzten.

Mein Lösungsweg war allerdings ein anderer. Ich habe den Componententyp und das (String)Property angegeben das ich setzen möchte.
Den Namen der Componente habe ich dann einfach aus der "INI" mit den Übersetzungen geholt.

Ich hänge mal ein Beispiel an. Ändere in der "dafault.lng" einfach mal den Text und schaue was passiert wenn Du das Programm startest.

Hansa 17. Feb 2007 18:54

Re: TForm finden
 
Sharkys Beispiel schau ich mir mal später an. Aber habe mal aus Spaß in das Projekt eine neue Form reingemacht. Mit einem Button. Wie vorher bereits geahnt : so gehts nicht. Das ergibt ja nur 2 mal "Button1", jeweils auf Form1 und Form2. :shock: Und nun ? Das nützt ja wohl nichts. :gruebel:


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