知识大全 文本编辑器的设计(一)[2]
Posted 编辑
篇首语:万事须己运,他得非我贤。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 文本编辑器的设计(一)[2]相关的知识,希望对你有一定的参考价值。
DELPHI基础教程:文本编辑器的设计(一)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
为了实现以上功能 程序中使用了动态页面类(TDynaPage) 其定义如下
type TDynaPage = Class(TObject)
该类可根据需要动态的产生页面 每个页面上创建了可进行文本编辑的TMeno部件
procedure…
puclic
CurPage : integer;
FileList : TSringList;
end;
CurPage表示当前用户选择的页面数 用户切换 增加 删除页面均影响CurPage 的值 CurPage初如化为零页 FileList存放打开或创建文件的名字以及与这些文件相关的编辑部件TMemo 页面动态创建 删除将影响FilstList的值
TNotebook部件创建后至少有一个页面 因此Pages属性不是空值 只要往Pages中加入字符串 Delphi自动地把该字符串与TPage类对象相联系 TPage类是TCustomEdit派生出来的 在对象浏览器(Object Browse)中可观察到TPage的数据成员和方法 静态生成的页面也是 TPage类
要创建多页面编辑器 必须从TPage的父件(Parent属件)创建相应编辑部件 但在动态创建页面时 TPage只是一个与字符串相联系的TObject类 不能写成
MemoParent := Notebook Pages Object[ ];
在Delphi中 宣称对象和创建对象都是用指针来标识 因此可用无类型指针进行指针传递
var
Pi : Pointer;
begin
Pi := Notebook Pages Object[];
Memo Parent := Pi;
end;
这样就可在TPage上动态创建编辑部件了
往Notebook 中动态生成页面时 页面应所相应的切换 TDynaPage Notebook Tabset 有关的属性要作相应的调整
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 ];
DynaMemo(pi)
DynaPage FileList addObject(FileName Memo )
EditForm TabSet Tabs := Sender Pages;
EditForm Tabset TabIndex:=Sender Pages Count ;
EditForm Notebook PageIndex := EditForm Tabset TabIndex;
DynaPage CurPage:= Sender Pages Count ;
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;
Memo :=Memo;
end;
procedure TDynaPage Del(Sender:TNotebook;No:integer)
var
Pi:pointer;
begin
Sender Pages delete(No)
EditForm TabSet Tabs delete(No)
Filelist Delete(No)
DynaPage CurPage:=EditForm TabSet TabIndex;
Sender PageIndex := EditForm Tabset TabIndex;
Pi:=FileList Objects[DynaPage CurPage];
Memo :=Pi;
EditForm Caption:=Sender Pages Strings[DynaPage CurPage];
end;
当用户在多个页面中进行切换时 程序应当保证对当前页面进行编辑 例如在多页编辑器中 用户选中某一页面 即可对该页面中的文件进行编辑 寻找 设置 打印等 为了实现这一功能 定义了一个TMemo类型的变量 Memo 该变量没有实例化 每次调用DynaAdd DynaDel方法均定把TabIndex指定页面的Memo指针传给Memo 这样在程序运行中 始终有一个实例化的Memo指针赋给Memo 而菜单中的文本编辑功能均对Memo 进行操作 这种指针传递就能保证对当前页进行操作
定义了TDynaPage后 只需在Open Close菜单项中加入如下代码 即可方便的在用户打开关闭文件时创建成删除页面
procedure TEditForm Close Click(Sender: TObject)
begin
if DynaPage CurPage<> then
DynaPage Del(Notebook DynaPage CurPage)
if Notebook Pages count = then
Close Enabled:=False;
end;
procedure TEditForm Open Click(Sender: TObject)
begin
if OpenDialog Execute then
begin
if not(OpenFile or NewFile) then
begin
OpenFile:=true;
Open(OpenDialog FileName)
Notebook Pages Strings[ ]:=ExtractFileName( OpenDialog FileName)
TabSet Tabs:=Notebook Pages;
end
else
begin
DynaPage DynaAdd( Notebook ExtractFileName(OpenDialog FileName))
Open(OpenDialog Filename)
if Notebook Pages count > then
Close Enabled:=True;
end;
end;
end;
文本编辑部件及应用
TEdit 部件
TEdit部件是一个标准的编辑框 用户可在编辑框中输入数据 编辑框也可向用户显示数据 编辑时只能读写一行信息
TEdit的Text属性存放著用户输入的数据或向用户显示的数据 Modified属性用以标识 Text的数据是否改变 可通过设置Maxlength属性值来限制用户输入字符的个数量 CharCase
属性可定义编辑框中字符的大小写 如果设计者想禁止用户输入 可将ReadOnly属性设置成真值 编辑框也能用做密码输入框 通过设置PassWordChar 属性的值 可将用户输入的字符在编辑框中显示成指定的字符 如 * 号等 编辑框还可以进行字符选择操作 粘贴 复制和剪切操作
cha138/Article/program/Delphi/201311/25255相关参考
DELPHI基础教程:文本编辑器的设计(二)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
DELPHI基础教程:文本编辑器的设计(二)[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
DELPHI基础教程:文本编辑器的设计(二)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
DELPHI基础教程:文本编辑器的设计(二)[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&
Eclipse使用系统内置的TextEditor做为文本编辑器这个文本编辑器有一个长期存在的问题那就是文本无法换行虽然这个问题长期存在而且解决起来并不困难但是这却给人们带来不少麻烦 &n
今天在做项目的时候遇到上传文本框的问题 <inputtype=filesize=name=photoupload/> 在firefox中该控件产生的文本框是默认不可编辑的但是在IE
最近由于自己想做一个网站形式的代码库自已写一个在线文本编辑器对于现在的我来确实是很不切实际呵呵!再说了现在有一个非常好的在线文本
在使用Word2010进行文字编辑时,下列叙述错误的是_____。A、允许同时打开多个文档B、可将正在编辑的文档另存为一个纯文本文件C、使用“打开”命令可以打开一个已存在的文档D、打印预览文档时,打印
为什么在百度百科里编辑的词条一直通不过?基本每个不通过的词条都会有原因的,你看看不通过的原因。基本原因如下:1、编辑的内容没有权威的参考资料。2、编辑的内容存在虚假、过度宣传。百度百科词条不通过原因:
知识大全 excel表格中 日期加指定天数成为另一日期怎么编辑公式
excel表格中日期加指定天数成为另一日期怎么编辑公式这个可以直接相加的。比如A1是你的一个日期。B1是输入的2,表示加2天,那就直接=A1+B1即可前提是你的日期为标准日期格式excel表格中日期减