Hvordan laver men en Wizard som når den er færdig alt det man har skrevet i de forskelige forms/ting bliver gemt systematisk i en ini fil?
Uha, det er lidt af en ordre, men vi kan da gøre et forsøg:
Hvis du opretter en ny form og placerer f.eks. en TPageControl på den, samt tre knapper (Forrige, Næste og Afbryd).
Opret et antal faner på din pagecontrol svarende til det antal sider du skal bruge i din wizard. Fordel de nødvendige komponenter på de respektive sider.
Når du så trykker "Afslut" gemmer du værdierne af alle kontrollerne ned i ini filen.
Eks (i delvis pseudo kode):
// Klargør kontroller
procedure TForm1.FormCreate(Sender : TObject);
var
idx : Integer;
begin
PageControl1.ActivePageIndex := 0;
btnPrev.Enabled := False;
for idx := 0 to PageControl1.PageCount - 1 do
PageControl.Pages[idx].TabVisible := False;
// Initialiser alle kontroller.
end;
// "Forrige" knap
procedure TForm1.btnPrev(Sender : TObject);
begin
if PageControl1.ActivePageIndex > 0 then
PageControl1.ActivePageIndex := PageControl1.ActivePageIndex - 1;
if PageControl1.ActivePageIndex = 0 then
btnPrev.Enabled := False;
if PageControl1.ActivePageIndex < (PageControl1.PageCount - 1) then
btnNext.Caption := 'Næste'
else
btnNext.Caption := 'Færdig';
end;
// "Næste" knap
procedure TForm1.btnNext(Sender : TObject);
begin
if PageControl1.ActivePageIndex < PageControl1.PageCount - 1 then
begin
PageControl1.ActivePageIndex := PageControl1.ActivePageIndex + 1;
if PageControl1.ActivePageIndex > 0 then
btnPrev.Enabled := True;
if PageControl1.ActivePageIndex = (PageControl1.PageCount - 1) then
btnNext.Caption := 'Færdig'
else
btnNext.Caption := 'Næste';
end
else
SaveSettings;
end;
procedure TForm1.SaveSettings;
begin
// Her gemmer du så værdien af alle relevante kontroller ned i ini filen.
with TIniFile.Create('C:\\wizard.ini') do
try
WriteString('SYSTEM', 'Navn', EditNavn.Text);
WriteInteger('SYSTEM', 'Alder', SpinAlder.Value);
....
finally
Free;
end;
end;
Det er da én måde at gøre det på. Der er ganske givet flere, og denne metode skal da også finpudses lidt, men det er grundstenen i én metode til at lave en wizard.
--
Thomas Due
Software developer
udvikleren.dk - ASP redaktør
tdue@mail.dk