如何完美解决delphi报表控件显示中文字体不正确的问题? (100分)

  • 主题发起人 主题发起人 samcrm
  • 开始时间 开始时间
S

samcrm

Unregistered / Unconfirmed
GUEST, unregistred user!
该问题更改为:
如何完美解决delphi报表控件对中文字体显示问题?
用delphi的QickReport控件做出的中文报表,在预览时,
中文字体间距不一样,甚至几个汉字会重叠在一起!
请问,有什么好的办法解决吗?
2002/07/30
 
MutexHandle := CreateMutex(nil, True, 'Mutex_1');
if (MutexHandle <> 0) and (GetLastError = ERROR_ALREADY_EXISTS) then
begin
MutexHandle := CreateMutex(nil, True, 'Mutex_2');
if (MutexHandle <> 0) and (GetLastError = ERROR_ALREADY_EXISTS) then
Halt;
end;
 
请问可以讲具体些吗?
'Mutex_1'代表软件的什么属性?
因为软件运行时不知它的具体窗口名称,按Ctrl+Alt+Del调出关闭程序窗口,
显示的并不是该软件的真正窗口句柄名称。最好你能用一个软件试验成功后
再告诉我好吗?
 
查一下“只能运行一个”的贴子就知道了。
 
该程序可能运用不同的技术来只能运行一次,采用互斥只是一种办法
 
只让运行一次的原因是什么,是因为不能运行两次,要是运行两次肯定会导致某种错误。
所以想法虽然可行,但毫无实际意义。
 
我做到了这一步
procedure TForm1.Button1Click(Sender: TObject);
var
ZAppName: array[0..255] of char;
Hold: String;
Found: HWND;
begin
Hold :=Edit1.Text;
StrPCopy(ZAppName, Hold);
Found := FindWindow(nil, ZAppName);
if Found<>0 then
begin
ShowMessage('OK');
end
else
ShowMessage('No');
end;
编译后按Ctrl+Alt+Del调出关闭程序窗口,
随便记住一个正在运行的程序名称,例如Winamp 2.79
在Edit1中输入'Winamp 2.79',点Button1,显示'OK',
证明找到了正确的窗口,
但是如何改变窗口名称呢?例如把'Winamp 2.79'改为'AAAAA'。
要求改后按Ctrl+Alt+Del调出关闭程序窗口看到的是'AAAAA'而
不是把'Winamp 2.79'。好象用API函数可以,是哪个呢?最好能
帮我补充到我上面的程序里。可以的话就加分。
 
不行的!
因为人家判断唯一性的方法是很多的:互斥、GlobalAtom、Caption、Message等,
有些东西你可以改,可是有些就不行了,而且估计很多软件都是用的那种不容易改的方法
 
同意beta
除非刚好那个程序是用Caption及类名来判断的
再说类名好象不能在运行时更改的
 
对对,有些东东改不了,就没办法了.
 
更麻烦的是要是人家用自己定义的怪里怪气的方法,你是不可能知道的,更别说改了
比如说,我每启动一次,就往 Windows 目录下某个指定文件内写入一行,若是这样,
你就算把前面的方法都试便了都不可能解决:-(
我不是想泼你冷水,但是由于该问题的特殊性,不可能找到一个通行的办法,只能是
具体问题具体分析。
 
有人知道吗?
 
请注意,该问题更改为:
如何完美解决delphi报表控件对中文字体显示问题?
用delphi的QickReport控件做出的中文报表,在预览时,
中文字体间距不一样,甚至几个汉字会重叠在一起!
请问,有什么好的办法解决吗?
 
自己查以前的问题找到答案了!
网管,怎么把分收回?
 
大佬啊,也不要这么节省啊,都像这样,以后这离线数据库可怎么看啊?
 

Similar threads

后退
顶部