/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
D4: Nemmeste måde at lave 'wizard' på...
Fra : Jacob Volstrup


Dato : 13-09-01 16:10

Hej,

hvordan kan jeg lettest lave en 'wizard' i mine programmer? Det skal foregå
nogenlunde som ved en installation af et program, dvs. at man kan 'bladre'
frem og tilbage.
De skal bruges, så brugeren let kan føres gennem indstillingen af
programmerne.

Jeg har rodet lidt med det, og kan ikke rigtig komme på andet end at lave
det med enten paneler, eller MDI-forme. Alternativ til paneler kunne
selvfølgelig også være PageControl, og så på en eller anden måde skjule
sidernes tilhørende knapper (tabs).
Alligevel syntes jeg dog ikke at disse løsninger er helt tiltrækkende, de
virker for 'besværlige', sådan lige umiddelbart. Jeg skal jo skifte
onclick-event for knappen hele tiden, og det vil være svært at styre,
grafisk, ordentligt under design-delen.

Er der mon andre, som har prøvet at lege med udformning af wizards, eller
som lige hurtigt kan komme på en smart idé? Jeg er efterhånden helt flad for
idéer :(

På forhånd tak
Mvh Jacob Volstrup



 
 
Thomas Rose (13-09-2001)
Kommentar
Fra : Thomas Rose


Dato : 13-09-01 18:35

Hej Jacob,

uden at jeg selv har den store erfaring med implementation af Wizards, vil
jeg alligevel give et bud...

Har du prøvet at kigge under Win 3.1 tab'en... her kan du finde en Notebook
komponent der, så vidt jeg husker, kan indeholde forskellige sider med
forskellige kontroller, vel at mærke uden Tab's og lignende... du kan vælge
en side ved at sætte kontrollens ActivePage til et navn på en side...

Og i stedet for at skifte OnClick event-handler'en ud for hvert klik på
OK/Næste/Videre kunne du f.eks. oprette en TStringList med navnene på alle
siderne i din NoteBook kontrol... og lade en "indeks" peger (et heltal) pege
ind i denne TStringList på den aktuelle side... så kan du også nemt
implementere at det er muligt for brugeren at gå tilbage i forløbet, så at
sige. Herved skulle du blot i din ene OnClick handler sørge for at flytte
denne peger, og hente navnet på næste side fra StringList'en...

Håber du kan bruge (noget af) det...

Cheers,
Thomas



Thomas Eg Jørgensen (13-09-2001)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 13-09-01 21:00


"Thomas Rose" <trose@get2net.dk> wrote in message
news:3ba0ed97$0$89100$edfadb0f@dspool01.news.tele.dk...
> Hej Jacob,
> Og i stedet for at skifte OnClick event-handler'en ud for hvert klik på
> OK/Næste/Videre kunne du f.eks. oprette en TStringList med navnene på alle
> siderne i din NoteBook kontrol... og lade en "indeks" peger (et heltal)
pege
> ind i denne TStringList på den aktuelle side... så kan du også nemt
> implementere at det er muligt for brugeren at gå tilbage i forløbet, så at
> sige. Herved skulle du blot i din ene OnClick handler sørge for at flytte
> denne peger, og hente navnet på næste side fra StringList'en...

Så vidt jeg husker styres tnotebook's sider af et index af en slags.
PageIndex tror jeg den hedder(skyd mig ikke hvis det er forkert, jeg har
ikke delphi på denne maskine). Du kan bare lægge en til eller trække en fra
denne property hvis du vil bladre...

MVH
Thomas



Thomas Rose (14-09-2001)
Kommentar
Fra : Thomas Rose


Dato : 14-09-01 14:06

Ja, du har vist ret... så min TStringList idé kan erstattes med en simplere
løsning.

"Thomas Eg Jørgensen" <thomas@kontorbutikken.dk> wrote in message
news:9nr2s5$iil$1@news.cybercity.dk...
>
> "Thomas Rose" <trose@get2net.dk> wrote in message
> news:3ba0ed97$0$89100$edfadb0f@dspool01.news.tele.dk...
> Så vidt jeg husker styres tnotebook's sider af et index af en slags.
> PageIndex tror jeg den hedder(skyd mig ikke hvis det er forkert, jeg har
> ikke delphi på denne maskine). Du kan bare lægge en til eller trække en
fra
> denne property hvis du vil bladre...




Jacob Volstrup (13-09-2001)
Kommentar
Fra : Jacob Volstrup


Dato : 13-09-01 20:53

> Håber du kan bruge (noget af) det...

Jo tak, jeg vil da prøve at kigge på det

Mvh Jacob Volstrup



Thomas Due (14-09-2001)
Kommentar
Fra : Thomas Due


Dato : 14-09-01 07:56

[SNIP]
> Er der mon andre, som har prøvet at lege med udformning af wizards, eller
> som lige hurtigt kan komme på en smart idé? Jeg er efterhånden helt flad for
> idéer :(
>
Umiddelbart vil jeg mene at du har to muligheder. Du kan anvende en
pagecontrol og så skjule fanerne med TabVisible på de enkelte faneblade.
Desuden skal du så f.eks. give alle fanebladene caption efter deres
rækkefølgenummer. '1', '2', '3', osv.

Med hensyn til din OnClick på frem og tilbage knapperne, er det intet
problem at bladre frem og tilbage, herunder er en stump kode som skal
sættes i frem knappens OnClick.

procedure TForm1.btnFremClick(Sender: TObject);
begin
if pgcSider.ActivePage.Caption = '1' then // Hvis første side,
btnTilbage.Enabled := TRUE; // Sæt tilbage knap aktiv

pgcSider.SelectNextPage(true, false); // Vælg næste side, hvis første
// argument FALSE, gå tilbage
// Anden argument SKAL være FALSE.

if pgcSider.ActivePage.Caption = '3' then // Hvis sidste side,
btnFrem.Enabled := FALSE; // sæt Frem knap in aktiv
end;

I eksemplet er der 3 sider på min pagecontrol.

Samme kode kan bruge i tilbage knappens OnClick. Der skal selvfølgelig
byttes rundt på de to if sætninger, og der skal byttes rundt på true og
false.

Det eneste problem der så er tilbage, er at der jo er border på en
pagecontrol, og den kan man ikke lige slå fra, men der er måske nogle
lyse hoveder her, som kan hjælpe med det.

Alternativet er jo en række næsten identiske forme som du så bladre frem
og tilbage i. Der er overstående løsning jo langt mere elegant.

Mvh
Thomas Due

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste