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提供的標準對話框集合,來設計和編製自己的應用程序。
最後,讀者當然也可以自己定義對話框,這一點希望在以後的開發實踐中自己加以體會。