| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- unit RealICQMultiLanguage;
- interface
- uses
- Windows,
- Messages,
- SysUtils,
- Variants,
- Classes,
- Graphics,
- Controls,
- Forms,
- ComCtrls,
- ExtCtrls,
- Buttons,
- StdCtrls,
- ToolWin,
- OleCtrls,
- Menus,
- ActnList,
- IniFiles,
- StrUtils;
- type
- TRealICQMultiLanguage = class
- private
- FForm: TForm;
- FLanguageIniFile: String;
- FFont: TFont;
- procedure SetLanguageIniFile(ALanguageIniFile: String);
- protected
- public
- constructor Create(AForm: TForm);
- destructor Destroy; override;
- published
- property LanguageIniFile: String read FLanguageIniFile write SetLanguageIniFile;
- end;
-
- function FilterStr(AValue: String): String;
- implementation
- function FilterStr(AValue: String): String;
- begin
- Result := AnsiReplaceStr(AnsiReplaceStr(AValue, '\n', #$D#$A), '\s', ' ');
- end;
- //------------------------------------------------------------------------------
- constructor TRealICQMultiLanguage.Create(AForm: TForm);
- begin
- FForm := AForm;
- FFont := TFont.Create;
- end;
- //------------------------------------------------------------------------------
- destructor TRealICQMultiLanguage.Destroy;
- begin
- try
- FreeAndNil(FFont);
- finally
- inherited Destroy;
- end;
- end;
- //------------------------------------------------------------------------------
- procedure TRealICQMultiLanguage.SetLanguageIniFile(ALanguageIniFile: String);
- var
- IniFile: TIniFile;
- AComponent: TComponent;
- iLoop: Integer;
- procedure ChangeFont(AFont: TFont);
- begin
- AFont.Charset := FFont.Charset;
- AFont.Name := FFont.Name;
- AFont.Size := FFont.Size;
- end;
- begin
- FLanguageIniFile := ALanguageIniFile;
- IniFile := TIniFile.Create(FLanguageIniFile);
- try
- with IniFile do
- begin
- FFont.Charset := ReadInteger('Font', 'Charset', 1);
- FFont.Name := ReadString('Font', 'Name', 'ËÎÌå');
- FFont.Size := ReadInteger('Font', 'Size', 9);
- ChangeFont(FForm.Font);
- for iLoop := 0 to FForm.ComponentCount - 1 do
- begin
- AComponent := FForm.Components[iLoop];
- if AComponent is TLabel then
- begin
- (AComponent as TLabel).Caption := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Caption', (AComponent as TLabel).Caption));
- (AComponent as TLabel).Hint := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Hint', (AComponent as TLabel).Hint));
- (AComponent as TLabel).ShowHint := Length(Trim((AComponent as TLabel).Hint)) > 0;
- ChangeFont((AComponent as TLabel).Font);
- end;
- if AComponent is TEdit then
- begin
- (AComponent as TEdit).Text := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Text', (AComponent as TEdit).Text));
- (AComponent as TEdit).Hint := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Hint', (AComponent as TEdit).Hint));
- (AComponent as TEdit).ShowHint := Length(Trim((AComponent as TEdit).Hint)) > 0;
- ChangeFont((AComponent as TEdit).Font);
- end;
- if AComponent is TCheckBox then
- begin
- (AComponent as TCheckBox).Caption := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Caption', (AComponent as TCheckBox).Caption));
- (AComponent as TCheckBox).Hint := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Hint', (AComponent as TCheckBox).Hint));
- (AComponent as TCheckBox).ShowHint := Length(Trim((AComponent as TCheckBox).Hint)) > 0;
- ChangeFont((AComponent as TCheckBox).Font);
- end;
- if AComponent is TBitBtn then
- begin
- (AComponent as TBitBtn).Caption := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Caption', (AComponent as TBitBtn).Caption));
- (AComponent as TBitBtn).Hint := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Hint', (AComponent as TBitBtn).Hint));
- (AComponent as TBitBtn).ShowHint := Length(Trim((AComponent as TBitBtn).Hint)) > 0;
- ChangeFont((AComponent as TBitBtn).Font);
- end;
- if AComponent is TButton then
- begin
- (AComponent as TButton).Caption := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Caption', (AComponent as TButton).Caption));
- (AComponent as TButton).Hint := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Hint', (AComponent as TButton).Hint));
- (AComponent as TButton).ShowHint := Length(Trim((AComponent as TButton).Hint)) > 0;
- ChangeFont((AComponent as TButton).Font);
- end;
- if AComponent is TRadioButton then
- begin
- (AComponent as TRadioButton).Caption := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Caption', (AComponent as TRadioButton).Caption));
- (AComponent as TRadioButton).Hint := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Hint', (AComponent as TRadioButton).Hint));
- (AComponent as TRadioButton).ShowHint := Length(Trim((AComponent as TRadioButton).Hint)) > 0;
- ChangeFont((AComponent as TRadioButton).Font);
- end;
- if AComponent is TGroupBox then
- begin
- (AComponent as TGroupBox).Caption := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Caption', (AComponent as TGroupBox).Caption));
- (AComponent as TGroupBox).Hint := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Hint', (AComponent as TGroupBox).Hint));
- (AComponent as TGroupBox).ShowHint := Length(Trim((AComponent as TGroupBox).Hint)) > 0;
- ChangeFont((AComponent as TGroupBox).Font);
- end;
- if AComponent is TPanel then
- begin
- (AComponent as TPanel).Caption := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Caption', (AComponent as TPanel).Caption));
- (AComponent as TPanel).Hint := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Hint', (AComponent as TPanel).Hint));
- (AComponent as TPanel).ShowHint := Length(Trim((AComponent as TPanel).Hint)) > 0;
- ChangeFont((AComponent as TPanel).Font);
- end;
- if AComponent is TAction then
- begin
- (AComponent as TAction).Caption := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Caption', (AComponent as TAction).Caption));
- (AComponent as TAction).Hint := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Hint', (AComponent as TAction).Hint));
- end;
- if AComponent is TComboBoxEx then
- begin
- (AComponent as TComboBoxEx).Text := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Text', (AComponent as TComboBoxEx).Text));
- (AComponent as TComboBoxEx).Hint := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Hint', (AComponent as TComboBoxEx).Hint));
- (AComponent as TComboBoxEx).ShowHint := Length(Trim((AComponent as TComboBoxEx).Hint)) > 0;
- ChangeFont((AComponent as TComboBoxEx).Font);
- end;
- if AComponent is TMenuItem then
- begin
- (AComponent as TMenuItem).Caption := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Caption', (AComponent as TMenuItem).Caption));
- (AComponent as TMenuItem).Hint := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Hint', (AComponent as TMenuItem).Hint));
- end;
- if AComponent is TImage then
- begin
- (AComponent as TImage).Hint := FilterStr(ReadString(String(FForm.ClassName), AComponent.Name + '.Hint', (AComponent as TImage).Hint));
- (AComponent as TImage).ShowHint := Length(Trim((AComponent as TImage).Hint)) > 0;
- end;
- end;
- end;
- finally
- FreeAndNil(IniFile);
- end;
- end;
- end.
|