nutzung von variablen zum abgrufen einer form

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
komat
Beiträge: 5
Registriert: Fr 4. Mai 2012, 16:25

nutzung von variablen zum abgrufen einer form

Beitrag von komat »

hi ich hab generell vor kurzen erst mit dem programmieren richtung angefangen und bin jetzt auf ein kleines problem gestoßen
zu der situation

ich habe eine variable A, welche immer einen zufällig generierten integer wert hat
desweiteren habe ich mehrere formen die form1, form2, form 3 usw... benannt sind

ich möchte folgendes machen
ich habe eine prozedur, bei welcher, wenn man sie ausführt eine form geöffnet wird, undzwar die form_, es soll der integer wert A an die stelle kommen, wie kann ich soetwas machen?

bin dankbar für jede hilfe :)

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: nutzung von variablen zum abgrufen einer form

Beitrag von MAC »

Ich geh mal davon aus das du genau 3 Formen hast.
Dort würde man das einfach mit einer IF abfrage lösen.
Wenn der wert = 1 ist dann wird Form1.Show; aufgerufen.
Ist der wert = 2 dann halt Form2.Show;
u.s.w.

Zum benutzten der If schleife
>> Google >> "Delphi IF Then"

Alternative , die sogenannte "Case-Abfrage"
>> Google >> "Delphi case"

Code: Alles auswählen

Signatur := nil;

komat
Beiträge: 5
Registriert: Fr 4. Mai 2012, 16:25

Re: nutzung von variablen zum abgrufen einer form

Beitrag von komat »

danke für die antwort, stimmt, ich könnte es mit einer if schleife machen, aber nur aus neugier wie würde denn der syntax sein für sowas wie form_ bzw gibt es soetwas überhaupt?

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: nutzung von variablen zum abgrufen einer form

Beitrag von MAC »

Ja das ist möglich.
Entweder Speicherst du deine verschiedenen Formen in einem Array. Das bedeutet, beim start deines Programmes schreibst du folgendes

Code: Alles auswählen

var // globale variable
  MeineFormen: array [0..2] of TForm; 
 
procedure TForm1.Create(...)
begin
MeineFormen[0] := Form1;
MeineFormen[1] := Form2;
MeineFormen[2] := Form3;
end;
Zum aufrufen

Code: Alles auswählen

procedure ZeigeForm( FormNr : integer);
begin
MeineFormen[FormNr-1].Show; // Hier wird minus 1 gerechnet !
end;
Ich habe hier das array von [0..2] laufen lassen. Das heißt der niedrigste Eintrag ist 0 und der höchste 2. Deshalb muss auch MeineFormen[2] aufgerufen werden wenn man eigentlich die dritte haben will.
Wieso ich das so mache ? Man sollte sich von anfang an daran gewöhnen Arrays bei 0 starten zu lassen...


Es könnte sein das es eine zweite Möglichkeit gibt. Wenn man z.B. 3 Buttons auf einer Form hat kann man eine Procedure aufrufen

Code: Alles auswählen

var
  x:TComponent;
begin
x := Form1.FindComponent('Button1');  // zurückgegeben wird kein Button sondern ein TComponent
if x is TButton then (x as TButton).Caption := 'Hallo Welt'; //deswegen muss hier gefragt werden ob das element eigentlich ein Button ist, denn nicht jedes Element hat die Eigenschaft "Caption" 
end;
Vlt klappt das wenn man Application.FindComponent('Form1'); aufruft...

Code: Alles auswählen

Signatur := nil;

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: nutzung von variablen zum abgrufen einer form

Beitrag von Heinrich Wolf »

MAC hat geschrieben:Vlt klappt das wenn man Application.FindComponent('Form1'); aufruft...
Ich habe nicht gewusst, dass Application.FindComponent auf 'Form1' anwendbar ist, aber es geht in Lazarus und Delphi 5. Ohne Application geht es aber nicht und in Delphi 1 geht es gar nicht. Da kommt Nil zurück.

Code: Alles auswählen

A := Random(3) + 1;
(Application.FindComponent('Form' + IntToStr(A)) as tForm).Show;
Heiner

Antworten