git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@46 b6239004-a887-0f4b-9937-50029ccdca16
260 lines
7.2 KiB
ObjectPascal
260 lines
7.2 KiB
ObjectPascal
unit uEWWizard;
|
|
|
|
{----------------------------------------------------------------------------}
|
|
{ RemObjects' Hydra - IDE Library }
|
|
{ }
|
|
{ compiler: Delphi 6 and up, Kylix 3 and up }
|
|
{ platform: Win32, Linux }
|
|
{ }
|
|
{ (c)opyright RemObjects Software. all rights reserved. }
|
|
{ }
|
|
{ Using this code requires a valid license of Hydra }
|
|
{ which can be obtained at http://www.remobjects.com. }
|
|
{----------------------------------------------------------------------------}
|
|
|
|
{$I Everwood.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
{$IFDEF FPC}LCLIntf, LResources,{$ENDIF}
|
|
SysUtils, Classes, Graphics, Controls, Forms,
|
|
Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls;
|
|
|
|
type
|
|
TEWWizardForm = class(TForm)
|
|
Panel1: TPanel;
|
|
Image1: TImage;
|
|
Label1: TLabel;
|
|
Label2: TLabel;
|
|
Bevel1: TBevel;
|
|
pc_Pages: TPageControl;
|
|
ts_Welcome: TTabSheet;
|
|
ts_Finish: TTabSheet;
|
|
Panel2: TPanel;
|
|
btn_Finish: TBitBtn;
|
|
btn_Cancel: TBitBtn;
|
|
Label3: TLabel;
|
|
Label4: TLabel;
|
|
btn_Next: TBitBtn;
|
|
btn_Back: TBitBtn;
|
|
Label5: TLabel;
|
|
Label6: TLabel;
|
|
lv_Options: TListView;
|
|
procedure btn_NextClick(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure btn_BackClick(Sender: TObject);
|
|
procedure FormDestroy(Sender: TObject);
|
|
private
|
|
fInEnterPage: boolean;
|
|
fActiveControl: TWinControl;
|
|
fValues: TStrings;
|
|
fNextPage: integer;
|
|
fPreviousPage: integer;
|
|
function GetActiveControl: TWinControl;
|
|
procedure SetActiveControl(const Value: TWinControl);
|
|
function GetNextPage: integer;
|
|
function GetPreviousPage: integer;
|
|
protected
|
|
procedure OnEnterPage(aPage:TTabSheet; aMovingForward:boolean); virtual;
|
|
procedure OnLeavePage(aPage:TTabSheet; aMovingForward:boolean); virtual;
|
|
procedure AfterEnterPage(aPage:TTabSheet; aMovingForward:boolean); virtual;
|
|
|
|
function CleanPascalString(const aString: string): string;
|
|
public
|
|
property Values:TStrings read fValues;
|
|
function Execute:boolean; overload;
|
|
class function Execute(aOwner: TComponent): boolean; overload;
|
|
property ActiveControl: TWinControl read GetActiveControl write SetActiveControl;
|
|
property NextPage: integer read GetNextPage write fNextPage;
|
|
property PreviousPage: integer read GetPreviousPage write fPreviousPage;
|
|
end;
|
|
|
|
implementation
|
|
|
|
// uses FileCtrl;
|
|
{$IFNDEF FPC}
|
|
{$R *.dfm}
|
|
{$ENDIF FPC}
|
|
|
|
{ THYNewProjectWizardForm }
|
|
|
|
procedure TEWWizardForm.FormCreate(Sender: TObject);
|
|
var
|
|
i: integer;
|
|
begin
|
|
for i := 0 to ComponentCount-1 do begin
|
|
if Components[i] is TTabSheet then TTabSheet(Components[i]).TabVisible := false;
|
|
end;
|
|
|
|
fValues := TStringList.Create();
|
|
|
|
Height := Height-16;
|
|
pc_Pages.ActivePageIndex := 0;
|
|
OnEnterPage(pc_Pages.Pages[0],true);
|
|
|
|
fNextPage := -1;
|
|
fPreviousPage := -1;
|
|
end;
|
|
|
|
procedure TEWWizardForm.FormDestroy(Sender: TObject);
|
|
begin
|
|
FreeAndNil(fValues);
|
|
end;
|
|
|
|
function TEWWizardForm.CleanPascalString(const aString:string):string;
|
|
begin
|
|
result := aString;
|
|
result := StringReplace(result,'''','''''',[rfReplaceAll]); { replace quotes with double quotes }
|
|
result := StringReplace(result,#13#10,'''#13#10''',[rfReplaceAll]);
|
|
result := ''''+result+'''';
|
|
end;
|
|
|
|
|
|
procedure TEWWizardForm.btn_NextClick(Sender: TObject);
|
|
begin
|
|
if pc_Pages.ActivePageIndex+1 < pc_Pages.PageCount then begin
|
|
fInEnterPage := true;
|
|
try
|
|
OnLeavePage(pc_Pages.Pages[pc_Pages.ActivePageIndex],true);
|
|
OnEnterPage(pc_Pages.Pages[NextPage],true);
|
|
finally
|
|
fInEnterPage := false;
|
|
end;
|
|
fPreviousPage := pc_Pages.ActivePageIndex;
|
|
pc_Pages.ActivePageIndex := NextPage;
|
|
if Assigned(fActiveControl) then begin
|
|
inherited ActiveControl := fActiveControl;
|
|
fActiveControl := nil;
|
|
end;
|
|
end;
|
|
fNextPage := -1;
|
|
AfterEnterPage(pc_Pages.ActivePage, true);
|
|
end;
|
|
|
|
procedure TEWWizardForm.btn_BackClick(Sender: TObject);
|
|
begin
|
|
if pc_Pages.ActivePageIndex > 0 then begin
|
|
fInEnterPage := true;
|
|
try
|
|
OnLeavePage(pc_Pages.Pages[pc_Pages.ActivePageIndex],false);
|
|
OnEnterPage(pc_Pages.Pages[PreviousPage],false);
|
|
finally
|
|
fInEnterPage := false;
|
|
end;
|
|
pc_Pages.ActivePageIndex := PreviousPage;
|
|
if Assigned(fActiveControl) then begin
|
|
inherited ActiveControl := fActiveControl;
|
|
fActiveControl := nil;
|
|
end;
|
|
end;
|
|
fNextPage := -1;
|
|
fPreviousPage := -1;
|
|
AfterEnterPage(pc_Pages.ActivePage, false);
|
|
end;
|
|
|
|
|
|
procedure TEWWizardForm.OnEnterPage(aPage: TTabSheet; aMovingForward: boolean);
|
|
var
|
|
i: integer;
|
|
begin
|
|
{$IFDEF FPC}
|
|
if aMovingForward then btn_Finish.Visible := false else // for prevent warnings
|
|
{$ENDIF}
|
|
btn_Finish.Visible := false;
|
|
btn_Next.Visible := true;
|
|
if aPage = ts_Welcome then begin
|
|
btn_Back.Enabled := false;
|
|
btn_Next.Enabled := true;
|
|
ActiveControl := btn_Next;
|
|
end
|
|
else if aPage = ts_Finish then begin
|
|
{$IFNDEF FPC}
|
|
lv_Options.Items.BeginUpdate();
|
|
{$ENDIF}
|
|
try
|
|
lv_Options.Items.Clear();
|
|
for i := 0 to Values.Count-1 do begin
|
|
with lv_Options.Items.Add() do begin
|
|
Caption := Values.Names[i];
|
|
SubItems.Add(Values.Values[Values.Names[i]]);
|
|
end;
|
|
end; { for }
|
|
btn_Finish.Visible := true;
|
|
btn_Finish.Enabled := true;
|
|
btn_Next.Visible := false;
|
|
ActiveControl := btn_Finish;
|
|
finally
|
|
{$IFNDEF FPC}
|
|
lv_Options.Items.EndUpdate();
|
|
{$ENDIF}
|
|
end;
|
|
end
|
|
else { default for custom added pages } begin
|
|
btn_Back.Enabled := true;
|
|
btn_Next.Enabled := true;
|
|
end;
|
|
end;
|
|
|
|
procedure TEWWizardForm.OnLeavePage(aPage: TTabSheet; aMovingForward: boolean);
|
|
begin
|
|
end;
|
|
|
|
function TEWWizardForm.Execute: boolean;
|
|
begin
|
|
result := (ShowModal() = 1); // idOk=1
|
|
end;
|
|
|
|
class function TEWWizardForm.Execute(aOwner: TComponent): boolean;
|
|
begin
|
|
with self.Create(aOwner) do try
|
|
result := Execute();
|
|
finally
|
|
Free();
|
|
end;
|
|
end;
|
|
|
|
function TEWWizardForm.GetActiveControl: TWinControl;
|
|
begin
|
|
if Assigned(fActiveControl) then
|
|
result := fActiveControl
|
|
else
|
|
result := inherited ActiveControl;
|
|
end;
|
|
|
|
procedure TEWWizardForm.SetActiveControl(const Value: TWinControl);
|
|
begin
|
|
if fInEnterPage then begin
|
|
fActiveControl := Value;
|
|
end
|
|
else begin
|
|
inherited ActiveControl := Value;
|
|
fActiveControl := nil;
|
|
end;
|
|
end;
|
|
|
|
function TEWWizardForm.GetNextPage: integer;
|
|
begin
|
|
Result := fNextPage;
|
|
if result = -1 then result := pc_Pages.ActivePageIndex+1;
|
|
end;
|
|
|
|
function TEWWizardForm.GetPreviousPage: integer;
|
|
begin
|
|
Result := fPreviousPage;
|
|
if result = -1 then result := pc_Pages.ActivePageIndex-1;
|
|
end;
|
|
|
|
procedure TEWWizardForm.AfterEnterPage(aPage: TTabSheet;
|
|
aMovingForward: boolean);
|
|
begin
|
|
|
|
end;
|
|
|
|
{$IFDEF FPC}
|
|
initialization
|
|
{$i uEWWizard.lrs}
|
|
{$ENDIF}
|
|
end.
|
|
|