当前位置: 首页 > 学习 > 电脑学习 > 程序设计 > Delphi > 基础教程 > 正文

Delphi文本编辑器的设计(二)

http://www.zk168.com.cn  招考学习网 2006-4-7 9:42:00
-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--

4.3.1 TEdit 部件 

        TEdit部件是一个标准的编辑框,用户可在编辑框中输入数据。编辑框也可向用户显示数据。编辑时只能读写一行信息。

   TEdit的Text属性存放着用户输入的数据或向用户显示的数据,Modified属性用以标识 Text的数据是否改变,可通过设置Maxlength属性值来限制用户输入字符的个数量,CharCase

          属性可定义编辑框中字符的大小写。如果设计者想禁止用户输入,可将ReadOnly属性设置成真值。编辑框也能用做密码输入框。通过设置PassWordChar属性的值,可将用户输入的字符在编辑框中显示成指定的字符,如"*"号等。编辑框还可以进行字符选择操作、粘贴、复制和剪切操作。 

4.3.2 TMemo 部件 

       TMemo部件与TEdit部件类似,能向用户显示数据,用户也可输入数据。与TEdit部件

不同的是,TMemo部件可以处理多行文本,因此主要用于编辑文件。

  TMemo的Text属性只能在运行时才能访问。Modified属性用以标识Text的数据是否改

变,通过设置MaxLength属性值来限制用户输入字符的数量。

  如果把文本当成一个整体进行访问,可使用Text属性;若想逐行访问,则要使用Lines属性。Lines属性能对文件更方便地进行访问。Lines是TStrings类型的,因此可使用Add、Delete方法,例如在Memo1中加入一行字符串的代码如下:  

Memo1.Lines.Add('Another line is added'); 

        通过Lines属性可以方便地把文件读入部件中,例程中使用下面的代码将文件读入Memo1: 

Memo1.Lines.loadFromFile(Filename). 

从TMemo 部件中剪切、复制、粘贴文本非常方便,只需使用CutToclipboard ,CopyToClipBroad,PasteFromClipBoard方法,其代码如下: 

  Memo1.CopyToClipboard

  Memo1.CutToClipboard

  Memo1.PasteFromClipboard 

        TMemo有一些属性,用以控制文本的显示效果。ScrollBars属性可以定义部件的水平滚动条和垂直滚动条。当文件字体改变时,使用AutoSize属性可使部件大小做相应的调整。设置WordWrap属性可以实现自动换行。

  例程中Edit|WordWrap菜单项提供了设置WordWrap的功能,并可根据WordWrap的值决定滚动条的形式。当WordWrap为真时,不需要水平滚动条, 并在菜单中作出检查记号。

其代码如下: 

 procedure TEditForm.SetWordWrap(Sender: TObject);

begin

with Memo1 do

begin

WordWrap := not WordWrap;

if WordWrap then

ScrollBars := ssVertical else

ScrollBars := ssBoth;

WordWrap1.Checked := WordWrap;

end;

SetEditRect;

end; 

        TMemo部件提供了一组关于选择文本的属性和方法。如果想在部件成为当前控件时自动选择文本,可设置AutoSelect 属性。运行时可用SelectAll 方法选中部件的全部文本。 Selstart属性返回选中文本的开始位置,SelText 包含着被选中的文本。SelLength属性返回选中文本的长度,这两个属性可用于字符串的查找和替换。下一节将详细讨论。

  TMemo的Modified属性是一个运行时才能得到的属性,可判断部件被创建时或Modified属性最后一次设置成假值之后,部件上的文本是否修改。如果修改了,Modified将设成真值,反之假值。

  例程中在关闭文件时将测试文件的modified属性,如果文件修改后尚未保存, 将出现对话框,询问用户是否保存文件,其代码如下: 

  procedure TEditForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

var

DialogValue: Integer;

FName: string;

begin

if Memo1.Modified then

begin

FName := Caption;

DialogValue := MessageDlg(Format(SWarningText, [FName]), mtConfirmation,

[mbYes, mbNo, mbCancel], 0);

