MessageBox()在数据模块中不能通过.

xiaomaster 2005-05-18 11:52:49
ADO连MSSQL2000
我把ADOTABLE 和 DATABASE全放在了数据模块中,在处理ADOTableBeforeDelete(DataSet: TDataSet)过程里加入MessageBox,但不能通过.如果把ADOTABLE放在窗体中,ADOTableBeforeDelete里的MessageBox就能通过.我是新手,不太懂,帮忙.
源码如下:
unit data;

interface

uses
SysUtils, Classes, DB, ADODB;
type
TDM1 = class(TDataModule)
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
DataSource1: TDataSource;
ADOTable2: TADOTable;
DataSource2: TDataSource;
zhongghdatasource: TDataSource;
zuzhiDataSource: TDataSource;
zhonggh: TADOTable;
zuzhi: TADOTable;
hangye: TADOTable;
hangyeSource: TDataSource;
juzhuxianshiqu: TADOTable;
juzhuSource: TDataSource;
procedure DataSource2DataChange(Sender: TObject; Field: TField);
procedure DataSource2StateChange(Sender: TObject);
procedure DataSource1DataChange(Sender: TObject; Field: TField);
procedure DataSource1StateChange(Sender: TObject);
procedure ADOTable1BeforeDelete(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;

var
DM1: TDM1;

implementation

uses insert;

{$R *.dfm}

procedure TDM1.DataSource2DataChange(Sender: TObject; Field: TField);
begin
Finsert.Label25.Caption:='当前记录:'+IntToStr(DataSource2.DataSet.RecNo);
Finsert.Label42.Caption:='记录总数:'+IntToStr(DataSource2.DataSet.RecordCount);
Finsert.Label43.Caption:=DateToStr(Date);
end;

procedure TDM1.DataSource2StateChange(Sender: TObject);
begin
case DataSource2.State of
dsBrowse:Finsert.label44.Caption:='[浏览模式]';
dsEdit:Finsert.label44.Caption:='[修改模式]';
dsInsert:Finsert.label44.Caption:='[插入模式]';
else Finsert.label44.Caption:='[其他模式]';
end;
end;

procedure TDM1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
Finsert.Label41.Caption:='当前记录:'+IntToStr(DataSource1.DataSet.RecNo);
Finsert.Label45.Caption:='记录总数:'+IntToStr(DataSource1.DataSet.RecordCount);
Finsert.Label46.Caption:=DateToStr(Date);
end;

procedure TDM1.DataSource1StateChange(Sender: TObject);
begin
case DataSource1.State of
dsBrowse:Finsert.label47.Caption:='[浏览模式]';
dsEdit:Finsert.label47.Caption:='[修改模式]';
dsInsert:Finsert.label47.Caption:='[插入模式]';
else Finsert.label47.Caption:='[其他模式]';
end;
end;

procedure TDM1.ADOTable1BeforeDelete(DataSet: TDataSet);
var
dStr:String;
begin
dStr:='确定要删除这条记录吗?';
if MessageBox(Handle,PChar(dStr),'警告',MB_YESNO or MB_ICONWARNING)=IDNO then Abort;
// ~~~~~~~~~~//就是这里出错!
end;

end.
...全文
86 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaomaster 2005-05-18
  • 打赏
  • 举报
回复
加上handel就出错,停在MB_YESNO后面.
ly_liuyang 2005-05-18
  • 打赏
  • 举报
回复
可以使用的
Handle其实可以是0的
if MessageBox(0,PChar(dStr),'警告',MB_YESNO or MB_ICONWARNING)=IDNO then

http://lysoft.7u7.net
xiaomaster 2005-05-18
  • 打赏
  • 举报
回复
问题是解决,我加了form2,dialogs,messages,windows.还有用了Application.MessageBox();
再有第一个参数去掉了.
就是不知道为什么?30分钟后结帖.分少了点,谢谢大家了~~~~

uses
SysUtils, Classes, DB, ADODB,Forms,Dialogs,Messages,Windows;
procedure TDM1.ADOTable1BeforeDelete(DataSet: TDataSet);
var
dStr:String;
begin
dStr:='确定要删除这条记录吗?';
if application.MessageBox(PChar(dStr),'警告',MB_YESNO or MB_ICONWARNING)=IDNO then Abort;
end;
strongzp 2005-05-18
  • 打赏
  • 举报
回复
老兄,应该是Forms
angle097113 2005-05-18
  • 打赏
  • 举报
回复
Uses
Dialogs or QDialogs

可以Application.MessageBox();
再有第一个参数可以去掉
小呆之家 2005-05-18
  • 打赏
  • 举报
回复
你可以改用这个API函数;
application.messagebox(PChar(dStr),'警告',MB_YESNO or MB_ICONWARNING);
小呆之家 2005-05-18
  • 打赏
  • 举报
回复
uses forms
xiaomaster 2005-05-18
  • 打赏
  • 举报
回复
对啊,加那个啊,一定不是一个,我加了messages和windows,还是过不去,但这回停在Handle上了
strongzp 2005-05-18
  • 打赏
  • 举报
回复
请注意MessageBox是包含于哪一个UNIT中,在USE中加入。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