Delphi MDI窗体显示问题
我用Rzpagecontrol控制MDI窗体的切换管理等,当我的MDI窗体没有空间或者只有Lable等控件时,MDI窗体间是可以自由切换的,但如果MDI窗体添加了butt...
我用Rzpagecontrol控制MDI窗体的切换管理等,当我的MDI窗体没有空间或者只有Lable等控件时,MDI窗体间是可以自由切换的,但如果MDI窗体添加了button,Rzpagecontrol等控件时,就只能切换没有这些空间的MDI窗体了,请问一些这是真么原因造成的啊,求解。
//这是Rzpagecontrol切换的代码
procedure TFMain.RzPageControl1Change(Sender: TObject);
var
i:integer;
begin
if RzPagecontrol1.ActivePage.ControlCount<1 then
begin
fcpanel2.Visible:=true;
end
else
begin
For i := 0 to RzPageControl1.ActivePage.controlcount -1 do
begin
if RzPageControl1.ActivePage.Controls[i] is TForm then
begin
if Tform(RzPageControl1.Activepage.Controls[i]).canfocus then
begin
TForm(RzPageControl1.ActivePage.Controls[i]).setFocus;
end;//if
end;//if
end;//for
end;//if
end; 展开
//这是Rzpagecontrol切换的代码
procedure TFMain.RzPageControl1Change(Sender: TObject);
var
i:integer;
begin
if RzPagecontrol1.ActivePage.ControlCount<1 then
begin
fcpanel2.Visible:=true;
end
else
begin
For i := 0 to RzPageControl1.ActivePage.controlcount -1 do
begin
if RzPageControl1.ActivePage.Controls[i] is TForm then
begin
if Tform(RzPageControl1.Activepage.Controls[i]).canfocus then
begin
TForm(RzPageControl1.ActivePage.Controls[i]).setFocus;
end;//if
end;//if
end;//for
end;//if
end; 展开
2个回答
展开全部
看你的代码,我的理解是你在 Rzpagecontrol 嵌入了窗体,然后再Rzpagecontrol的页面切换后,相应的窗体也要激活(即设置焦点setFocus)
问题可能就出在设置焦点上,因为 窗体获得焦点后,窗体上的TabStop=0的TWinControl类控件也将同时获得焦点,Lable不属于TWinControl类控件所以没有焦点,而TButton是属于TWinControl类控件。
在 Rzpagecontrol 的 Change 事件中,可能Rzpagecontrol页面并没有真正切换完成,目标页面还处于隐藏状态,delphi是绝对不能对隐藏页面设置焦点的(这一点我以前碰得过)。
为了证明我的想法是否正确,你可以在窗体中加入一个Image控件或其它不能获取焦点的控件,看看是不是正常。
另外,你也可以注释掉这一行再试试:
TForm(RzPageControl1.ActivePage.Controls[i]).setFocus;
问题可能就出在设置焦点上,因为 窗体获得焦点后,窗体上的TabStop=0的TWinControl类控件也将同时获得焦点,Lable不属于TWinControl类控件所以没有焦点,而TButton是属于TWinControl类控件。
在 Rzpagecontrol 的 Change 事件中,可能Rzpagecontrol页面并没有真正切换完成,目标页面还处于隐藏状态,delphi是绝对不能对隐藏页面设置焦点的(这一点我以前碰得过)。
为了证明我的想法是否正确,你可以在窗体中加入一个Image控件或其它不能获取焦点的控件,看看是不是正常。
另外,你也可以注释掉这一行再试试:
TForm(RzPageControl1.ActivePage.Controls[i]).setFocus;
更多追问追答
追问
恩,Image控件、speedbutton等是切换是没有问题的,但bitbutton,button添加了就不能,确实如你说说,那对于这一点你有什么比较好方法解决没有啊,能不能帮我一下啊,我是新手
追答
RzPageControl1控件中的TabSheet 有onshow事件的,你所你现在的代码转移到到RzPageControl1的TabSheet 的 onshow事件中肯定没问题
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询