Zugriff auf Steuerelemente in verschiedenen Formularen
-
- Lazarusforum e. V.
- Beiträge: 242
- Registriert: Di 5. Feb 2008, 15:32
- OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
Zugriff auf Steuerelemente in verschiedenen Formularen
Hallo Zusammen,
Ich habe ein Programm mit mehreren Formularen
Nun würde ich gerne einer prozedur beim aufruf den Namen eines Formulars mitgeben.
Die prozedur soll dann bei dem Formular, das als Parameter übergeben wird, bei einigen labels die Eigenschaft caption ändern.
Vom Prinzip her sollte das etwas so funktionieren:
procedure label_aendern( )
begin
for do
begin
label1.caption := 'test1';
label2.caption := 'test2';
end;
end;
Wie müsste diese Prozedur in Lazarus aussehen?
Vielen Dank im voraus,
Eberhard
Ich habe ein Programm mit mehreren Formularen
Nun würde ich gerne einer prozedur beim aufruf den Namen eines Formulars mitgeben.
Die prozedur soll dann bei dem Formular, das als Parameter übergeben wird, bei einigen labels die Eigenschaft caption ändern.
Vom Prinzip her sollte das etwas so funktionieren:
procedure label_aendern( )
begin
for do
begin
label1.caption := 'test1';
label2.caption := 'test2';
end;
end;
Wie müsste diese Prozedur in Lazarus aussehen?
Vielen Dank im voraus,
Eberhard
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Code: Alles auswählen
procedure label_aendern( <name des Formualars>)
begin
for <name des Formulars> do
begin
label1.caption := 'test1';
label2.caption := 'test2';
end;
end;
Code: Alles auswählen
procedure label_aendern(var aFrom:TForm)
begin
aFrom.label1.caption := 'test1';
aFrom.label2.caption := 'test2';
end;
MFG
Michael Springwald
Michael Springwald
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Hallo Eberhard und Willkommen im Forum!
For-Schleifen verwendet man soweit ich weiß nur, wenn etwas aufgezählt werden soll (for n:=1 to 100 do ...)
Wenn du die Eigenschaften einer bestimmten Form ansprechen möchtest, verwendest du am Besten den Befehl with:
Um eine bestimmte Form einer Prozedur zu "übergeben", übergibt man das sogenannte Handle. Beispielsweise könnte deine Prozedur wie folgt aussehen:
Heißt deine Form beispielsweise Form1, so rufst du obige Prozedur durch
auf.
Viele Grüße, Euklid
For-Schleifen verwendet man soweit ich weiß nur, wenn etwas aufgezählt werden soll (for n:=1 to 100 do ...)
Wenn du die Eigenschaften einer bestimmten Form ansprechen möchtest, verwendest du am Besten den Befehl with:
Code: Alles auswählen
with <Handle des Formulars> do
begin
Label1.Caption:='Test1';
Label1.Caption:='Text2';
end;
Code: Alles auswählen
procedure label_aendern(F:THandle); //F ist das Handle deiner Form.
begin
with F do //und damit machst du Folgendes:
begin
Label1.Caption:='Test1';
Label1.Caption:='Text2';
end;
end;
Code: Alles auswählen
label_aendern(Form1.Handle);
Viele Grüße, Euklid
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
So, Pluto und Euklid ihr bekommt Tippverbot.
Der kram der hier gepostet wurde ist durchweg nicht Kompilierbar.
Woher soll denn der Compiler bitte wissen das auf FormX ein LabelX existiert ??
Kann er nicht !
Das was du machen wills könnte so klappen:
procedure label_aendern(FormX : TForm);
begin
if Assigned(FormX.FindComponen('Label1')) then
TLabel(FormX.FindComponen('Label1')).Caption := 'Bla';
end;
Der kram der hier gepostet wurde ist durchweg nicht Kompilierbar.
Woher soll denn der Compiler bitte wissen das auf FormX ein LabelX existiert ??
Kann er nicht !
Das was du machen wills könnte so klappen:
procedure label_aendern(FormX : TForm);
begin
if Assigned(FormX.FindComponen('Label1')) then
TLabel(FormX.FindComponen('Label1')).Caption := 'Bla';
end;
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Lazarusforum e. V.
- Beiträge: 242
- Registriert: Di 5. Feb 2008, 15:32
- OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
Funktioniert - Vielen Dank!
Hallo,
Der Code von Christian funktioniert perfekt, wenn es das Steuerelement nicht gibt, bricht das Programm nicht ab, sondern macht einfach nichts.
Wenn man sicher ist, dass das Steuerelement existiert, funktioniert es noch einfacher:
procedure label_aendern2(FormX : TForm);
begin
TLabel(FormX.FindComponent('Label1')).Caption := 'Bla';
end;
Das war genau das was ich gesucht habe.
Vielen Dank euch allen und noch ein schönes Wochenende,
Eberhard
Der Code von Christian funktioniert perfekt, wenn es das Steuerelement nicht gibt, bricht das Programm nicht ab, sondern macht einfach nichts.
Wenn man sicher ist, dass das Steuerelement existiert, funktioniert es noch einfacher:
procedure label_aendern2(FormX : TForm);
begin
TLabel(FormX.FindComponent('Label1')).Caption := 'Bla';
end;
Das war genau das was ich gesucht habe.
Vielen Dank euch allen und noch ein schönes Wochenende,
Eberhard