程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 第四章-文本編輯器的設計(一)(3)

第四章-文本編輯器的設計(一)(3)

編輯:Delphi

當用戶在多個頁面中進行切換時,程序應當保證對當前頁面進行編輯。 例如在多頁編輯器中,用戶選中某一頁面,即可對該頁面中的文件進行編輯、尋找、設置、打印等。為了實現這一功能,定義了一個TMemo類型的變量:Memo1,該變量沒有實例化,每次調用DynaAdd,DynaDel方法均定把TabIndex指定頁面的Memo指針傳給Memo1。這樣在程序運行中,始終有一個實例化的Memo指針賦給Memo1,而菜單中的文本編輯功能均對Memo1進行操作。這種指針傳遞就能保證對當前頁進行操作。

定義了TDynaPage後,只需在Open,Close菜單項中加入如下代碼,即可方便的在用戶打開關閉文件時創建成刪除頁面。 

 procedure TEditForm.Close1Click(Sender: TObject);

begin

if DynaPage.CurPage<>0 then

DynaPage.Del(Notebook1,DynaPage.CurPage);

if Notebook1.Pages.count = 1 then

Close1.Enabled:=False;

end; 

procedure TEditForm.Open1Click(Sender: TObject);

begin

if OpenDialog1.Execute then

begin

if not(OpenFile or NewFile) then

begin

OpenFile:=true;

Open(OpenDialog1.FileName);

Notebook1.Pages.Strings[0]:=ExtractFileName( OpenDialog1.FileName);

TabSet1.Tabs:=Notebook1.Pages;

end

else

begin

DynaPage.DynaAdd( Notebook1, ExtractFileName(OpenDialog1.FileName));

Open(OpenDialog1.Filename);

if Notebook1.Pages.count > 1 then

Close1.Enabled:=True;

end;

end;

end; 

4.3 文本編輯部件及應用 

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; 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved