{----------------------------------------------------------------------------- Unit Name: WizardForm Purpose : Wizard to ask options needed for DemoWWW Author : Vesa Lappalainen Date : 27.1.2002 Changed : Todo : Table driven what-next-tab - in every TTabSheet the property TabVisible is set false, so that tehre is no tabs visible -----------------------------------------------------------------------------} unit WizardForm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, WizardFrame, savepos,OptionButton, StdCtrls, ExtCtrls, OptionsForm, kinicomp, kEditPnl; type TFormWizard = class(TForm) SavePos1: TSavePos; PageControl: TPageControl; TabSheetType: TTabSheet; FrameWizardTyyppi: TFrameWizard; TabSheetNr: TTabSheet; FrameWizardNr: TFrameWizard; TabSheetFTP: TTabSheet; FrameWizardFTP: TFrameWizard; TabSheetPasswd: TTabSheet; FrameWizardPassWd: TFrameWizard; RGTyyppi: TRadioGroup; CBNr: TComboBox; PanelNr: TPanel; LabelNr: TLabel; PanelFTP: TPanel; CBFtp: TCheckBoxIni; TabSheetEmail: TTabSheet; TabSheetKorppi: TTabSheet; FrameWizardEmail: TFrameWizard; FrameWizardKorppiin: TFrameWizard; Panel1: TPanel; EditPanelPasswd: TEditPanel; EditPanelPasswdEdit: TEdit; Panel2: TPanel; CBDiffEmail: TCheckBoxIni; Panel3: TPanel; MemoKorppi: TMemo; TabSheetCourse: TTabSheet; FrameWizardCourse: TFrameWizard; Panel4: TPanel; TabSheetHT: TTabSheet; FrameWizardHT: TFrameWizard; TabSheetURL: TTabSheet; FrameWizardUrl: TFrameWizard; Panel5: TPanel; EditPanelURL: TEditPanel; EditPanelURLEdit: TEdit; EditCourse: TCtrlPanel; EditCourseComboBox: TComboBox; procedure FormCreate(Sender: TObject); procedure FrameWizardTyyppiButtonNextClick(Sender: TObject); procedure RGTyyppiClick(Sender: TObject); procedure CBNrChange(Sender: TObject); procedure FrameWizardNrButtonNextClick(Sender: TObject); procedure FrameWizardFTPButtonNextClick(Sender: TObject); procedure PageControlChange(Sender: TObject); procedure CBDiffEmailClick(Sender: TObject); procedure EditPanelPasswdEditChange(Sender: TObject); procedure FrameWizardEmailButtonNextClick(Sender: TObject); procedure EditPanelCourseEditChange(Sender: TObject); procedure FrameWizardHTButtonPrevClick(Sender: TObject); procedure FrameWizardPassWdButtonNextClick(Sender: TObject); procedure FrameWizard2ButtonNextClick(Sender: TObject); procedure FrameWizardKorppiinButtonNextClick(Sender: TObject); procedure FrameWizardCourseButtonNextClick(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure MemoKorppiClick(Sender: TObject); private FormOptions : TFormOptions; TabFTP : TTabSheet; TabHTJatko : TTabSheet; Stack : TWizardStack; procedure SetType; procedure Init; procedure SetNumber; procedure SetFTP; procedure ToKorppi; procedure ToUrl; procedure ToHT; public { Public declarations } end; var FormWizard: TFormWizard; function ShowWizard(fo:TFormOptions):boolean; implementation uses kIniSave, Clipbrd; {$R *.dfm} function ShowWizard(fo:TFormOptions):boolean; var f:TFormWizard; begin f := nil; try Result := false; f := TFormWizard.Create(nil); f.FormOptions := fo; f.Init; Result := f.ShowModal = mrOK; finally f.Free; end; end; procedure TFormWizard.Init; begin RGTyyppi.ItemIndex := RGTyyppi.Items.IndexOf(FormOptions.DemoType); CbNr.ItemIndex := Round(FormOptions.DemoNr)-1; CBFtp.Checked := FormOptions.EditMode.Text = 'f'; PageControl.ActivePageIndex := 0; TabFTP := TabSheetFTP; TabHTJatko := TabSheetHT; FrameWizardEmail.MemoText.Lines[1] := FormOptions.Change(FrameWizardEmail.MemoText.Lines[1]); EditPanelPasswd.Text := FormOptions.EditPasswd.Text; EditCourseComboBox.Items.CommaText := FormOptions.EditCourses.Text; EditCourseComboBox.Text := FormOptions.EditCourse.Text; // EditPanelUrl.Text := FormOptions.EditDemoWWW.Text; end; procedure TFormWizard.SetType; begin FormOptions.DemoType := RGTyyppi.Items[RGTyyppi.ItemIndex]; TabSheetNr.Caption := FormOptions.DemoType; if ( FormOptions.DemoType = 'HT' ) then PageControl.ActivePage := TabSheetFTP else PageControl.ActivePage := TabSheetNr; end; procedure TFormWizard.SetNumber; begin FormOptions.DemoNr := CBNr.ItemIndex+1; PageControl.ActivePage := TabFtp; end; procedure TFormWizard.SetFTP; begin FormOptions.EditMode.Text := ''; if ( CBFtp.Checked ) then begin FormOptions.EditMode.Text := 'f'; end; if ( FormOptions.DemoType = 'HT' ) then begin PageControl.ActivePage := TabSheetURL; ToUrl; end else PageControl.ActivePage := TabSheetPasswd; end; procedure TFormWizard.ToUrl; begin FrameWizardUrl.MemoText.Lines[4] := FormOptions.Change('www.cc.jyu.fi/~%USER%'); ///%COURSE%/%PASSWD%') if ( CBFtp.Checked ) then exit; if ( FormOptions.DemoType = 'HT' ) then PageControl.ActivePage := TabSheetHT else PageControl.ActivePage := TabSheetEmail; end; procedure TFormWizard.ToKorppi; begin FormOptions.EditPasswd.Text := EditPanelPasswd.Text; if ( not CBFtp.Checked ) then FormOptions.EditDemoWWW.Text := EditPanelPasswd.Text else FormOptions.EditDemoWWW.Text := FormOptions.change(EditPanelUrl.Text + '/%COURSE%/%PASSWD%'); MemoKorppi.Lines[0] := FormOptions.EditPasswd.Text; if ( CBDiffEmail.Checked ) then begin if ( not CBFtp.Checked ) then FormOptions.EditDemoWWW.Text := FormOptions.WWWUrl; MemoKorppi.Lines[0] := FormOptions.EditDemoWWW.Text; end; if ( CBFtp.Checked ) then MemoKorppi.Lines[0] := FormOptions.EditDemoWWW.Text; IniSaveSaveAll(FormOptions.TabUserOptions); PageControl.ActivePage := TabSheetKorppi; end; procedure TFormWizard.ToHT; begin if ( CBFtp.Checked ) then FormOptions.EditDemoWWW.Text := FormOptions.change(EditPanelUrl.Text + '/%COURSE%/%PASSWD%'); IniSaveSaveAll(FormOptions); PageControl.ActivePage := TabSheetHT; end; procedure TFormWizard.FormCreate(Sender: TObject); var t : TTabSheet; i,j:integer; f: TFrameWizard; c:TControl; begin Stack := TWizardStack.Create; // Siirretään Tabbien muut controllit Framejen sisälle. for i:=0 to PageControl.PageCount-1 do begin t := PageControl.Pages[i]; f := nil; c := nil; for j:=0 to t.ControlCount-1 do begin if ( t.Controls[j] is TFrameWizard ) then begin f := TFrameWizard(t.Controls[j]); f.Stack := Stack; end else c := t.Controls[j]; end; if ( f <> nil ) and ( c <> nil ) then c.Parent := f.PanelExtra; end; end; procedure TFormWizard.FormDestroy(Sender: TObject); begin Stack.Free; end; procedure TFormWizard.FrameWizardTyyppiButtonNextClick(Sender: TObject); begin SetType; end; procedure TFormWizard.RGTyyppiClick(Sender: TObject); begin SetType; end; procedure TFormWizard.CBNrChange(Sender: TObject); begin SetNumber; end; procedure TFormWizard.FrameWizardNrButtonNextClick(Sender: TObject); begin SetNumber; end; procedure TFormWizard.FrameWizardFTPButtonNextClick(Sender: TObject); begin SetFTP; end; procedure TFormWizard.PageControlChange(Sender: TObject); begin if ( PageControl.ActivePage = TabSheetFTP ) then PageControl.ActivePage := TabSheetPasswd; if ( PageControl.ActivePage = TabSheetKorppi ) then ToKorppi; if ( PageControl.ActivePage = TabSheetURL ) then ToUrl; end; procedure TFormWizard.CBDiffEmailClick(Sender: TObject); begin // Tällä suojaudutaan rekursiolta, joka tulee kun CB asetetaan alussa. if ( PageControl.ActivePage = TabSheetEmail ) then ToKorppi; end; procedure TFormWizard.EditPanelPasswdEditChange(Sender: TObject); var s:string; i,p:integer; const leagal = '0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; begin s := EditPanelPasswd.Text; i := 1; while ( i <= Length(s) ) do begin p := Pos(s[i],leagal); if ( p = 0 ) then Delete(s,i,1) else Inc(i); end; if ( s <> EditPanelPasswd.Text ) then begin i := EditPanelPasswdEdit.SelStart; EditPanelPasswd.Text := s; EditPanelPasswdEdit.SelStart := i; end; FormOptions.EditPasswd.Text := EditPanelPasswd.Text; end; procedure TFormWizard.FrameWizardEmailButtonNextClick(Sender: TObject); begin ToKorppi; end; procedure TFormWizard.EditPanelCourseEditChange(Sender: TObject); begin FormOptions.EditCourse.Text := EditCourseComboBox.Text; end; procedure TFormWizard.FrameWizardHTButtonPrevClick(Sender: TObject); begin PageControl.ActivePage := TabSheetType; end; procedure TFormWizard.FrameWizardPassWdButtonNextClick(Sender: TObject); begin if ( CBFtp.Checked ) then begin ToUrl; PageControl.ActivePage := TabSheetURL end else // PageControl.ActivePage := TabSheetEmail; ToKorppi; end; procedure TFormWizard.FrameWizard2ButtonNextClick(Sender: TObject); begin if ( FormOptions.DemoType = 'HT' ) then ToHT else ToKorppi; end; procedure TFormWizard.FrameWizardKorppiinButtonNextClick(Sender: TObject); begin FrameWizardKorppiin.ButtonNextClick(Sender); end; procedure TFormWizard.FrameWizardCourseButtonNextClick(Sender: TObject); begin FrameWizardCourse.ButtonNextClick(Sender); end; procedure TFormWizard.MemoKorppiClick(Sender: TObject); begin Clipboard.AsText := MemoKorppi.Text; end; end.