Ein paar Sachen fallen schon auf
Delphi-Quellcode:
procedure TMainForm.bottomFramenextPageButtonClick(Sender: TObject);
begin
if (mainPageControl.ActivePage = firstSheet) then begin
topFrame.ProgressString := '2/3';
mainPageControl.ActivePage := secondSheet
end else if (mainPageControl.ActivePage = secondSheet) then begin
topFrame.ProgressString := '3/3';
mainPageControl.ActivePage := thirdSheet;
end;
end;
procedure TMainForm.bottomFramepreviousPageButtonClick(Sender: TObject);
begin
if (mainPageControl.ActivePage = thirdSheet) then begin
topFrame.ProgressString := '2/3';
mainPageControl.ActivePage := secondSheet
end else if (mainPageControl.ActivePage = secondSheet) then begin
topFrame.ProgressString := '1/3';
mainPageControl.ActivePage := firstSheet;
end;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
mainPageControl.ActivePage := firstSheet;
topFrame.ProgressString := '1/3';
firstPageFrame.initGUI();
end;
kann man auch ganz einfach so schreiben
Delphi-Quellcode:
procedure TMainForm.UpdateProgress;
begin
topFrame.ProgressString := Format( '%d/%d',[ mainPageControl.TabIndex, mainPageControl.PageCount ] );
end;
procedure TMainForm.mainPageControlChange( Sender : TObject );
begin
UpdateProgress;
end;
procedure TMainForm.bottomFramenextPageButtonClick(Sender: TObject);
begin
if mainPageControl.TabIndex < mainPageControl.PageCount - 1 then
mainPageControl.TabIndex := mainPageControl.TabIndex + 1;
end;
procedure TMainForm.bottomFramepreviousPageButtonClick(Sender: TObject);
begin
if mainPageControl.TabIndex > 0 then
mainPageControl.TabIndex := mainPageControl.TabIndex - 1;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
mainPageControl.ActivePage := firstSheet;
firstPageFrame.initGUI();
UodateProgress;
end;
Und schon wird es wurscht, wieviele Seiten dein PageControl hat.
Und damit wären wir auch schon beim wieviel bzw. was. Wenn du hier stärker trennen würdest (Anzeige und Logik), dann wäre das wesentlich flexibler und auch einfacher in der Handhabung.
In ein PageControl kann man so ziemlich alles eindocken. Formulare, Panels, ... Wenn man jetzt im Hintergrund ein Liste mit Instanzen hat und jedem Klassentyp eine bestimmtes Control (Form, Panel, etc.) zuordnet, dann kann man zu jedem Klassentyp das passende Control erzeugen, die Instanz zuweisen und in das PageControl eindocken.
Und schon ist es völlig Wurscht, was dort angezeigt wird.