在一些軟件中,我們經常會看到界面語言切換功能,不過程序需要的這些各國語言信息都封裝在DLL中,有的也存儲在INI文件中,下面我就向大家介紹一個小技巧,在DELPHI中不需要任何DLL文件和INI文件,就可以實現此功能。
首先新建一工程,然後在窗體FORM1中加入一些控件,在這裡我假設加入了如下控件:三個TBUTTON按鈕,兩個TCHECKBOX,一個TGROUPBOX和一個菜單。
然後把他們的CAPTION屬性改為中文信息,再將對應的英文信息放在這些控件的HINT屬性中,信息如下:
控件名稱 CAPTION屬性值 HINT屬性值 Button1 中文 Chinese Button2 英文 English Button3 忽略 Ignore CheckBox1 一般 General CheckBox2 高級 Advanced GroupBox1 信息 Information PopupMenu1 N1 當前日期 Current Date N2 幫助 Help N3 關於 About N4 退出 Exit最後將Button1的TAG屬性改為1,Button2的TAG屬性改為2,雙擊FORM1,BUTTON1和BUTTON2,編寫代碼如下:
procedure TForm1.FormCreate(Sender : Tobject);
begin
//初始化,顯示中文界面
Button1.Enabled := False;
Button2.Enabled :=True
end;
procedure TForm1.ChangeState(Mode : Byte); //改變按鈕狀態
begin
if Mode = 1 then //如果是顯示中文,則Button1失效,Button2有效
begin
Button1.Enabled := False;
Button2.Enabled := True;
End
Else
Begin
Button1.Enabled := True;
Button2.Enabled := False;
End;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
CS : String;
Begin
ChangeState(Tbutton(Sender).Tag);
for i:=0 to ComponentCount-1 do
begin
//將窗體中的菜單項的中/英文進行切換
if Components[i] is TMenuItem then
begin
CS := TMenuItem(Components[i]).Hint ;
TMenuItem(Components[i]).Hint:= TMenuItem(Components[i]).Caption ;
TMenuItem(Components[i]).Caption := CS ;
end;
//將窗體中的按鈕的中/英文進行切換
if Components[i] is TButton then
begin
CS := TButton(Components[i]).Hint ;
TButton(Components[i]).Hint := TButton(Components[i]).Caption ;
TButton(Components[i]).Caption := CS ;
end;
//將窗體中的復選框的中/英文進行切換
if Components[i] is TCheckBox then
begin
CS:=TCheckBox(Components[i]).Hint ;
TCheckBox(Components[i]).Hint:=TCheckBox(Components[i]).Caption ;
TCheckBox(Components[i]).Caption := CS ;
end;
//將窗體中的組合框的中/英文進行切換
if Components[i] is TGroupBox then
begin
CS:=TGroupBox(Components[i]).Hint ;
TGroupBox(Components[i]).Hint:=TGroupBox(Components[i]).Caption ;
TGroupBox(Components[i]).Caption := CS ;
end;
end;
end;
最後再將Button2的ONCLICK事件指向Button1的ONCLICK事件,按F9,運行一下,看看效果,切換的速度也非常快,有興趣的朋友可以試試。
(本程序在DELPHI6+WIN2000環境下調試通過)