第二章Windows 通用對話框(3 / 3)

Caption = '保存文件'

Font.Charset = DEFAULT_CHARSET

Font.Color = clWindowText

Font.Height = -13

Font.Name = 'MS Sans Serif'

Font.Style = []

ParentFont = False

TabOrder = 2

OnClick = Button2Click

end

object Button3: TButton

Caption = '字體設置'

Font.Charset = DEFAULT_CHARSET

Font.Color = clWindowText

Font.Height = -13

Font.Name = 'MS Sans Serif'

Font.Style = []

ParentFont = False

TabOrder = 3

OnClick = Button3Click

end

object Button4: TButton

Caption = '顏色設置'

Font.Charset = DEFAULT_CHARSET

Font.Color = clWindowText

Font.Height = -13

Font.Name = 'MS Sans Serif'

Font.Style = []

ParentFont = False

TabOrder = 4

OnClick = Button4Click

end

object OpenDialog1: TOpenDialog

Left = 80

Top = 120

end

object SaveDialog1: TSaveDialog

Left = 152

Top = 176

end

object FontDialog1: TFontDialog

Font.Charset = DEFAULT_CHARSET

Font.Color = clWindowText

Font.Height = -11

Font.Name = 'MS Sans Serif'

Font.Style = []

MinFontSize = 0

MaxFontSize = 0

Left = 216

Top = 224

end

object ColorDialog1: TColorDialog

Ctl3D = True

Left = 264

Top = 280

end

end

2.程序的初始化

在上一步中添加的ActiveX控件的作用如下所示:

?按鈕“Open”:打開一個指定的文本文件;

?按鈕“Save”:保存本次編輯的文本文件;

?按鈕“Font”:設置文本控件中文本顯示的字體;

?按鈕“Color”:設置文本控件中文本顯示的背景顏色;

?Memo控件:充當文本顯示的容器;

而其餘三個對話框控件的功能則是顯示相應的對話框,在程序的設計過程中,要在窗體的FormCreate()事件中添加對各個控件的初始化代碼。

在程序的設計過程中,用鼠標的左鍵雙擊窗體的空白處,在屏幕上就會彈出一個如圖2-15所示的代碼窗口。

圖2-15 彈出代碼窗口

把光標移動到窗體FormCreate()事件的處理過程中,並且在其中添加如下所示的程序初始化代碼:

procedure TForm1.FormCreate(Sender: TObject);

begin

form1.Memo1.Clear;

//文本控件的初始化

form1.OpenDialog1.InitialDir:='d:\';

//設置打開文件的缺省路徑

form1.OpenDialog1.Filter:='Text files(*.txt)|*.txt';

//設置打開文件過濾條件

form1.SaveDialog1.InitialDir:='d:\';

//設置保存文件的缺省路徑

form1.SaveDialog1.Filter:='Text files(*.txt)|*.txt';

//設置保存文件的文件過濾條件

end;

程序說明:

在程序運行的初期,程序首先執行窗體FormCreate()事件中的代碼,即通過語句form1.Memo1.Clear;來清空文本控件中的顯示內容,然後通過語句form1.OpenDialog1. InitialDir:= 'd:\';來設置打開文件的缺省路徑為“d:\”,最後設置文件的過濾條件。

3.響應按鈕事件

為了能夠實現各個按鈕預計的功能,在程序的設計過程中,用鼠標的左鍵雙擊響應的按鈕,在彈出的代碼窗口中添加相應的代碼即可。

為“打開文件”按鈕添加代碼:

procedure TForm1.Button1Click(Sender: TObject);

begin

if form1.OpenDialog1.Execute then

form1.Memo1.Lines.LoadFromFile(form1.opendialog1.filename);

//打開用戶指定的文件

end;

程序說明:

在程序的運行過程中,當用戶在“打開文件”按鈕上單擊鼠標的左鍵時,就會自動的激活控件的Button3Click()事件,如果以前沒有任何已經打開的“打開文件”對話框,程序通過代碼form1.Memo1.Lines.LoadFromFile(form1.opendialog1.filename);來打開一個“打開文件”對話框對話框。

Windows係統提供的典型的“打開文件”對話框如圖2-16所示,它是經過封裝的標準的對話框控件。

圖2-16 標準“打開文件”對話框

同理,為“保存文件”按鈕添加代碼:

procedure TForm1.Button2Click(Sender: TObject);

begin

if form1.SaveDialog1.Execute then

form1.Memo1.Lines.SaveToFile(form1.SaveDialog1.filename);

//保存用戶指定的文件

end;

程序說明:

在程序的運行過程中,當用戶在“保存文件”按鈕上單擊鼠標的左鍵時,就會自動的激活控件的Button4Click()事件,如果以前沒有任何已經打開的“保存文件”對話框,程序通過代碼form1.Memo1.Lines.SaveToFile(form1.savedialog1.filename);來打開一個“保存文件”對話框對話框。

Windows係統提供的典型的“保存文件”對話框如圖2-17所示,它也是經過封裝的標準的對話框控件。

圖2-17 標準“保存文件”對話框

