Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Weiter / Zurück Dialog (https://www.delphipraxis.net/73677-weiter-zurueck-dialog.html)

stz 21. Jul 2006 21:41


Weiter / Zurück Dialog
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin zusammen,
ich bin auf der Suche nach einer eleganten Lösung für einen Dialog von der Sorte "Weiter" / "Zurück" / "Abbrechen". Ich habe das im Moment so gelöst, dass ich jede Seite auf ein eignes Panel gepackt habe, und bei einem Click auf den Button "Weiter" bzw. "Zurück", das passende Panel eingeblendet wird, aber irgendwie wird das langsam recht kompliziert, wenn eine neue Seite dazu kommen soll. Wie kann ich das denn mal besser lösen? :gruebel:

Damit klar ist, was ich meine, nochmal ein Bild im Anhang.

Gruß
Malte

fLaSh11 21. Jul 2006 21:56

Re: Weiter / Zurück Dialog
 
ich denke mal, dass die Jedis dafür eine Lösund parat haben ("InstallWizard" oder so ähnlich glaube ich suchst du!)... ;)

xaromz 21. Jul 2006 22:01

Re: Weiter / Zurück Dialog
 
Hallo,

ich verwende da immer ein PageControl mit ausgeblendeten Tabs.

Gruß
xaromz

Muetze1 21. Jul 2006 22:02

Re: Weiter / Zurück Dialog
 
Ich würde da Frames verwenden...

stz 21. Jul 2006 22:16

Re: Weiter / Zurück Dialog
 
Hi besten Dank für die schnellen Tips. :dp:

Zitat:

Zitat von Muetze1
Ich würde da Frames verwenden...

Gibts denn da eine bessere Möglichkeit, als schon zur Entwurfszeit alle Frames, die ich haben will auf der Form zu platzieren? Sonst muss ich ja bei jedem neuen Frame erst dem Projekt einen neuen Frame hinzufügen und den dann auf die Form packen...

Gruß
Malte

Michael Habbe 22. Jul 2006 00:48

Re: Weiter / Zurück Dialog
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn ich Dich richtig verstehe, packst Du die Panels übereinander auf das Formular. Dadurch das sie alle hintereinanderliegen, wird es kompliziert, diese zu verwalten.

Schonmal daran gedacht, die Panels untereinander zu legen (Beispielscreenshot im Anhang). So könntest Du im FormCreate das Formular skalieren und dann alle Panels auf Client setzen bzw. anordnen.

Mackhack 22. Jul 2006 05:36

Re: Weiter / Zurück Dialog
 
Ich habe auch mal n Installer geschrieben und habe es so gemacht.

Du hast ne Variable vom Typ Integer sagen wir iStatus. Dann hab ich GroupBoxen auf der Form gehabt und den Zurueck-Button der so aussehen koennte:

Delphi-Quellcode:
procedure TFrmMain.ZurueckClick(Sender: TObject);
Begin
  If (iStatus > 0) Then
    Dec(iStatus);

  UpdateGUI;
End;
Die UpdateGUI sieht dann so aus:

Delphi-Quellcode:
Procedure TForm1.UpDateGUI;
Begin
  GroupBox_Start.Visible := (iStatus = 0);
  GroupBox_Eula.Visible := (iStatus = 1);
  GroupBox_InstallPath.Visible := (iStatus = 2);
  GroupBox_ProgramGroups.Visible := (iStatus = 3);
  GroupBox_InstallationOverview.Visible := (iStatus = 4);
  GroupBox_Installation.Visible := (iStatus = 5);
  GroupBox_Fertig.Visible := iStatus = 6;

  Zurueck.Visible := (iStatus >= 1);

  Weiter_Installieren.Enabled := (iStatus <= 4);

  If GroupBox_Eula.Visible Then
  Begin
    Weiter_Installieren.Enabled := False;
    Label18.Caption := GetHardDiskSpace + ' GB';
  End;

  If (iStatus = 3) Then
    GetProgramGroupEntries(GetStartMenuPath, Memo1.Lines);

  If (iStatus = 4) Then
  Begin
    Weiter_Installieren.Caption := '&Installieren';
    Memo2.Lines.Clear;
    Memo2.Lines.Add('Ziel-Ordner:');
    Memo2.Lines.Add('     ' + ExcludeTrailingBackSlash(EditInstallPath.Text));
    Memo2.Lines.Add(' ');
    Memo2.Lines.Add('Startmenü-Ordner:');
    Memo2.Lines.Add('     ' + Edit1.Text);
  End
  Else
    Weiter_Installieren.Caption := '&Weiter >';

  Zurueck.Enabled := (iStatus > 0);

  If RadioButton1.Checked Then
    Weiter_Installieren.Enabled := True;

  If (iStatus = 5) Then
  Begin
    Zurueck.Enabled := False;
    Weiter_Installieren.Enabled := False;
    Abbrechen.Enabled := False;
    InstallProgramFiles;
  End;

  If iStatus = 6 Then
  Begin
    Zurueck.Enabled := False;
    Weiter_Installieren.Caption := '&Beenden';
    Abbrechen.Enabled := False;
  End;
End;
Vlt. hilft dir die Anregung ja!

stz 22. Jul 2006 10:28

Re: Weiter / Zurück Dialog
 
Hi,
vielen Dank für die Ideen...

@Mackhack: Irgendwie sieht dein Source deutlich einfacher aus als meiner. Da kann ich bestimmt noch ein paar Ideen klauen.

Ich glaube ich nehm die Lösung mit dem PageControl, da muss ich mir keine Gedanken um das Anzeigen machen, sondern kann einfach nur ActivePageIndex auf die passende Seite setzen und fertig.

Gruß
Malte

Mackhack 22. Jul 2006 18:08

Re: Weiter / Zurück Dialog
 
Der Code ist schon 5 Jahre alt daher siehst du auch Dinge wie Memo1 oder so. Heute benenn ich die Sinnvoller ;-) Aber klar nimm die Idee ruhig, dazu ist sie gepostet!

Muetze1 22. Jul 2006 23:19

Re: Weiter / Zurück Dialog
 
Zitat:

Zitat von stz
Zitat:

Zitat von Muetze1
Ich würde da Frames verwenden...

Gibts denn da eine bessere Möglichkeit, als schon zur Entwurfszeit alle Frames, die ich haben will auf der Form zu platzieren? Sonst muss ich ja bei jedem neuen Frame erst dem Projekt einen neuen Frame hinzufügen und den dann auf die Form packen...

Hä? Frames erzeugen für die Seiten und eine Form als Basis. Zur Laufzeit abhängig von der aktuellen Seite die Frame erzeugen und instanziieren und so auf die Form packen - warum solltest du dies schon zur DesignTime machen wollen? Dann bringt es doch keine Vorteile...

Zur einfacheren Verwaltung könntest du dir eine Frame anlegen und von der ableiten, dann kannst du einfach mit einer in der Basis virtuellen Funktion einfach abprüfen lassen, ob z.B. der Weiter-Button erlaubt ist (z.B: wenn der User noch Daten eingeben muss)...


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz