有这样一个数据库应用程序:form上放置各种数据感知控件(如DBGrid),数据集组件(如ADODataSet)放置在DataModule中.然后在ADODataSet的BeforePost事件中检查DBGrid的某个字段内容是否为空,用了如下代码:
procedure DM.ADODataSetBeforPost(DataSet:TDataSet)
begin
if((DataSet.fieldbyName('Name').isNull)then
begin
Form.ErrorString:='字段为空'; //程序执行到此处时出错,
end;
end;为什么不能在DataModule中引用form上的东西呢?
procedure DM.ADODataSetBeforPost(DataSet:TDataSet)
begin
if((DataSet.fieldbyName('Name').isNull)then
begin
Form.ErrorString:='字段为空'; //程序执行到此处时出错,
end;
end;为什么不能在DataModule中引用form上的东西呢?
所以DataModule当然不能引用窗体属性等
假如你的数据模块单元是DMUnit,你的窗口单元是Unit1,
则在DMunit中把Uses Unit1写Interface下面的
在Unit中,把Uses DMunit写在implementation下面, 这样试试
application.showmessage('...........
即使要用,可以这样。
procedure FillGrid(Grid:TStringGrid);
就是封装界面操作函数在数据模块中。