TpageControl不能在FormCreate设置ActivePage ( 积分: 100 )

  • 主题发起人 主题发起人 月满C楼
  • 开始时间 开始时间

月满C楼

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TfrmRec.FormCreate(Sender: TObject);
begin
if FlagRec=0 then
pageRec.ActivePage:=InQueue
else if FlagRec=1 then
pageRec.ActivePage:=keep
else if FlagRec=2 then
pageRec.ActivePage:=listened
else if FlagRec=3 then
pageRec.ActivePage:=unHandled;
end;

FormActive事件中设置pageRec.ActivePage也看不到效果

pageRec.ActivePageIndex:=n;试试同样失败,有大虾指点下吗?
 
瞎说,怎么可能不行呢???
Create事件是在Form上面所有控件创建后才执行的.一定是你其他地方出问题了
自己在好好找找原因,一步一步跟踪下试试?
 
不可能,我在 D7, D2006 中试都正常。
 
你的代码是否经过QQ发送.剪切到当前delphi编辑区的?
自己重新建立个简单的form试试.
不要剪贴代码,自己费点事手工写下再试试
 
貌似有的控件确实不能在FORMCREATE里弄,所以我一般都写到FORMSHOW里,这时上面的控件一定都创建好了
 
我在FormCreate时弄的,完全没有问题
 
好吧,我从项目中粘上来,FlagRec为全局变量
procedure TfrmRec.FormCreate(Sender: TObject);
begin
SgdListened.Cells[0,0] := '来电号码';
SgdListened.Cells[1,0] := '来电单位';
SgdListened.Cells[2,0] := '来电人';
SgdListened.Cells[3,0] := '来电时间';
SgdListened.Cells[4,0] := '备注';

sgdInQueue.Cells[0,0] := '来电号码';
sgdInQueue.Cells[1,0] := '来电单位';
sgdInQueue.Cells[2,0] := '来电人';
sgdInQueue.Cells[3,0] := '来电时间';
sgdInQueue.Cells[4,0] := '备注';

sgdKeep.Cells[0,0] := '来电号码';
sgdKeep.Cells[1,0] := '来电单位';
sgdKeep.Cells[2,0] := '来电人';
sgdKeep.Cells[3,0] := '来电时间';
sgdKeep.Cells[4,0] := '备注';

sgdUnhandle.Cells[0,0] := '来电号码';
sgdUnhandle.Cells[1,0] := '来电单位';
sgdUnhandle.Cells[2,0] := '来电人';
sgdUnhandle.Cells[3,0] := '来电时间';
sgdUnhandle.Cells[4,0] := '备注';
if FlagRec=0 then
pageRec.ActivePageIndex:=1
else if FlagRec=1 then
pageRec.ActivePageIndex:=2
else if FlagRec=2 then
pageRec.ActivePageIndex:=0
else if FlagRec=3 then
pageRec.ActivePageIndex:=3;
end;
 
不可能,肯定是你其他地方设置错误了,仔细找找
 
找到问题所在了
 
在创建的时候FlagRec先初始化了没?
 
写得那么麻烦干什么,两行代码就解决问题了:
flagrec := n //初始化页序标记(如果不初始化,系统自动初始化为0)
PageRec.ActivePageIndex := FlagRec;//如果不初始化FlagRec,则启动时显示第一个页

另外,在PageControl的OnChange事件中写上如下代码:
FlagRec := PageControl.ActivePageIndex;

其实你不必使用专门的全局变量来保存当前页的页序,可以直接用PageControl的Tag属性来替代FlagRec(每个Vcl控件都有一个未使用的整数类型的Tag属性),这样更安全
 
多人接受答案了。
 
后退
顶部