PCShopper.ActivePage := TSShopper//为什么就是不跳回TSShopper啊(50分)

  • 主题发起人 美国提子
  • 开始时间

美国提子

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TShopperEditForm.TSScoutShow(Sender: TObject);//TSScout是TabSheet
begin
inherited;
if SMDMForm.adoqryShopper.State in [dsEdit,dsInsert] then
PCShopper.ActivePage := TSShopper//为什么就是不跳回TSShopper啊
else
.....
end;
 
procedure TForm1.PCShopperChange(Sender: TObject); TPageControl的OnChange事件
begin
inherited;
if PCShopper.ActivePage=TSscout then //当TSscout显示时执行
begin
if SMDMForm.adoqryShopper.State in [dsEdit,dsInsert] then
PCShopper.ActivePage := TSShopper//为什么就是不跳回TSShopper啊
else
.....
end;
end;
 
他正在执行Show呢,似乎不能执行别的。
在PageControl的OnChangeing里面勉强凑乎写吧。
 
楼上两位,都不行啊
 
例子如下:
procedure TForm1.PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
begin
if Application.MessageBox('让切换吗?', '询问', 32 + mb_YesNo) = mrYes then
AllowChange := True
else
AllowChange := False;
end;

使用这个函数的时候,当不是使用
PageControl1.ActivePageIndex := 0;
PageControl1.ActivePage := TabSheet1;
TabSheet1.Show;
之类的切换,而是使用鼠标点击或者Ctrl+Tab切换的时候,代码有效。
但是,你直接使用代码出发就不好用了。所以需要你在使用代码触发前判断条件是否满足,然后再Show出来。
诚然,使用TabSheet1的OnShow能够截获所有的显示事件,但是在那里面似乎真的不能切换到另一个页面,
就类似在OnCreate里面不能退出一样(也许是不恰当的类比)
 
多人接受答案了。
 

Similar threads

顶部