Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi kleiner Wizard, Vorgehen? (https://www.delphipraxis.net/13264-kleiner-wizard-vorgehen.html)

ims 15. Dez 2003 09:44


kleiner Wizard, Vorgehen?
 
hi
möchte einen kleinen assistenten machen um den user die eingabe diverser daten zu erleichtern(dazu ist er ja auch da ;) ). möchte einfach verschiedene formular.
meine frage nun: wie würdet ihr das lösen? folgende möglichkeiten sind mir in den sinn gekommen:

- verschiedene forumlare (form1, form2 etc...)

oder

- mit versteckten feldern (zuerst sind die aktiv, dann die andern, dann die dritten etc...)

welche vor- und nachteile seht ihr?

gruss, ims

s14 15. Dez 2003 09:50

Re: kleiner Wizard, Vorgehen?
 
Hallo ims,
ich würde die PageControl Komponente mit TabSheets verwenden.
Die Reiter können auch ausgeblendet werden. Das ist IMHO leichter als mit mehreren Formularen zu arbeiten.

Gruß
s14

Phoenix 15. Dez 2003 09:51

Re: kleiner Wizard, Vorgehen?
 
Also ich habe mit folgendem Vorgehen sehr gute erfahrungen gemacht:

Ich erstelle ein Form mit einer Tab-Komponente drauf. Die Tabs werden einfach unsichtbar gemacht. Auf dem Tab werden erstmal drei pages angelegt.

Dann kommen noch die Standard - Buttons für nen Wizzard drauf: Zurück, Weiter, Fertigstellen. In den Events die beim Wechseln der Tabs getriggert werden kommt die Methodik die die Buttons aktiviert / deaktiviert.

Der Part natürlich überschreibbar ;-)

Anhand vom dem Form leitest Du dann Deinen Wizzie ab, fügst ggf. noch Pages hinzu etc. und steuerst Die buttons entsprechend.

Ist zwar einmalig ein wenig Arbeit, aber wenn Du danach nochmal nen Wizzard brauchst ist der richtig schnell fertig :)

ims 15. Dez 2003 10:03

Re: kleiner Wizard, Vorgehen?
 
:wall: logisch... tabsheets. ist noch früh am morgen ;)

danke euch beiden!!

gruss, ims

Mario 15. Dez 2003 13:32

Re: kleiner Wizard, Vorgehen?
 
Zitat:

Zitat von s14
Hallo ims,
ich würde die PageControl Komponente mit TabSheets verwenden.
Die Reiter können auch ausgeblendet werden.

Wie geht das? Ich habe gerade mal ein PageControl eingefügt, aber ich finde die Option nicht, die Reiter auszublenden. Falls es wirklich geht, könnte ich das Buggy TNoteBook endlich mal in die Ecke stellen.

choose 15. Dez 2003 14:01

Re: kleiner Wizard, Vorgehen?
 
Sieh mal in der OH unter TTabSheet.TabVisible nach.

Mario 15. Dez 2003 14:09

Re: kleiner Wizard, Vorgehen?
 
Oh, dann hatte ich es falsch verstanden. Ich dachte man könnte nicht nur den Tabsheet ausblenden, sondern vielleicht auch den darum gemalten Reiter...

choose 15. Dez 2003 14:14

Re: kleiner Wizard, Vorgehen?
 
Zitat:

Zitat von Mario
Ich dachte man könnte nicht nur den Tabsheet ausblenden, sondern vielleicht auch den darum gemalten Reiter...

Bitte nicht Visible und TabVisible von TTabSheet verwechseln. Letztere Eigenschaft blendet den Reiter einer Seite aus, so dass man gezielt bei speziellen (aber auch allen) Seiten den Reiter verbergen kann.

Meine OH beschreibt daher treffend:
Zitat:

Zitat von OH
Die Eigenschaft TabVisible gibt an, ob das Register des TTabSheet-Objekts in dem TPageControl-Objekt sichtbar ist.

;)

Mario 15. Dez 2003 14:17

Re: kleiner Wizard, Vorgehen?
 
Ist schon klar. Ich suche eher eine Option der Richtung:
Delphi-Quellcode:
TPageControl.Style := tsNone;
Mit TabVisible habe ich schon gearbeitet.

choose 15. Dez 2003 14:21

Re: kleiner Wizard, Vorgehen?
 
Eine direkte Eigenschaft in TPageControl ist mir nicht bekannt.
Warum nicht in einer Schleife über alle Seiten (TPageControl.PageCount) die gewünschten Eigenschaft (TTabSheet.TabVisible) der jeweiligen Seite (TPagecontrol.Pages[]) setzen?

Mario 15. Dez 2003 14:27

Re: kleiner Wizard, Vorgehen?
 
Weil dann immer noch der Reiter zu sehen ist. Und genau das ist nicht gewünscht, schließlich soll der Anwender ja nicht sehen, dass er auf einem Karteireiter ist und natürlich werden so ein paar Pixel gespart :)

choose 15. Dez 2003 14:32

Re: kleiner Wizard, Vorgehen?
 
Offensichtlich bin ich nicht in der Lage, die Idee mit Worten darzustellen.
Probiere einfach einmal das:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  with PageControl1 do
    for i:= 0 to Pred(PageCount) do
      Pages[i].TabVisible:= False;
end;
Und Du wirst sehen, dass Du keine Reiter sehen wirst ;)

Mario 15. Dez 2003 14:41

Re: kleiner Wizard, Vorgehen?
 
Hmm, erst war ich begeistert, nur der Rahmen hat mich noch etwas gestört. Aber dann habe ich mal auf jedes TabSheet ein Label gemacht und nach dem Lauf Deiner Routine konnte ich kein Label sehen. Wo soll da der Sinn liegen? Da kann ich ja dem Anwender den Inhalt eines Tabsheets wieder nicht zeigen :freak:

choose 15. Dez 2003 14:47

Re: kleiner Wizard, Vorgehen?
 
Nach dem Durchlaufen der Schleife hat der Wert von PageControl1.ActivePageIndex den Wert -1 bzw PageControl.ActivePage ist nil. Weil Du ohnehin gezwungen bist, die Seiten programmseitig zu setzen (schließlich sind die Reiter ja nun verschwunden), sehe ich kein Problem, die gewünschte Seite nach der Schleife gemäß der Ablauflogik zu setzen...
Weil meine Ausführungen heute aber offensichtlich nicht das gelbe vom Ei sind, ich meine zB das:
Delphi-Quellcode:
PageControl1.ActivePageIndex:= 0;

Phoenix 15. Dez 2003 15:03

Re: kleiner Wizard, Vorgehen?
 
Erm... ja.

Die Logik um die tabSheets entsprechend anzusteuern muss dann natürlich selber an die Buttons gehängt werden. Vergass ich das zu erwähnen? ;-)

Das ist aber wie gesagt nur einmal so eine fitzelarbeit. Am ende hat man ein schönes Template für einen funktionierenden Wizzard :)

Mario 15. Dez 2003 15:18

Re: kleiner Wizard, Vorgehen?
 
Au ja, ich habe es gerade gesehen. Glücklicherweise kann man ja den PageIndex immer noch setzen! Cool, ich denke, dass wird mir bei Gelegenheit sicher mal helfen :xmas:

ims 15. Dez 2003 15:41

Re: kleiner Wizard, Vorgehen?
 
dachte das thema sei gegessen und wollte gleich eine weitere frage stellen da sehe ich dass mario genau das gleiche prob hatte, und die lösung auch schon da steht :-D

danke euch!!

gruss, ims


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:09 Uhr.

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