case DialogValue of

id_Yes: Save1Click(Self);

id_Cancel: CanClose := False;

end;

end;

end; 

4.4 常用对话框的使用 

  Delphi的可视部件类库(VistualComponent Liberty)中,有一组对话框部件,在对象选择板的Dialog页面中可以找到。 本节着重介绍与文件编辑有关的字体对话框(TFontDialogComponement),查找对话框(TFindDialogComponement) ,替换对话框(TReplace DialogComponement),文件对开对话框(TOpenDIalogComponement).

   应用这几个对话框可对文件进行字体设置、查找、替换等操作,但需要编写相应的代码。 

4.4.1字体对话框部件 

  字体对话框部件在应用程序中产生字体对话框, 用户可在对话框中进行字体选择和属性设置。用户选择字体并按下OK按钮之后,有关信息便贮存在部件的Font属性中。

  应用程序可通过调用字体对话框的Execult方法来显示对话框,当用户选择OK按钮时,Execult返回True值,否则返回Flase值。

应用程序可以使用Options属性来定义字体对话框的显示和行为方式:例如可在对话框中定义一个帮助按钮或指定出现在字体列表框中的字体。有关Options的主要取值如下表4.1: 

表4.1 字体对话框的Options取值及含义

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

取值           含义

───────────────────────────────────────

AdAnsiOnly 如果是真值,只能使用Window字符集,

fdEffects 如果是真值,对话框中显示颜色列表和效果检查框;用户可使

用效果检查框定义Strikout下划线文本;使用颜色列表定义字体

颜色。

fdForceFontExise   如果是真值,用户在字体组合框中输入字体名后选择OK按钮,

将出现一个用户字体无效的消息框。

fdNoOEMFont    如果是真值,字体组合框中将不显示向量字体。

fdShowHelp 如果是真值,对话框显示Help按按钮。

fdWysiwyg 如果是真值, 只有打印和屏幕均可得到的字体才会出现在字体

            组合框中。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 

  例程中(Edit/Font)菜单具有设置文本字体的功能,其代码如下:

 

  procedure TEditForm.SetFont(Sender : TObject);

begin

FontDialog.Font := Memo1.Font;

if FontDialog1.Execult then

Memo1.Fout := FontDialog1.Font;

SetEdit Rect;

end; 

-----------------------------------------------------------[交流]-[打印]-[发送]-[收藏]--
最新入库:
 
·实质、过程及意义——阿多尔诺“否定的辩证法”探微
·从Ontology的译名之争看哲学术语的翻译原则
·论马克思主义哲学经典的解释——解释学方法及其在马克
·中国哲学当前的核心与周边问题
·和合学与21世纪文化价值和科技
·中国文化的和合精神与21世纪
·宗教之间理当相互宽容
·上半个世纪的自由主义
·殷周至春秋时期神人关系之演进
·大学之道:构建以“三纲八目”为核心的道德修养体系
相关内容:
 
网友点评:
 
会员名称:
密码:匿名 ·注册·忘记密码?
评论内容:
(最多300个字符)
  查看评论
友情提醒:
 1.库中的资料大都来自互联网、网友上传、各类书籍,在录入的过程中难免会出现错误,恳请网
 友来信指正!
 2.如果网友在本库中未能找到所需要的材料,请登陆到我们的论坛《招考学习网》版块!
 3.考友想加入招考学习网的编辑部,请发信到XueXiWang#Gmail.com(#改为@)附带个人简历
 4.如需转载请注明出处及作者,谢谢合作!
 5.如果您有更好的建议或意见请EMAIL:XueXiWang#Gmail.com (#改为@)
 6.凡标题中有注有“[NO]”字样均不含答案且答案整理中.
 7.如本库中转载文章涉及版权等问题,请相关网站或作者在两周内发邮件通知(EMAIL:  XueXiWang#Gmail.com (#改为@))我们,我们接到通知后立即删除该文章及链接!
你问我答 更多>>