首先,不知道你的思路和设计思想是什么?最好和大家分享一下,说不定有更好的方法!如果有多个页面,页面不可切换,那么就要显示其中的一个页面,也就是rzpagecontrol1.ActivePage:=TabSheet1;(加入第一个页面需要显示,TabSheet2,TabSheet3不可以切换),rzpagecontrol1有一个事件是TabClick,可以在里面设置,不能将TabSheet2,TabSheet3 Enabled=False,还是可以点击,不过点击时会自动切换到TabSheet1上,但是会有闪烁,基本可以达到你的要求,还需要完善procedure TForm1.RzPageControl1TabClick(Sender: TObject); begin if rzpagecontrol1.ActivePage=TabSheet1 then ShowMessage('1'); if rzpagecontrol1.ActivePage=TabSheet2 then rzpagecontrol1.ActivePage:=TabSheet1; if rzpagecontrol1.ActivePage=TabSheet3 then rzpagecontrol1.ActivePage:=TabSheet1; end;
貌似这个问题还真是不好解决啊,2#的方法在进行tab页面切换点击的时候强制激活指定的页面,但是会有闪烁的,除非自己改写控件。 procedure TForm1.RzPageControl1TabClick(Sender: TObject); begin {强制激活第一个页面} if rzpagecontrol1.ActivePage=TabSheet1 then rzpagecontrol1.ActivePage:=TabSheet1; if rzpagecontrol1.ActivePage=TabSheet2 then rzpagecontrol1.ActivePage:=TabSheet1; if rzpagecontrol1.ActivePage=TabSheet3 then rzpagecontrol1.ActivePage:=TabSheet1; end;
begin
if rzpagecontrol1.ActivePage=TabSheet1 then
ShowMessage('1'); if rzpagecontrol1.ActivePage=TabSheet2 then
rzpagecontrol1.ActivePage:=TabSheet1; if rzpagecontrol1.ActivePage=TabSheet3 then
rzpagecontrol1.ActivePage:=TabSheet1;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
RzPageControl1.CloseActiveTab;
ShowMessage(IntToStr(RzPageControl1.ActivePageIndex)+'_'+RzPageControl1.ActivePage.Caption); {关闭页面后的当前激活页面索引和名称}
end;procedure TForm1.RzPageControl1Close(Sender: TObject;
var AllowClose: Boolean);
begin
AllowClose:=True;
ShowMessage(IntToStr(RzPageControl1.ActivePageIndex)+'_'+RzPageControl1.ActivePage.Caption);{关闭的当前激活页面的索引和名称}
end;
其实,最好就是无标签的,切换由程序进行——win31页里的Tnotebook就是这样
procedure TForm1.RzPageControl1TabClick(Sender: TObject);
begin
{强制激活第一个页面}
if rzpagecontrol1.ActivePage=TabSheet1 then
rzpagecontrol1.ActivePage:=TabSheet1; if rzpagecontrol1.ActivePage=TabSheet2 then
rzpagecontrol1.ActivePage:=TabSheet1; if rzpagecontrol1.ActivePage=TabSheet3 then
rzpagecontrol1.ActivePage:=TabSheet1;
end;