in einer zuweisung eine variable nutzen

Command

Mitglied
hallo,
da ich häufig mit prozeduren arbeite ist mir eins aufgefallen das so etwas z.b. nicht geht
prozedure hallo(variable:integer);
begin
buttonvariable.caption:='hallo';
end;
also meine frage
1. Ob so was überhaugt geht??
und wenn ja wie?(das geth so ja nicht)

MFG Command
 

Dario Linsky

Erfahrenes Mitglied
Was hast Du damit genau vor? Willst Du aus einer eigenen Prozedur heraus die Caption-Eigenschaft von einem Button ändern?
Dazu musst Du die Prozedur als Klassenmethode vom Formular deklarieren. Ansonsten musst Du die Klasse noch mit angeben.
 

Dario Linsky

Erfahrenes Mitglied
Entweder so:

Code:
procedure CaptionAendern(NeueCaption: String);
begin
  Form1.Button1.Caption := NeueCaption;
end;
...oder so:
Code:
type
  TForm1 = class(TForm)
  // restliche Klassendefinition
  private
    procedure CaptionAendern(NeueCaption);
  end;
// Code ......
procedure TForm1.CaptionAendern(NeueCaption);
begin
  Button1.Caption := NeueCaption;
end;

Das erste Beispiel greift von aussen auf die Klasse TForm1 zu. Beim zweiten Beispiel gehört die Methode CaptionAendern schon direkt mit zur Klasse.
 

Command

Mitglied
ne hat meine frage nicht richtig verstanden!
ich meinte das man angibt welcher button d.h. es soll nicht button1 geänder werden sondern button+variable also z.b. button5(wenn variable 5 wäre)
 

Dario Linsky

Erfahrenes Mitglied
Sag das doch gleich. ;)
Dafür gibts die Funktion namens FindComponent(), mit der Du ein Steuerelement auf dem Formular über den Namen suchen kannst:
Code:
for i := 1 to 5 do
begin
  (FindComponent('Button' + IntToStr(i)) as TButton).Caption := 'Neue Caption';
end;
Wichtig dabei ist auch noch die Typumwandlung in TButton, sonst kann das Programm damit nichts anfangen. Experimentier damit einfach mal etwas rum. :)