下麵,以“字體設置”按鈕為例來說明字體設置對話框控件,代碼如下:

procedure TForm1.Button3Click(Sender: TObject);

begin

form1.FontDialog1.Font:=form1.Memo1.Font;

//初始化“字體”對話框的字體

if form1.FontDialog1.Execute then

form1.Memo1.Font:=form1.FontDialog1.Font;

//設置文本框的字體

end;

程序說明:

在程序的運行過程中,當用戶在“打開文件”按鈕上單擊鼠標的左鍵時,就會自動的激活控件的Button1Click()事件,首先程序通過代碼form1.FontDialog1.Font:=form1. Memo1.Font;來初始化打開的字體設置對話框的字體屬性,然後通過一個條件判斷語句來設置當前文本框中文本顯示的字體。

一個典型的字體設置對話框如圖2-18所示。

圖2-18 字體設置對話框

最後,為“顏色設置”按鈕添加執行代碼如下:

procedure TForm1.Button4Click(Sender: TObject);

begin

form1.ColorDialog1.Color:=form1.Memo1.Color;

//初始化"顏色"對話框的顏色

if form1.ColorDialog1.Execute then

form1.Memo1.Color:=form1.ColorDialog1.Color;

//設置文本框的顏色

end;

程序說明:

程序的運行過程中,當用戶在“顏色”按鈕上單擊鼠標的左鍵時,就會自動的激活控件的Button2Click()事件,首先程序通過代碼form1.Memo1.Color:=form1.ColorDialog1.Color;來初始化打開的顏色設置對話框的顏色屬性,然後通過一個條件判斷語句來設置當前文本框中文本顯示的顏色。

一個典型的顏色設置對話框如圖2-19所示。

圖2-19 字體設置對話框

注意:

?Windows還提供了其他的標準對話框控件,請讀者自己下去熟悉它們的使用。例如圖2-20所示為典型的“打印”對話框。

圖2-20 標準的“打印”對話框

4.運行程序

參看附後的源程序代碼,添加剩餘的程序代碼後,選擇菜單“File”中的“Save All”選項,存儲文件(這裏讀者可以保存項目為P_Dialog,單元文件名為Dialog)。

做完以上的工作後,按鍵盤上的功能鍵F9運行程序,在程序運行的初始畫麵中單擊“打開文件”按鈕,在屏幕上就會彈出一個“打開”的對話框,選擇一個有效的文本文件後,單擊“打開”按鈕,返回到程序的運行畫麵,結果如圖2-21所示。

圖2-21 在程序中打開一個文本文件

在程序運行的過程中,打開一個文本文件後,就可以選擇窗體上的“字體設置”和“顏色設置”按鈕來改變文本框中文本的顯示形式。

在本示例程序中,單擊“字體設置”按鈕,在彈出的“字體”對話框中選擇“幼圓”10號字體,單擊“顏色設置”按鈕,在彈出的“顏色”對話框中選擇一個“淡蘭色”的色彩,這樣改變了文本顯示形式的程序運行結果如圖2-22所示。

圖2-22 文本的不同顯示形式

下麵是程序的完整源代碼:

程序清單

unit dialog;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;

type

TForm1 = class(TForm)

Memo1: TMemo;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button4: TButton;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

FontDialog1: TFontDialog;

ColorDialog1: TColorDialog;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

begin

form1.Memo1.Clear;

//文本控件的初始化

form1.OpenDialog1.InitialDir:='d:\';

//設置打開文件的缺省路徑

form1.OpenDialog1.Filter:='Text files(*.txt)|*.txt';

//設置打開文件過濾條件

form1.SaveDialog1.InitialDir:='d:\';

//設置保存文件的缺省路徑

form1.SaveDialog1.Filter:='Text files(*.txt)|*.txt';

//設置保存文件的文件過濾條件

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

if form1.OpenDialog1.Execute then

form1.Memo1.Lines.LoadFromFile(form1.opendialog1.filename);

//打開用戶指定的文件

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

if form1.SaveDialog1.Execute then

form1.Memo1.Lines.SaveToFile(form1.SaveDialog1.filename);

//保存用戶指定的文件

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

form1.FontDialog1.Font:=form1.Memo1.Font;

//初始化"字體"對話框的字體

if form1.FontDialog1.Execute then

form1.Memo1.Font:=form1.FontDialog1.Font;

//設置文本框的字體

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

form1.ColorDialog1.Color:=form1.Memo1.Color;

//初始化"顏色"對話框的顏色

if form1.ColorDialog1.Execute then

form1.Memo1.Color:=form1.ColorDialog1.Color;

//設置文本框的顏色

end;

end.

2.4 小 結

在本章中,係統的介紹了程序運行過程中,人機交互的一種常用的手段——Windows對話框的程序設計方法,在讀者的程序開發實踐中,可以利用Delphi係統提供的對話框函數以及Delphi提供的標準對話框集合,來設計和編製自己的應用程序。

最後,讀者當然也可以自己定義對話框,這一點希望在以後的開發實踐中自己加以體會。