怎么样利用pagecontrol开发像腾讯TT多页签显示窗体?(100分)

  • 主题发起人 主题发起人 hjp0214
  • 开始时间 开始时间
H

hjp0214

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么样利用pagecontrol开发像腾讯TT多页签显示窗体?
 
Form.Parent:=PageControl.Pages[0];
Form.Align:=alClient;
 
如果关闭,页签也要释放。打开窗体,先自动创建一个页签。一个窗体对应一个页签。
 
我用的方法与1楼有异曲同工之处,请参考:
1、用 ManualDock 例:NewForm.ManualDock(page1);
NewForm.Visible:=True;
2、记得在NewForm的OnClose事件中加入 Action:=caFree;
详细的方法,我记得写过一个过程,直接调用一下就行了,不过要找找,需要的话再联系。
 
这么简单的问题,连地质灾害都过来涮分了.点下边的慢慢看.
http://mail.hcvs.kh.edu.tw/hc3331/CBuilder/ch12.ppt
 
我给你我的做法吧,不正确请大家指正,本人是老菜鸟,不过幸好用过这个。
procedure Tmain.OpenForm(cap:string;FormClass: TFormClass;
fm:Tform;
PageC:TRZPageControl);
var
NewPage: TRZTabSheet;
i : integer;
isop :boolean;
www :TRect;
begin
application.CreateForm(FormClass,fm);
创建窗体
NewPage := TRZTabSheet.Create(PageC);创建TabSheet
NewPage.PageControl := PageC;
NewPage.Caption :=cap;
fm.Caption:=cap;
PageC.ActivePage := NewPage;
www:=NewPage.BoundsRect;
fm.Dock(NewPage,www);
fm.Parent:=NewPage;
fm.Align:=alclient;
fm.show;
end
调用执行
openform(fcaption,Tygxx_frm,ygxx_frm,PageControl1);
fcaption:新打开窗口的caption
ygxx_frm:新打开窗口的name
PageControl1:这个知道吧,放一个PageControl1,(我用的是RzPageControl1)
下面双击关闭窗口
procedure TMAIN.PageControl1MouseDown(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState;
X, Y: Integer);
var i:integer;
begin
// 双击删除当前页面
if (Button = mbLeft) and (ssDouble in Shift) then
begin
for i:=0 to screen.FormCount -1do
begin
if screen.Forms.Caption=PageControl1.ActivePage.Caption then
screen.Forms.Close;
end;
(Sender as TRZPageControl).ActivePage.Free;
end;
 
TO:elsss,
如果窗体已经打开了,还会重新创建另外窗体。应该是打开的窗体,如果再打开的话,只是重新显示
 
直接用谷歌开源的好了
 
如果是打开的窗体可以用循环判断,让他显示,如果没打开就打开
代码:
for i:=0 to PageC.PageCount-1do
begin
if PageC.Pages.Caption=cap then
begin
PageC.Pages.Show;
end;
end;
///因为前面我给的代码实现上是生成的页面caption和pagecontrol的caption一样所以用这个判断窗口是否已经打开。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
825
DelphiTeacher的专栏
D
D
回复
0
查看
831
DelphiTeacher的专栏
D
后退
顶部