Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Ist meine TPageControl-Philosophie richtig?

  Alt 9. Dez 2014, 21:58
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat