pagecontrol 取消页面切换

xiangzi8 2016-04-12 05:30:21
如何处理根据不同情况判断,取消pagecontrol的tabsheet切换?
...全文
443 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyhoo163 2016-04-13
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure PageControl1Changing(Sender: TObject;
      var AllowChange: Boolean);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  OnChange:boolean;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  OnChange := True;                  // 开启Page
  PageControl1.ActivePageIndex:=0;   // 进入第1面
end;

procedure TForm1.PageControl1Changing(Sender: TObject;
  var AllowChange: Boolean);
begin
  if onChange then
  begin
    AllowChange:=True;               // 开启
  end
  else begin
    AllowChange:=False;              // 锁住
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  PageControl1.ActivePageIndex:=1;   // 进入第2面
  OnChange := False;                 // 锁住Page
end;

end.
lyhoo163 2016-04-13
  • 打赏
  • 举报
回复
1、设置一全局变量 var onChange:Boolean; 2、OnChenging事件中 if onChange then begin AllowChange:=True; // 开启 end else begin AllowChange:=False; // 锁住 end; 3、按按钮事件,设置进入页面和是否锁住Page (1) PageControl1.ActivePageIndex:=1; // 进入第2面 OnChange := False; // 锁住Page (2) OnChange := True; // 开启Page PageControl1.ActivePageIndex:=0; // 进入第1面 [delphi=code] unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm1 = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; TabSheet3: TTabSheet; TabSheet4: TTabSheet; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure PageControl1Changing(Sender: TObject; var AllowChange: Boolean); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; OnChange:boolean; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin OnChange := True; // 开启Page PageControl1.ActivePageIndex:=0; // 进入第1面 end; procedure TForm1.PageControl1Changing(Sender: TObject; var AllowChange: Boolean); begin if onChange then begin AllowChange:=True; // 开启 end else begin AllowChange:=False; // 锁住 end; end; procedure TForm1.Button2Click(Sender: TObject); begin PageControl1.ActivePageIndex:=1; // 进入第2面 OnChange := False; // 锁住Page end; end. [/code]
doloopcn 2016-04-12
  • 打赏
  • 举报
回复
procedure TForm1.PageControl1Changing(Sender: TObject; var AllowChange: Boolean); begin if (你的判断条件) then AllowChange:=True else AllowChange:=Flase; end;
xiangzi8 2016-04-12
  • 打赏
  • 举报
回复
根据不同条件阻止tabsheet切换

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