有没有使程序界面自动简繁转换的控件?(30分)

  • 主题发起人 主题发起人 siaosa
  • 开始时间 开始时间
To:郭玉梁
解决了告诉我一下.
现在许多的软件都可以实现:不论是简繁体操作系统,用户存储在数据库中的数据都可以正确的显示并且正确存储.我想可能是他们修改了DataSet的什么方法或者数据感知控件
 
--------------------------------------------------------------------------------
谢谢啦!另外如果有这样的简繁自动转换功能则更好:不论用户用简体还是繁体系统,系统能够自动显示简繁体,并且连数据感知控件也能够自动转换并正确存储.
--------------------------------------------------------------------------------

当然可以,用delphi本身的多语言支持就够了,甚至可以做到在程序中随时切换所使用语言(如简体、繁体、英文等)而不用重新启动程序或机器,也不管当前处于何种操作系统。

根本无需额外编程,你要做的就是打字,打字。。。
 
To:WickedladII
能说说具体怎么做吗?
 
label.fint.charset要設置成繁體,然後再轉換成繁體才能正確顯示,
或者使用tnt控件,unicode的,可以顯示多語言,不會亂碼的
 
To:boldfake
将charset要設置成繁體也一样会乱码的
程序太多了,如果再一个一个的更换控件不知道要搞到什么时候
 
function GB_BIG5(Value: string; bFull: Boolean = True): string;
var
Len: Integer;
s1, s2: string;
ws: WideString;
begin
Result := '';
Len := MultiByteToWideChar(936, 0, PChar(Value), -1, nil, 0);
SetLength(s1, Len * 2 + 1);
Len := LCMapString($0804, LCMAP_TRADITIONAL_CHINESE, PChar(Value), -1,
PChar(s1), Len * 2);
if bFull then
begin
SetLength(ws, Len);
MultiByteToWideChar(936, 0, PChar(s1), -1, PWideChar(ws), Len);
Len := WideCharToMultiByte(950, 0, PWideChar(ws), -1, nil, 0, nil, nil);
SetLength(s2, Len);
Len := WideCharToMultiByte(950, 0, PWideChar(ws), -1, PChar(s2),
Len, nil, nil);
Result := Copy(s2, 1, Len);
end
else
Result := Copy(s1, 1, Len);
Result := Trim(Result);
end;

function BIG5_GB(Value: string; bFull: Boolean = True): string;
var
Len: Integer;
s1, s2: string;
ws: WideString;
begin
if bFull then
begin
Len := MultiByteToWideChar(950, 0, PChar(Value), -1, nil, 0);
SetLength(ws, Len + 1);
MultiByteToWideChar(950, 0, PChar(Value), -1, PWideChar(ws), Len);
Len := WideCharToMultiByte(936, 0, PWideChar(ws), -1, nil, 0, nil, nil);
SetLength(s1, Len + 1);
SetLength(s2, Len + 1);
WideCharToMultiByte(936, 0, PWideChar(ws), -1, PChar(s1), Len, nil, nil);
Len := LCMapString($0804, LCMAP_SIMPLIFIED_CHINESE, PChar(s1), -1, PChar(s2), Len);
Result := Copy(s2, 1, Len);
end
else
begin
Len := MultiByteToWideChar(936, 0, PChar(Value), -1, nil, 0);
SetLength(s1, Len * 2 + 1);
Len := LCMapString($0804, LCMAP_SIMPLIFIED_CHINESE, PChar(Value), -1, PChar(s1), Len * 2);
Result := Copy(s1, 1, Len);
end;
Result := Trim(Result);
end;
 
To:samy_ywj 还是不行,一样的乱码
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(GB_Bigt('这是一测试')); //在繁体系统中正常显示繁体字
Label1.Caption:=GB_Big5(Label1.Caption); //Label1在繁体系统中乱码
end;
 
如果你是繁体系统中,bFull=True,简体系统中bFull=False
我在繁体系统中已经试过的,没有问题我用的是Win2000Pro繁体版
Label没有设置相应的繁体字体。
所以才会出现你上面所说的情况
 
procedure TfrmCBaseForm.FormCreate(Sender: TObject);
begin
if SysLocale.DefaultLCID=2052 then
begin
Font.Name := '宋体';
Font.Size := 9;
Font.Charset := GB2312_CHARSET;
end
else if SysLocale.DefaultLCID=1028 then
begin
Font.Name := '細明體';
Font.Size := 9;
Font.Charset := CHINESEBIG5_CHARSET;
end
else
begin
Font.Name := 'Tahoma';
Font.Size := 9;
Font.Charset := ANSI_CHARSET;
end;
end;
 
很简单的问题 动手做一做 搜一搜 就出来了 不行的话到台湾那些垃圾论坛找找 N年前早就有了
 
to siaosa
http://idc.9e3.com/web/samy_ywj
看看在你的繁体系统中行不行
 
To:samy_ywj
你是在简体环境下建好工程,编译完成,然后再到繁体下使用吗?我使用的是XP系统,按理说XP系统对文字的支持应该比W2K更好才对
 
对的。我在简体2003的系统下也编译过,没有问题
 
我用是samy_ywj提供的程序,要简体Win2K下也没问题。
 
俺也遇到和siaosa一样的问题,
to samy_ywj我下了您的系统在繁体Win2000pro下装起来,有2个地方是乱码的。
其余的地方都是对的,不知道您是怎么做到的?
 
哪些地方是错的呢?
 
QQ:330154262
 
to siaosa 其实你的问题已经解决了
你只需在转换前再加一句Label1.Caption:='这是一测试'就解决了,这得感谢samy_ywj兄,
samy_ywj兄,到非技术区来领分
 
To:农民工
没有解决

如果在简体系统设计时已经指定了Caption的值,它的值为任一中文
那么你在繁体系统再执行Label1.Caption:=GB_BIG5(Label1.Caption) 会乱码的
 
'如果在简体系统设计时已经指定了Caption的值,它的值为任一中文'
Caption的值应该在代码中指定,
Label1.Caption:='这是一测试'-----简体代码中的简体字
Label1.Caption:=GB_BIG5(Label1.Caption,true)
你看你上面的代码,其实你已经解决了
 
后退
顶部