第四章 文本编辑器的设计(一)(4)

2019-04-23 23:03

TNotebook部件创建后至少有一个页面,因此Pages属性不是空值,只要往Pages中加入字符串,Delphi自动地把该字符串与TPage类对象相联系。TPage类是TCustomEdit派生出来的,在对象浏览器(Object Browse)中可观察到TPage的数据成员和方法。静态生成的页面也是 TPage类。

要创建多页面编辑器,必须从TPage的父件(Parent属件)创建相应编辑部件。但在动态创建页面时,TPage只是一个与字符串相联系的TObject类,不能写成:

MemoParent

:=

Notebook1.Pages.Object[ ];

在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);


第四章 文本编辑器的设计(一)(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:福师2013秋《小学德育论》在线作业一、二

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: