Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Variable auf Form setzen (https://www.delphipraxis.net/153308-variable-auf-form-setzen.html)

Delphi-Narr 28. Jul 2010 17:08

Delphi-Version: 2005

Variable auf Form setzen
 
Hallo,
ich habe eine Variable F:TForm und einen String S mit dem Namen eines Formulars der Anwendung.
Jetzt möchte ich F auf das Formular mit dem Namen S setzen. Wie mach ich das?


Edit:
Hier ein Beispiel wie ich das meine:

Delphi-Quellcode:
var i:integer;
    F:TForm;
begin
     i:=2;
     F:='Form'+IntToStr(i);
     
     //Und ich möchte hier "Form2" angezeigt bekommen
     showmessage(F.name);
end;

Viele Grüße!

mkinzler 28. Jul 2010 17:41

AW: Variable auf Form setzen
 
Delphi-Quellcode:
f := Findcomponent(s);

Delphi-Narr 28. Jul 2010 17:44

AW: Variable auf Form setzen
 
:wall:

So einfach... Dachte das gilt nur für Buttons etc...
Danke!

Delphi-Quellcode:
F:=Findcomponent(Formname) as TForm;

mkinzler 28. Jul 2010 17:48

AW: Variable auf Form setzen
 
Auch ein Formular ist eine Komponente

Delphi-Narr 28. Jul 2010 18:27

AW: Variable auf Form setzen
 
Klappt aber trotzdem irgendwie nicht...

Delphi-Quellcode:

procedure TForm4.Button1Click(Sender: TObject);
var F:TForm;
begin
     F:=FindComponent('Form'+IntToStr(4)) as TForm;
     showmessage(F.name);
end;
Gibt eine Fehlermeldung (Zugriffsverletzung bei Adresse...)

mkinzler 28. Jul 2010 18:28

AW: Variable auf Form setzen
 
Heisst die Form auch Form4?

Delphi-Narr 28. Jul 2010 18:30

AW: Variable auf Form setzen
 
Ja...
Delphi-Quellcode:
showmessage(Form4.name);
klappt wunderbar...

Edit:
Fehler gefunden:

Application.findcomponent muss es heißen...

c4rtm4n 28. Jul 2010 18:36

AW: Variable auf Form setzen
 
Um eventuelle Zugiffsschutzverletzungen entgegenzuwirken könnte man vielleicht noch folgendes machen:

Delphi-Quellcode:
...

var
  c: TComponent;
begin
  c := FindComponent('Form4');

  if not Assigned(c) then
    exit;

  if (c is TForm) then
    ShowMessage(TForm(c).Name);
end;
Gruß

mkinzler 28. Jul 2010 18:39

AW: Variable auf Form setzen
 
Von welcher Klasse nimmst du die Methode?
Delphi-Quellcode:
f := Application.FindComponent( 'Form4') as TForm;
Alternativ kannst du auch noch Screen.Forms[] durchgehen


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