发现有时调用showMessage、messageDlg程序停止相应,一开始没有在意。后来跟踪一下发现运行到Dialogs.pas单元GetAveCharSize(Canvas: TCanvas): TPoint函数的如下语句
GetTextExtentPoint(Canvas.Handle, Buffer, 52, TSize(Result))
时程序停止响应,这时Result的x、y中有一个是负数,于是在前面添加:
Result.X:=10; Result.Y:=10; // dyf 2003-02-18 我添加的
结果还是一样。事情起因是我在数据模块中调用MainForm.ProgressBar用于显示进度,如果注释调这些语句则没有问题。调用过程如下:
function TBackup.RestoreAll: boolean;
var
i:integer;
begin
ImportForm.cbbLog.Clear;
MainForm.ProgressBar.Visible:=True;
for i:=0 to Ftables.Count-1 do begin
Result:=Restore(TTableBackup(Ftables.Objects[i]));
MainForm.ProgressBar.Position:=(i+1)*100 div Ftables.Count;
if not Result then Break;
end;
MainForm.ProgressBar.Visible:=False;
end;Dialogs.pas单元GetAveCharSize函数如下,用于获得字符width\height
function GetAveCharSize(Canvas: TCanvas): TPoint;
var
I: Integer;
Buffer: array[0..51] of Char;
begin
Result.X:=10; Result.Y:=10; // dyf 2003-02-18 我添加的
for I := 0 to 25 do
Buffer[I] := Chr(I + Ord('A'));
for I := 0 to 25 do
Buffer[I + 26] := Chr(I + Ord('a'));
GetTextExtentPoint(Canvas.Handle, Buffer, 52, TSize(Result));
Result.X := Result.X div 52;
end;
GetTextExtentPoint(Canvas.Handle, Buffer, 52, TSize(Result))
时程序停止响应,这时Result的x、y中有一个是负数,于是在前面添加:
Result.X:=10; Result.Y:=10; // dyf 2003-02-18 我添加的
结果还是一样。事情起因是我在数据模块中调用MainForm.ProgressBar用于显示进度,如果注释调这些语句则没有问题。调用过程如下:
function TBackup.RestoreAll: boolean;
var
i:integer;
begin
ImportForm.cbbLog.Clear;
MainForm.ProgressBar.Visible:=True;
for i:=0 to Ftables.Count-1 do begin
Result:=Restore(TTableBackup(Ftables.Objects[i]));
MainForm.ProgressBar.Position:=(i+1)*100 div Ftables.Count;
if not Result then Break;
end;
MainForm.ProgressBar.Visible:=False;
end;Dialogs.pas单元GetAveCharSize函数如下,用于获得字符width\height
function GetAveCharSize(Canvas: TCanvas): TPoint;
var
I: Integer;
Buffer: array[0..51] of Char;
begin
Result.X:=10; Result.Y:=10; // dyf 2003-02-18 我添加的
for I := 0 to 25 do
Buffer[I] := Chr(I + Ord('A'));
for I := 0 to 25 do
Buffer[I + 26] := Chr(I + Ord('a'));
GetTextExtentPoint(Canvas.Handle, Buffer, 52, TSize(Result));
Result.X := Result.X div 52;
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货