附上代碼 向數據庫寫caption procedure TFrmmain.GetCaption(FRM:TForm); var i:integer; Compt:TComponent; begin for I := FRM.ComponentCount - 1 downto 0 do begin Compt:=FRM.Components[i]; try if (Compt is Tbitbtn) then begin ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as Tbitbtn).Caption+''')') ; end else if (Compt is TSeSkinDBRadioGroup) then begin ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TSeSkinDBRadioGroup).Caption+''')') ; end else if (Compt is TLabel) then begin ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TLabel).Caption+''')') ; end else if (Compt is TRzGroup) then begin ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TRzGroup).Caption+''')') ; end else if (Compt is TRZTabSheet) then begin ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TRZTabSheet).Caption+''')') ; end else if (Compt is TSpeedButton) then begin ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TSpeedButton).Caption+''')') ; end else if (Compt is TMainMenu) then begin ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TMainMenu).Items.Items[0].Items[0].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TMainMenu).Items.Items[0].Items[1].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TMainMenu).Items.Items[0].Items[2].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TMainMenu).Items.Items[0].Items[3].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TMainMenu).Items.Items[0].Items[4].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TMainMenu).Items.Items[0].Items[5].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TMainMenu).Items.Items[1].Items[0].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TMainMenu).Items.Items[1].Items[1].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TMainMenu).Items.Items[2].Items[0].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TMainMenu).Items.Items[2].Items[1].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TMainMenu).Items.Items[2].Items[2].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TMainMenu).Items.Items[3].Items[0].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TMainMenu).Items.Items[3].Items[1].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TMainMenu).Items.Items[3].Items[2].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TMainMenu).Items.Items[3].Items[3].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TMainMenu).Items.Items[4].Items[0].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TMainMenu).Items.Items[4].Items[1].Caption+''')'); end else if (Compt is TRzToolbutton) then begin ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TRzToolbutton).hint+''')'); end else if (Compt is TRzButton) then begin ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TRzButton).Caption+''')'); end else if (Compt is TGroupBox) then begin ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TGroupBox).Caption+''')'); end else if (Compt is TRzLabel) then begin ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+ FrmBaseInfo.AddNo('RecordNO','Version')+''','''+ (Compt as TRzLabel).Caption+''')'); end; except end; end; end;
取出captionfunction TFrmmain.Get_chinese_caption(s_caption:string;VersinonFlag:string) : string;begin if not DM.ADOQVerSion.Active then DM.ADOQVerSion.Open; try if UpperCase(VersinonFlag)='E' then result :=s_caption else if UpperCase(VersinonFlag)='C'then begin if (trim(s_caption)<>NULL) and (trim(s_caption)<>'') then begin result :=DM.ADOQVerSion.Lookup('RecordNO;Englishi',VarArrayOf([0,trim(s_caption)]),'ChineseGBig5'); end;
end else if UpperCase(VersinonFlag)='P' then begin if(trim(s_caption)<>NULL) and (trim(s_caption)<>'') then begin result :=DM.ADOQVerSion.Lookup('RecordNO;Englishi',VarArrayOf([0,trim(s_caption)]),'ChineseGB') end;
unit GB2Big5;interface
uses
SysUtils, Windows;
function Big5StringToGBString(Src : string) : string;
implementation
function StrConv(pszSrc : PChar; cpSrc : UINT; pszDest : PChar; cbDest :
Longint; cpDest : UINT) : Longint;
var
buf : PWideChar;
cwLen : LongInt;
begin
cwLen := MultiByteToWideChar(cpSrc,
0,
pszSrc,
-1,
nil,
0);
GetMem(buf, (cwLen+1) * SizeOf(WideChar));
ZeroMemory(buf, (cwLen+1) * SizeOf(WideChar));
MultiByteToWideChar(cpSrc,
0,
pszSrc,
StrLen(pszSrc),
buf,
cwLen+1);
Result := WideCharToMultiByte(cpDest,
0,
buf,
-1,
pszDest,
cbDest,
nil,
nil);
FreeMem(buf);
end;function StringConv(const Src : string; cpSrc, cpDest : UINT) : string;
var
buf : PChar;
len : Longint;
begin
len := StrConv(PChar(Src), cpSrc, nil, 0, cpDest);
GetMem(buf, len);
ZeroMemory(buf, len);
StrConv(PChar(Src), cpSrc, buf, len, cpDest);
Result := string(buf);
FreeMem(buf);
end;function CHTStringToCHSString(Src : string) : string;
var
buf : PChar;
len : Integer;
begin
len := LCMapString($804, // LCID_CHINESE_SIMPLIFIED
LCMAP_SIMPLIFIED_CHINESE,
PChar(Src),
-1,
nil,
0);
GetMem(buf, len);
ZeroMemory(buf, len);
LCMapString($804, // LCID_CHINESE_SIMPLIFIED
LCMAP_SIMPLIFIED_CHINESE,
PChar(Src),
-1,
buf,
len);
Result := string(buf);
FreeMem(buf);
end;function CHSStringToCHTString(Src : string) : string;
var
buf : PChar;
len : Integer;
begin
len := LCMapString($404, // LCID_CHINESE_SIMPLIFIED
LCMAP_TRADITIONAL_CHINESE,
PChar(Src),
-1,
nil,
0);
GetMem(buf, len);
ZeroMemory(buf, len);
LCMapString($404, // LCID_CHINESE_SIMPLIFIED
LCMAP_TRADITIONAL_CHINESE,
PChar(Src),
-1,
buf,
len);
Result := string(buf);
FreeMem(buf);
end;function CHTToCHS(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;
begin
Result := LCMapString($804, // LCID_CHINESE_SIMPLIFIED
LCMAP_SIMPLIFIED_CHINESE,
pszSrc,
-1,
pszDest,
cbDest);
end;function CHSToCHT(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;
begin
Result := LCMapString($404, // LCID_CHINESE_SIMPLIFIED
LCMAP_TRADITIONAL_CHINESE,
pszSrc,
-1,
pszDest,
cbDest);
end;function Big5StringToGBString(Src : string) : string;
begin
Result := CHTStringToCHSString(StringConv(Src, 950, 936));
end;function Big5ToGB(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;
var
buf : PChar;
len : Integer;
begin
len := StrLen(pszSrc)+1;
GetMem(buf, len*2);
ZeroMemory(buf, len*2);
StrConv(pszSrc, 950, buf, 936, len*2);
Result := CHTToCHS(buf, pszDest, cbDest);
FreeMem(buf);
end;function GBStringToBig5String(Src : string) : string;
begin
Result := CHSStringToCHTString(StringConv(Src, 936, 950));
end;function GBToBig5(pszSrc, pszDest : PChar; cbDest : Longint) : Longint;
var
buf : PChar;
len : Integer;
begin
len := StrLen(pszSrc)+1;
GetMem(buf, len*2);
ZeroMemory(buf, len*2);
StrConv(pszSrc, 936, buf, 950, len*2);
Result := CHSToCHT(buf, pszDest, cbDest);
FreeMem(buf);
end;end.
用數據庫把所有的控件的Caption存放到數據庫
如果系統作的是繁體,對應的把簡體的Caption也存放到數據庫
可用ini文件控制版本.
需要哪種版本用程序取那種版本的Caption即可
任何系統均實用
向數據庫寫caption
procedure TFrmmain.GetCaption(FRM:TForm);
var
i:integer;
Compt:TComponent;
begin
for I := FRM.ComponentCount - 1 downto 0 do
begin
Compt:=FRM.Components[i];
try
if (Compt is Tbitbtn) then
begin
ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as Tbitbtn).Caption+''')') ;
end
else
if (Compt is TSeSkinDBRadioGroup) then
begin
ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TSeSkinDBRadioGroup).Caption+''')') ;
end
else if (Compt is TLabel) then
begin
ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TLabel).Caption+''')') ;
end
else if (Compt is TRzGroup) then
begin
ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TRzGroup).Caption+''')') ;
end
else if (Compt is TRZTabSheet) then
begin
ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TRZTabSheet).Caption+''')') ;
end
else if (Compt is TSpeedButton) then
begin
ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TSpeedButton).Caption+''')') ;
end
else if (Compt is TMainMenu) then
begin
ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TMainMenu).Items.Items[0].Items[0].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TMainMenu).Items.Items[0].Items[1].Caption+''')');
ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TMainMenu).Items.Items[0].Items[2].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TMainMenu).Items.Items[0].Items[3].Caption+''')');
ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TMainMenu).Items.Items[0].Items[4].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TMainMenu).Items.Items[0].Items[5].Caption+''')');
ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TMainMenu).Items.Items[1].Items[0].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TMainMenu).Items.Items[1].Items[1].Caption+''')');
ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TMainMenu).Items.Items[2].Items[0].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TMainMenu).Items.Items[2].Items[1].Caption+''')');
ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TMainMenu).Items.Items[2].Items[2].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TMainMenu).Items.Items[3].Items[0].Caption+''')');
ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TMainMenu).Items.Items[3].Items[1].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TMainMenu).Items.Items[3].Items[2].Caption+''')');
ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TMainMenu).Items.Items[3].Items[3].Caption+''')'); ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TMainMenu).Items.Items[4].Items[0].Caption+''')');
ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TMainMenu).Items.Items[4].Items[1].Caption+''')');
end
else if (Compt is TRzToolbutton) then
begin
ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TRzToolbutton).hint+''')');
end
else if (Compt is TRzButton) then
begin
ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TRzButton).Caption+''')');
end
else if (Compt is TGroupBox) then
begin
ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TGroupBox).Caption+''')');
end
else if (Compt is TRzLabel) then
begin
ExecuteSQL(dm.ADOQVerSion,'INSERT INTO Version (RecordNO,Englishi) VALUES('''+
FrmBaseInfo.AddNo('RecordNO','Version')+''','''+
(Compt as TRzLabel).Caption+''')');
end;
except
end;
end;
end;
try
if UpperCase(VersinonFlag)='E' then
result :=s_caption
else
if UpperCase(VersinonFlag)='C'then
begin
if (trim(s_caption)<>NULL) and (trim(s_caption)<>'') then
begin
result :=DM.ADOQVerSion.Lookup('RecordNO;Englishi',VarArrayOf([0,trim(s_caption)]),'ChineseGBig5');
end;
end
else
if UpperCase(VersinonFlag)='P' then
begin
if(trim(s_caption)<>NULL) and (trim(s_caption)<>'') then
begin
result :=DM.ADOQVerSion.Lookup('RecordNO;Englishi',VarArrayOf([0,trim(s_caption)]),'ChineseGB')
end;
end
except
result:=s_caption;
end;
end;
转换测试的结果不太对呀!是不是少了什么??请指教,多谢呵呵!