PageControl 怎么打开tabsheet

HeroesIT 2018-05-15 09:24:24



用的是rz的控件 关闭后怎么打开

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RzTabs, ExtCtrls, RzPanel, RzButton, RzSplit, StdCtrls;

type
TForm1 = class(TForm)
RzSplitter1: TRzSplitter;
RzPanel1: TRzPanel;
RzPageControl1: TRzPageControl;
TabSheet1: TRzTabSheet;
TabSheet2: TRzTabSheet;
TabSheet3: TRzTabSheet;
TabSheet4: TRzTabSheet;
TabSheet5: TRzTabSheet;
TabSheet6: TRzTabSheet;
RzButton1: TRzButton;
RzButton2: TRzButton;
RzButton3: TRzButton;
RzButton4: TRzButton;
RzButton5: TRzButton;
RzButton6: TRzButton;
TabSheet7: TRzTabSheet;
Label1: TLabel;
procedure RzButton6Click(Sender: TObject);
procedure RzButton5Click(Sender: TObject);
procedure RzButton4Click(Sender: TObject);
procedure RzButton3Click(Sender: TObject);
procedure RzButton2Click(Sender: TObject);
procedure RzButton1Click(Sender: TObject);
procedure RzPageControl1Close(Sender: TObject;
var AllowClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.RzButton6Click(Sender: TObject);
begin
RzPageControl1.ActivePageIndex:=0;
//TabSheet1.TabVisible:=true;
end;

procedure TForm1.RzButton5Click(Sender: TObject);
begin
RzPageControl1.ActivePageIndex:=1;
TabSheet2.TabVisible:=true;
end;

procedure TForm1.RzButton4Click(Sender: TObject);
begin
RzPageControl1.ActivePageIndex:=2;
TabSheet3.TabVisible:=true;
end;

procedure TForm1.RzButton3Click(Sender: TObject);
begin
RzPageControl1.ActivePageIndex:=3;
TabSheet4.TabVisible:=true;
end;

procedure TForm1.RzButton2Click(Sender: TObject);
begin
RzPageControl1.ActivePageIndex:=4;
TabSheet5.TabVisible:=true;
end;

procedure TForm1.RzButton1Click(Sender: TObject);
begin
RzPageControl1.ActivePageIndex:=5;
TabSheet6.TabVisible:=true;
//TabSheet6.

end;

procedure TForm1.RzPageControl1Close(Sender: TObject;
var AllowClose: Boolean);
begin
AllowClose:=True;

end;

end.


用的是rzpagecontrol的showclosebuttononactivetab属性

怎么么实现关闭打开

关闭在标签的×符号关闭

打开在按钮打开 求大神支招!!!!!
之前用的是隐藏但是有一些小问题
...全文
1975 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
又蠢又懒的蓝 2020-12-14
  • 打赏
  • 举报
回复
楼主解决了吗 我也是这个问题
lyhoo163 2018-05-15
  • 打赏
  • 举报
回复
创建TabSheet简单,关键是TabSheet1内容加上其它控件。
天行归来 2018-05-15
  • 打赏
  • 举报
回复
之前做过类似,我的思路是这样
1、创建新tab页时的部分代码

class function TSMUIDrv.LoadFuncForm(parent: TRzPageControl; clsName: string): TAWin;
var
i,j: integer;
tmp: TComponent;
sht: TRzTabSheet;
begin
//form exists?
for i:=0 to parent.PageCount-1 do
begin
for j:=0 to parent.Pages[i].ControlCount-1 do
begin
if parent.Pages[i].Controls[j].ClassName=clsName then
begin
parent.ActivePageIndex := i;
result := TAWin(parent.Pages[i].Controls[j]);
exit;
end;
end;
end;
//to load new form
sht := TRzTabSheet.Create(parent);
sht.PageControl := parent;
tmp := LoadComponent(clsName,sht);
if tmp<>nil then
begin
result := TAWin(tmp);
result.Parent := sht;
TAWin(tmp).BorderStyle := bsNone;
sht.Caption := TAWin(tmp).Caption;
result.Align := alClient;
sht.Tag := TAWin(tmp).Tag;
result.Show;
parent.ActivePageIndex := parent.PageCount-1;
end
else begin
sht.Free;
result := nil;
end;
end;

2、关闭窗口


procedure TFmMain.OnCloseActivePage(sender: TObject; var allowClose: boolean);
var
i: integer;
begin
for i:=0 to pcCtl.ActivePage.ControlCount-1 do
begin
if (pcCtl.ActivePage.Controls[i] is TAWin) then
begin
if TAWin(pcCtl.ActivePage.Controls[i]).Dirty and
(TSMSystem.MessageBox('数据未保存,是否关闭?',MB_ICONQUESTION or MB_YESNO)=IDNO) then
begin
allowClose := false;
exit;
end;
TAWin(pcCtl.ActivePage.Controls[i]).Free;
allowClose := true;
end;
end;
end;


3、运行效果
HeroesIT 2018-05-15
  • 打赏
  • 举报
回复
shw014 你好 之前用的就是这个 但是这个语句有bug 点击关闭按钮 只把标签给隐藏 页面还显示在哪里
shw014 2018-05-15
  • 打赏
  • 举报
回复
控件的Close时间改一下
procedure TForm1.RzPageControl1Close(Sender: TObject;
  var AllowClose: Boolean);
begin
   RzPageControl1.ActivePage.TabVisible:=false
  //如有必要可与指定当前页
end;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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