https://zhidao.baidu.com/question/213078182.html

delphi7中如何向Notebook的Page页里添加Memo?

我是用Notebook和TabSet创建动态多页面,已经实现TabSet标签关联Notebook的Page页,但向每个Page页里添加文本编辑部件Memo的时候,不知道改怎么办了。看了不少资料说要用到动态页面类(TDynaPage),然后通过无类型指针实现指针传递,赋值给Memo的parent属性。但...展开
hum_stone | 浏览 1149 次
发布于2011-01-06 09:37 最佳答案
 
Notebook1.Pages.Object[]返回的类型是TObject,而赋给Parent需要的是TWinControl类型,所以你不能那样直接赋值,其实Notebook1.Pages.Object[]保存的是TPage类型,所以需要强制转换一下,下面是我写的测试:
var Memo:TMemo;
Page:TPage;
begin
Memo:=TMemo.Create(self);
Page:=TPage(self.Notebook1.Pages.Objects[0]);
Memo.Parent:=Page;
Page.tag:=Integer(Memo);//把Memo赋为Page的tag,这样就把两者关联了(以后知道page就能取得他上面的Demo并操作)
Memo.Align:=alClient;
Memo.Show;
end;

根据当前页操作它上面的Memo:
var idx:Integer;
Memo:TMemo;
begin
idx:=self.Notebook1.PageIndex;
if idx<>-1 then
begin
Memo:=TMemo(TPage(self.Notebook1.Pages.Objects[idx]).Tag);
memo.Lines.Add('test');
end;
end;
 

0xCEA4 

采纳率:55% 擅长: C/C++ python 其他编程语言

其他回答

var idx:Integer;
Memo:TMemo;
begin
idx:=self.Notebook1.PageIndex;
if idx<>-1 then
begin
Memo:=TMemo(TPage(self.Notebook1.Pages.Objects[idx]).Tag);
memo.Lines.Add('test');
end;
end;