修正TMS的TAdvOfficePager, TAdvOfficeTabSet, TAdvOfficeMDITabSet不兼容汉字问题 今天,偶然在使用TMS的TAdvOfficePager时发现在设置TAdvOfficePager的Page时,如果Page的Caption存在汉字,那么TAdvOfficePager在绘制Page的Caption时就会出现很多乱码。刚刚察看代码,发现是String和WideString的问题,String类型默认是单字节,而WideString是双字节的,那么在调用Length(Page.Caption)时就会产生字符串长度的问题。因此在AdvOfficePager,AdvOfficeTabSet单元中找到DrawVistaText函数,修正如下:
function DrawVistaText(Canvas: TCanvas; Alignment: TAlignment; r: TRect; FCaption:string; AFont: TFont; Enabled: Boolean; RealDraw: Boolean; AntiAlias: TAntiAlias; Direction: TTabPosition; Ellipsis: Boolean): TRect; 将Caption:String改为FCaption:String,然后在函数中新建一个变量“Caption:WideString”,最后在代码段的第一行加入:Caption:=FCaption;即可。
修正代码完全保证了源代码的兼容性,仅仅是在开始改变了Caption的类型。 |