急!急!急!在繁体操作系统下,如何正常显示GB2312字体?(200分)

  • 主题发起人 主题发起人 gengzhenhui888
  • 开始时间 开始时间
TO;fcl82
咱们的问题类似,tnt组件哪儿有?INI用unicode类型咋处理?谢谢关注
 
to gengzhenhui888
不好意思
周末一直没有上网

http://www.tntware.com/delphicontrols/unicode/
 
谢谢你,fcl82。tnt组件我安装了,比如我要用TntListView控件,不知道咋用?在属性中设置吗?
 
其实,tnt组件和一般组件的不同在caption,text等
tnt的为widestring
普通的为string
其它用法一样的
 
每个可视控件 都有 个 好象 是 charset属性吧,选择一下 字符集 具体哪个 因为 我现在 中文 系统下,没法查, 但是 我的 程序 控件上的文字是 日文 但是在 中文 系统不乱码,反之也可
但 这只是 控件的显示 不知道 lz说的是 参数啊 还是 控件上的文字 呵呵 个人意见
 
多谢了 tnt
 
to maldini610
你的程序是在中文下开发的么
我的即使charset=GB2312 font=宋体 在日文下也是乱码
caption内输入的是中文
 
我的程序中ListView的值是用这个函数取得的,如果在繁体或者英文操作系统下,这个函数取得的文件名本身已经是乱码了,所以不管用Tnt控件还是用函数转换,都不行。

我的函数:

function GetDisplayName(ShellFolder: IShellFolder; PIDL: PItemIDList;ForParsing: integer): Widestring;
var
StrRet: TStrRet;
P: PChar;
Flags: Integer;
begin
Result := '';
Case ForParsing of
1: Flags := SHGDN_FORPARSING;
2: Flags := SHGDN_NORMAL;
3: Flags := SHGDN_FORPARSING; //得到全路径
4: Flags := SHGDN_INFOLDER or SHGDN_FORPARSING;//得到带扩展名的名称
end;

ShellFolder.GetDisplayNameOf(PIDL, Flags, StrRet);

case StrRet.uType of
STRRET_CSTR:
SetString(Result, StrRet.cStr, lStrLen(StrRet.cStr));
STRRET_OFFSET:
begin
P := @PIDL.mkid.abID[StrRet.uOffset - SizeOf(PIDL.mkid.cb)];
SetString(Result, P, PIDL.mkid.cb - StrRet.uOffset);
end;
STRRET_WSTR:
Result := StrRet.pOleStr;
end;
end;

不知道有没有别的办法?修改函数?
 
to fc182:
我的程序在 日文系统 下 开发 字符集 是 delfault_charset 写的控件中的日文 在 中文系统下 显示不乱码
 
更换操作系统
我觉得是最好
 
to maldini610
你字体怎么设置的
MS Sans Serif么
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
609
import
I
后退
顶部