如何动态创建tnotebook的页,并向动态创建的页中动态加入控件,注意:是动态!!是notebook控件!!(200分)

  • 主题发起人 主题发起人 Overbest
  • 开始时间 开始时间
O

Overbest

Unregistered / Unconfirmed
GUEST, unregistred user!
如题
很急!!
另:delphi中有没有frame控件?
 
Overbest:
Delphi中的Notebook中的页是一个Strings,Listbox的Items也是Strings,你可以
在用Listbox?.items.Add语句添加一个Item,然后把Listbox?.items赋值给Notebook?.
Pages 然后跟改Notebook的A????Page(不好意思,忘了)把这个页显示出来
创建控件的例子:

Var
listbox1:Tlistbox;
begin
Listbox1:=Tlistbox.crea??(又忘了);
end;

算了,泥巴你的Email给我把,我写一个发过去.我把单词全网了.
我快去外地上学了,快点



 
给Note增加页可以用以下语句:
Notebook1.Pages.Add('YourPage');
就添加了一个名为"YourPage"的页

创建控件得先声明,如:
Var
Button2:TButton;
begin
Button4:=TButton.Create(Self);
with Button4 do begin
Parent:=Form1;
Left:=100;
Top:=100;
Caption:='OK';
end;
end;

但怎样把这个Button2放在Notebook的某一个页上,我
就不知道了,研究了一个小时,还是不懂(小弟技术不
精,惭愧)

至于Frame,是什么?是VB中的Frame吗,那个东西在Delphi
中叫GroupBox,就在控件页的第一页上,紧挨着滚动条控件
 
D5自己有Frame控件的
 
delphi5 中file|new frame 可以创建一个Frame
 
我希望在delphi4中实现向动态创建的notebook控件的页中动态添加控件!!不是在delphi5
 
附加功能 将问题提前
 
Delphi 2.0 高级程序设计指南 中有说到如何在notebook中动态创建控件的

在Delphi中,宣称对象和创建对象都是用指针来标识, 因此可用无类型指针进行指针传
递。

  var
Pi : Pointer;
begin
Pi := Notebook1.Pages.Object[];
Memo.Parent := Pi;
end;

这样就可在TPage上动态创建编辑部件了。
  往Notebook1中动态生成页面时,页面应所相应的切换,TDynaPage. Notebook1.Tabset1有关的属性要作相应的调整。
TDynaPage的DynaAdd方法定义如下:

procedure TDynaPage.DynaAdd(Sender:TNotebook;FileName:String);
var
Pi:Pointer;
Memo:TMemo;
begin
Sender.Pages.add(FileName);
Pi:= Sender.Pages.Objects[Sender.Pages.Count-1];
DynaMemo(pi);
DynaPage.FileList.addObject(FileName,Memo1);
EditForm.TabSet1.Tabs := Sender.Pages;
EditForm.Tabset1.TabIndex:=Sender.Pages.Count-1;
EditForm.Notebook1.PageIndex := EditForm.Tabset1.TabIndex;
DynaPage.CurPage:= Sender.Pages.Count-1;

end;

procedure DynaMemo(Pi:Pointer);
var
Memo:TMemo;
begin
Memo:=TMemo.Create(Pi);
Memo.Parent:=Pi;
Memo.Align:=alClient;
Memo.borderStyle:=bsNone;
Memo.HideSelection:=False;
Memo1:=Memo;
end;


procedure TDynaPage.Del(Sender:TNotebook;No:integer);
var
Pi:pointer;
begin
Sender.Pages.delete(No);
EditForm.TabSet1.Tabs.delete(No);
Filelist.Delete(No);
DynaPage.CurPage:=EditForm.TabSet1.TabIndex;

Sender.PageIndex := EditForm.Tabset1.TabIndex;
Pi:=FileList.Objects[DynaPage.CurPage];
Memo1:=Pi;
EditForm.Caption:=Sender.Pages.Strings[DynaPage.CurPage];
end;

 
TPageControl 有什么不好吗?
 
多人接受答案了。
 

Similar threads

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