Delphi寫字板程序代碼,使用Windows 的記事本時,你會被它快速、方便、小巧的特性而吸引,但是它過於小巧了,少了許多基本的文字處理和編輯的功能。而Microsoft Word 雖然文字處理功能強大,但是它不僅啟動速度慢,而且文件比較龐大,另外,許多時候,我們也用不到它的多數功能。所以本例我們將制作一個介於記事本和Word之間的文本編輯器。程序大部分菜單都在窗體中對應有一個快捷圖標。包括新建、打開、保存、剪切、復制、粘貼、左對齊、右對齊、居中、文字加粗、文字傾斜、文字加下劃線和文字大小等命令,在菜單中還包括字體顏色、窗體背景顏色等命令。利用這些基本命令,可以很方便地處理很多文本文檔。該程序界面友好,當把鼠標放在快捷工具欄上時,程序會給出快捷菜單提示,同時,在窗體下方的中間,也有該快捷命令的說明文字。這個寫字板文字編輯器的界面如下示:
本例用到了Delphi 6.0 的許多控件和編程技術。使用的控件包括:MainMenu 菜單控件、ImageList 控件、ColorDialog 控件、OpenDialog 控件、SaveDialog 控件、FontDialog控件、ToolBar 控件、SpeedButton 控件、Memo 控件和StatusBar 控件等。其中ImageList、ToolBar 和SpeedButton 三個控件聯合起來使用,可以制作出精美直觀的快捷工具欄,而利用StatusBar 控件,可以制作出通用的窗體底部說明欄。ColorDialog 和FontDialog 控件一般都用來控制字體和顏色的,它們包含了字體和顏色的各種基本選項。OpenDialog 和SaveDialog 控件經常用來打開和保存文件。另外,本程序的窗體布局涉及到Delphi 編程中最常用的技術,值得好好體會。
Delphi寫字板的編寫步驟:
首先要解決窗體的布局和設計問題。然後給各個菜單和快捷工具欄中的按鈕添加相關程序代碼。這個文本編輯器與一般的簡易的文字編輯程序的制作有所不同。首先,必須設置好菜單的屬性及功能;其次,當所有的菜單都設計好之後,還必須對工具欄進行設計,工具欄的開發與設計是最具挑戰性的工作,因為整個界面的美觀都取決於工具欄的制作,而整個程序使用是否方便、快捷,也取決於工具欄的安排和屬性的設置。然後,還需進行一些細部的修飾,例如底部任務欄上的提示用語以及幫助菜單的設計等。
1.新建工程
(1)啟動Delphi 6.0 程序。選擇“文件”菜單下的“新建”命令,從彈出的子菜單中選擇Application 選項,則出現新建工程的Form1 窗口。
(2)選擇“文件”菜單下的“工程另存為”命令,彈出Save Unit1 As 對話框。在“保存在”列表框中選擇需要存放該窗口文件所在的目錄名;在“文件名”編輯框中填寫文件名,這裡填寫“Unit1”,點擊“保存”按鈕,保存上面的選項。
(3)執行上一步後,將彈出“工程另存為”對話框。在“保存在”列表框中選擇需要存放該工程的目錄名,最好和第(2)步選取相同的目錄;在“文件名”編輯框中填寫保存處理該工程的源代碼的文件名,這裡填寫“Project1”,點擊“保存”按鈕,保存上面的選項。
2.修改窗口:
(1)激活Form1 窗口,在“屬性”面板中設置該窗體的Caption 屬性為“文本編輯器”,Color 屬性設置為“clBtnFace”。
(2)選擇“標准”頁上的MainMenu 選項,在窗體中添加MainMenu 控件。雙擊MainMenu 控件,進入如圖2-11 所示菜單編輯器。菜單設計如下:文件(新建、打開、保存、退出),編輯(剪切、復制、粘貼、自動換行、全選),格式(對齊(左對齊、居中、右對齊),字體(加粗、傾斜、下劃線、顏色),背景),幫助(關於)。
(3)依次選中各個菜單,在“屬性”面板上設置其Name 屬性如下:文件(filen1)、新建(filenew)、打開(fileopen)、保存(filesave)、退出(fileexit)、編輯(Editn2)、剪切(Editcut)、復制(Editcopy)、粘貼(Editpaste)、自動換行(auto1)、全選(selectall1)、格式(Formatn3)、對齊(align)、左對齊(leftalign)、居中(centeralign)、右對齊(rightalign)、字體(Font1)、加粗(bold1)、傾斜(italic)、下劃線(underline1)、顏色(color1)、背景(background)、幫助(helpn4)、關於(aboutnotebook)。
(4)選擇Win 32 頁上的ToolBar 選項,在窗體中添加ToolBar 控件,調整其合適的大小和位置。在“屬性”面板上設置其Color 屬性為“clBtnFace”、設置其Align 屬性為“alTop”,使其居於窗體的最上方。
(5)選擇“附加”頁上的SpeedButton 選項,在窗體中的ToolBar 上添加12 個SpeedButton 控件。選擇Win 32 頁上的ImageList 選項,在窗體中添加ImageList 控件。用鼠標雙擊該控件,打開如圖2-12 所示ImageList 編輯框,用鼠標點擊“加載”按鈕,從彈出的對話框中選擇合適的BMP 文件作為圖標,然後點擊OK 按鈕返回。在“屬性”面板上設置ImageList 的Name 屬性為ImageList1。
(6)選中窗體中的ToolBar 控件,在“屬性”面板上設置其Images 屬性為“ImageList1”,Indent 屬性設置為1,這樣就為ToolBar 上的各個SpeedButton 控件添加了形象的圖標。
(7)分別選中各個SpeedButton 控件,在“屬性”面板上設置其ShowHint 屬性均為“True”。然後依次設置各個SpeedButton 控件的Hint 屬性為“新建|新建文件”、“打開|打開文件”、“保存|保存文件”、“剪切|剪切所選對象”、“復制|復制所選對象”、“粘貼|粘貼對象”、“左對齊|文字左對齊”、“居中|文字居中”、“右對齊|文字右對齊”、“加粗|字體加粗”、“傾斜|字體傾斜”和“下劃線|文字下劃線”。
(8)選擇Win 32 頁上的StatusBar 選項,在窗體中添加StatusBar 控件,在“屬性”面板上設置其Align 屬性為“alBottom”,使其居於窗體的底部。用鼠標點擊其Panel 屬性右邊的文本框,打開StatusBar.Panels 編輯框,在其中點擊新建圖標,依次新建提示文字“0-筆記本”、“1-TstatusPanel”和“李氏筆記本※愛媛工作室※2001 年”,這將為窗體底部的任務欄添加提示文字。
(9)選擇“對話框”頁上的ColorDialog 選項,在窗體中添加ColorDialog 控件,在“屬性”面板上設置其Name 屬性為“ColorDialog1”。
(10)選擇“對話框”頁上的FontDialog 選項,在窗體中添加FontDialog 控件,在“屬性”面板上設置其Name 屬性為“FontDialog1”,Options 屬性為“fdEffects”。
(11)選擇“對話框”頁上的OpenDialog 選項,在窗體中添加OpenDialog 控件,在“屬性”面板上設置其Name 屬性為“OpenDialog1”,設置其Filter 屬性為“文本文件(*.txt)|*.txt”,設置其Options 屬性為“[ofHideReadOnly,ofEnableSizing]”。
(12)選擇“對話框”頁上的SaveDialog 選項,在窗體中添加SaveDialog 控件,在“屬性”面板上設置其Name 屬性為“SaveDialog1”,設置其Filter 屬性為“文本文件(*.txt)|*.txt”,設置其Options 屬性為“[ofHideReadOnly,ofEnableSizing]”。
(13)選擇“標准”頁上的Memo 選項,在窗體中添加Memo 控件,在“屬性”面板上設置其Name 屬性為“Memo1”,Color 屬性為“clWindow”,對齊方式Align 屬性為“alClIEnt”,使其占據窗體剩下空間。
詳細的代碼分析:
(1)當把鼠標放在快捷工具欄上時,程序會給出快捷菜單提示,同時,在窗體下方的中間,也有該快捷命令的說明文字。這需要添加相關代碼:
procedure TForm1.showhint(sender:tobject); //窗體底部提示語言 begin statusbar1.Panels[1].Text:=application.Hint; end;
(2)選擇文件菜單下的新建命令,則新建一個文本文件,並將所有相關屬性初始化。代碼如下:
procedure TForm1.filenewClick(Sender: TObject); //新建文件 begin memo1.Clear; memo1.setfocus; memo1.color:=clwhite; memo1.Font.Color:=clblack; memo1.Font.Size:=10; end;
(3)打開文件和保存文件的代碼如下:
procedure TForm1.fileopenClick(Sender: TObject); //打開文件 begin if OpenDialog1.execute then memo1.Lines.LoadFromFile(OpenDialog1.FileName); end; procedure TForm1.filesaveClick(Sender: TObject); //保存文件 begin if savedialog1.execute then memo1.Lines.SaveToFile(savedialog1.FileName); end;
(4)因為利用了ColorDialog 和FontDialog 控件,相關的字體編輯部分的代碼很簡單,具體代碼如下:
procedure TForm1.EditcutClick(Sender: TObject); //剪切 begin memo1.CutToClipboard; end; procedure TForm1.EditcopyClick(Sender: TObject); //復制 begin memo1.CopyToClipboard; end; procedure TForm1.EditpasteClick(Sender: TObject); //粘貼 begin memo1.PasteFromClipboard; end; procedure TForm1.selectall1Click(Sender: TObject); //全選 begin memo1.SelectAll; end; procedure TForm1.auto1Click(Sender: TObject); //自動換行 begin auto1.Checked:=not auto1.Checked; if auto1.Checked then memo1.WordWrap:=true else memo1.WordWrap:=False; end; procedure TForm1.leftalignClick(Sender: TObject); //左對齊 begin leftalign.Checked:=not leftalign.Checked; if leftalign.Checked then memo1.Alignment:=taleftjustify; end; procedure TForm1.centeralignClick(Sender: TObject); //居中 begin centeralign.Checked:=not centeralign.Checked; if centeralign.Checked then memo1.Alignment:=tacenter; end; procedure TForm1.rightalignClick(Sender: TObject); //右對齊 begin rightalign.Checked:=not rightalign.Checked; if rightalign.Checked then memo1.Alignment:=tarightjustify; end; procedure TForm1.bold1Click(Sender: TObject); //字體加粗 begin bold1.Checked:=not bold1.Checked; if bold1.Checked then memo1.Font.Style:=memo1.Font.Style+[fsbold] else memo1.Font.Style:=memo1.Font.Style-[fsbold]; end; procedure TForm1.italicClick(Sender: TObject); //字體傾斜 begin italic.Checked:=not italic.Checked; if italic.Checked then memo1.Font.Style:=memo1.Font.Style+[fsitalic] else memo1.Font.Style:=memo1.Font.Style-[fsitalic]; end; procedure TForm1.underline1Click(Sender: TObject); //字體加下劃線 begin underline1.Checked:=not underline1.Checked; if underline1.Checked then memo1.Font.Style:=memo1.Font.Style+[fsunderline] else memo1.Font.Style:=memo1.Font.Style-[fsunderline]; end; procedure TForm1.color1Click(Sender: TObject); //字體顏色 begin if colordialog1.execute then memo1.Font.Color:=colordialog1.Color; end; procedure TForm1.backgroundClick(Sender: TObject); //窗體背景顏色 begin if colordialog1.execute then memo1.Color:=colordialog1.Color; end;
(5)當點擊窗體上的SpinEdit 控件,可以改變文本中文字的大小:
procedure TForm1.SpinEdit1Change(Sender: TObject); //改變字體大小 begin memo1.Font.Size:=spinEdit1.Value; end;
(6)窗體中的快捷工具欄無需填寫代碼,只需在“屬性”面板上“事件”頁中設置其OnClick 事件為對應菜單即可。
vIEw source