Einzelnen Beitrag anzeigen

Nuclear-Ping
(Gast)

n/a Beiträge
 
#4

Re: Zwischen verschidenen Formularen wechseln

  Alt 26. Jan 2008, 20:45
Eine Methode:

- Du brauchst eine Hauptform (kannst du auf Visible := FALSE setzen), die all deine anderen Forms per uses unter implementation einbindet.
- In der Hauptform legst du unter public ein Array[0..AnzahlAnForms] of TForm an.
- Du machst in FormCreate eine Schleife, die jede Form als Member des Arrays erzeugt:
Delphi-Quellcode:
for i := Low(FormArray) to High(FormArray) do
  begin
    case i of
      0: FormArray[i] := TFormIrgendwas.Create (Self);
      1: FormArray[i] := TFormNochwas.Create (Self);
      ...
    end;
    FormArray[i].Tag := i;
  end;
- Jede Form wird von deinem Hauptform unter implementation per uses eingebunden
- Nun kannst du auf jeder Form sowas in der Art machen:
Delphi-Quellcode:
procedure TFormIrgendwas.ButtonPrevClick(Sender: TObject);
begin
  Hauptform.FormArray[Self.Tag].Visible := FALSE;
  // Du mußt hier noch auf Unterlauf (< 0) prüfen
  Hauptform.FormArray[Self.Tag - 1].Visible := TRUE;
{ oder
  Hauptform.FormArray[Self.Tag].Hide;
  Hauptform.FormArray[Self.Tag - 1].Show; }

end;
procedure TFormIrgendwas.ButtonNextClick(Sender: TObject);
begin
  Hauptform.FormArray[Self.Tag].Visible := FALSE;
  // Du mußt hier noch auf Überlauf (> MaxForms) prüfen
  Hauptform.FormArray[Self.Tag + 1].Visible := TRUE;
{ oder
  Hauptform.FormArray[Self.Tag].Hide;
  Hauptform.FormArray[Self.Tag + 1].Show; }

end;
- Am Ende nicht vergessen, die Forms im Array wieder freizugeben:
Delphi-Quellcode:
for i := Low(FormArray) to High(FormArray) do
  FreeAndNil (FormArray[i]);
- Noch was: Wenn du die anderen Forms unter den Projektoptionen automatisch erzeugst, nimm die alle (bis auf die Hauptform) raus.

Nicht getestet ...
  Mit Zitat antworten Zitat