以前有个疑问,一直没解决好.(远程数据库登录进度提示)(100)

  • 主题发起人 yuzhizhi
  • 开始时间
Y

yuzhizhi

Unregistered / Unconfirmed
GUEST, unregistred user!
uses activex,adob...; type TMyThread = class(TThread) Private ADOC: TADOConnection; protected procedure Execute; override; Public Constructor Create; DeStructor Destory; end;type TLogin_Form = class(TForm) Label1: TLabel; Label2: TLabel; ...... procedure BitBtn1Click(Sender: TObject);end;Constructor TMyThread.Create;begin ADOC:=TADOConnection.Create(Login_Form); FreeOnTerminate:=True; Inherited Create(False);end;DeStructor TMyThread.Destory;begin Destory;end;procedure TMyThread.Execute;begin try coinitialize(nil); with Login_Form do begin ADOC.ConnectionString:=''; Connect:='Provider=SQLOLEDB...'; ADOC.ConnectionString:=Connect; ADOC.KeepConnection:=True; try ADOC.Open; except messagedlg('服务器连接失败,请检查网络设备是否正常工作,或输入信息是否有误!',mtWarning,[mbOk],0); end; end;//with finally couninitialize; end;//initializeend;procedure TLogin_Form.BitBtn1Click(Sender: TObject);begin TMyThread.Create;end;//messagedlg(..).是按程序要求弹出之后,但弹出的是全屏白色窗体,不知道谁有这方面的解决办法?
 
估计还是消息循环问题,直接用API,messagebox试试你不应该在线程使用对话框之类的东西,一般都是发消息到窗体中,在窗体中处理界面元素
 
哈哈,我知道你是想在连接数据库时不让程序假死放在线程是不行的其实简单试试 TConnectOption 中 coAsyncConnect := True;
 
线程里面弹出对话框不好~, 还是能过属性什么的, 在主线程中弹出吧
 
To 张辉明: 接受你的见意,的确在多线程中最好不要处理窗口对话框之类的东西,如果要处理最好用API函数。TO liuls: 接受你的见意。To 星幻子:谢谢你的见意。
 
多人接受答案了。
 
顶部