5,388
社区成员
发帖
与我相关
我的任务
分享
unit FormGuide;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, dxSkinsCore, dxSkinsDefaultPainters, dxSkinscxPCPainter, Menus,
cxLookAndFeelPainters, StdCtrls, cxButtons, cxPC, cxControls, ExtCtrls,
jpeg;
type
TFormGuideCustom = class(TForm)
cxPageControlGuide: TcxPageControl;
cxTabSheet1: TcxTabSheet;
cxButton1: TcxButton;
ButtonPrior: TcxButton;
ButtonNext: TcxButton;
cxButtonExecute: TcxButton;
Image1: TImage;
procedure ButtonPriorClick(Sender: TObject);
procedure ButtonNextClick(Sender: TObject);
procedure cxButtonExecuteClick(Sender: TObject);
procedure FormShow(Sender: TObject);
private
FFinalExecute: boolean;
function GetStepIndex: integer;
protected
procedure MoveTo(Value: integer);
procedure SetButton;
public
constructor Create(AOwner: TComponent); override;
procedure Init; virtual;
procedure doExecute; virtual; abstract;
procedure Next; virtual;
procedure Prior; virtual;
property StepIndex: integer read GetStepIndex;
property FinalExecute: boolean read FFinalExecute write FFinalExecute default True;
end;
var
FormGuideCustom: TFormGuideCustom;
implementation
{$R *.dfm}
{ TFormGuideCustom }
procedure TFormGuideCustom.Init;
var
i: integer;
vPageCount: integer;
begin
vPageCount := cxPageControlGuide.PageCount;
if vPageCount >= 2 then
for i := vPageCount - 1 downto 1 do
cxPageControlGuide.Pages[i].TabVisible := false;
cxPageControlGuide.ActivePageIndex := 0;
SetButton;
end;
procedure TFormGuideCustom.MoveTo(Value: integer);
var
vIndex: integer;
begin
vIndex := cxPageControlGuide.ActivePageIndex + Value;
cxPageControlGuide.ActivePageIndex := vIndex;
cxPageControlGuide.Pages[vIndex].TabVisible := true;
cxPageControlGuide.Pages[vIndex - Value].TabVisible := false;
SetButton;
end;
procedure TFormGuideCustom.Next;
begin
MoveTo(1);
end;
procedure TFormGuideCustom.Prior;
begin
MoveTo(-1);
end;
procedure TFormGuideCustom.SetButton;
begin
ButtonPrior.Enabled := cxPageControlGuide.ActivePageIndex > 0;
ButtonNext.Enabled := (cxPageControlGuide.ActivePageIndex < (cxPageControlGuide.PageCount - 1));
if FFinalExecute then
cxButtonExecute.Enabled := not ButtonNext.Enabled
else
cxButtonExecute.Enabled := ButtonPrior.Enabled;
end;
procedure TFormGuideCustom.ButtonPriorClick(Sender: TObject);
begin
Prior;
end;
procedure TFormGuideCustom.ButtonNextClick(Sender: TObject);
begin
Next;
end;
procedure TFormGuideCustom.cxButtonExecuteClick(Sender: TObject);
begin
doExecute;
end;
procedure TFormGuideCustom.FormShow(Sender: TObject);
begin
Init;
end;
function TFormGuideCustom.GetStepIndex: integer;
begin
result := cxPageControlGuide.ActivePageIndex;
end;
constructor TFormGuideCustom.Create(AOwner: TComponent);
begin
inherited;
FFinalExecute := True;
end;