一用就出错,‘Canvas does not allow drawing’,用MessageBox就不会。Why?!
解决方案 »
- FastReport如何打印二维条形码?
- 哪位有DevExpress.PrintingSystem FOR D6 控件的安装版?送100分!
- adoquery 的错误 field ' ' not found 解决后马上散分。以前遇到过这样的问题解决了。后来又忘记了。
- 如何让edit控件显示的文本向右对齐?
- 初学delphi, 使用控件的问题
- ???为了交流技术,我有几套代码想交换,谁有好的东西看看能否互相交流一下。
- 初始化com对象出错。
- 如何隐藏目录或把目录的图标改成系统其他图标题
- 多线程中静态调用DLL 需要手工释放吗?
- Delphi中的“增强搜索”功能谁会用?
- 和一个自称可以搞到1月8号4级考试答案的人的聊天记录!(惊爆4级舞弊内幕)
- 这个是什么错怎么改?
你的为什么不行,不太清楚
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ComCtrls, ExtCtrls, ADODB, Grids, DBGrids, DBCtrls, StdCtrls;type
TForm1 = class(TForm)
DBNavigator1: TDBNavigator;
DBGrid1: TDBGrid;
ADOConnection1: TADOConnection;
ADODataSet1: TADODataSet;
Panel1: TPanel;
ProgressBar1: TProgressBar;
DataSource1: TDataSource;
ADOCommand1: TADOCommand;
Button1: TButton;
Button2: TButton;
procedure FormActivate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure ADODataSet1FetchProgress(DataSet: TCustomADODataSet;
Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
procedure ADODataSet1FetchComplete(DataSet: TCustomADODataSet;
const Error: Error; var EventStatus: TEventStatus);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
var
lStart, lEnd : DWORD;procedure TForm1.FormActivate(Sender: TObject);
var
sRecCount : string;
begin
ProgressBar1.Max := ADOCommand1.Execute.Fields.Item[0].Value;
sRecCount := IntToStr(ProgressBar1.Max);
self.Caption := '共有' + sRecCount + '条记录';
ProgressBar1.Max := ProgressBar1.Max;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
try
ADODataSet1.Active := false;
ADODataSet1.ExecuteOptions := [eoAsyncFetchNonBlocking];
finally
lStart := GetTickCount;
ADODataSet1.Active := true;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
try
ADODataSet1.Active := false;
ADODataSet1.ExecuteOptions := [eoAsyncFetch];
finally
lStart := GetTickCount;
ADODataSet1.Active := true;
end;
end;procedure TForm1.ADODataSet1FetchProgress(DataSet: TCustomADODataSet;
Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
begin
ProgressBar1.Position := Progress;
end;procedure TForm1.ADODataSet1FetchComplete(DataSet: TCustomADODataSet;
const Error: Error; var EventStatus: TEventStatus);
begin
lEnd := GetTickCount;
ShowMessage('总共花了' + FloatToStr((lEnd - lStart) / 1000.0) + '秒。'); <<<---这里报错,用下面的MessageBox就可以
//MessageBox(GetActiveWindow(),PChar('总共花了' + FloatToStr((lEnd - lStart) / 1000.0) + '秒。'),'',MB_OK );
end;end.
是我个人想法 具体解决就是 使用messagebox.
你还可以咨询或等待 高手帮你彻底解决。 :)不过 别忘了告诉我!
感觉和这个有关系~~