读书人

请问一个DataModule的有关问题

发布时间: 2013-07-01 12:33:04 作者: rapoo

请教一个DataModule的问题。
DataModule是一个数据库控件存放的模块是不是?
DataModule存放了控件后是不是有一个固定的模式使用,怎么使用?

例子:
DataModule放了TADOConnection,ConnectionString已经填写了好了,
在另外一个窗体调用它又不行,一定要调用的那个窗体本身上放TADOConnection才行。

procedure TMainForm.FillTreeView(TreeView:TTreeView);
procedure CreateSubTree(FNodeName: string; Node: TTreeNode = nil);
var
mLocalName: string;
TreeNode: TTreeNode;
Ads_Tmp: TADODataSet;

begin

Ads_Tmp:=TADODataSet.Create(nil);

Ads_Tmp.Connection:=dtmdl1.con1;
Ads_Tmp.Connection:=con1;
这里使用上面的不行,
使用Ads_Tmp.Connection:=con1;才可以

with Ads_Tmp do
try
Close;
CommandText := 'Select * from Dir Where PID =' + FNodeName;
Open;
First;
while not Eof do
begin
mLocalName := FieldbyName('ID').Asstring;
TreeNode := TreeView.Items.AddChild(Node, FieldByName('Caption').AsString);
CreateSubTree(mLocalName, TreeNode,); // 此处循环递归
Next;
end;
finally
ADS_Tmp.Free;
end;
end;
begin
TreeView.Items.BeginUpdate;
TreeView.Items.Clear;
with TreeView.Items.Add(nil, '所有目录') do
begin
ImageIndex := 1;
SelectedIndex := 1;
end;
CreateSubTree('0',TreeView.Items[0]);
TreeView.Items.EndUpdate;
//TreeView.Items[1].Selected := True; //展开部门

end;

[解决办法]
implementation下面加上:
uses
DMUnit;//换成你的DataModule单元名。
在Project->Options中确认该DataModule是自动创建的。

事实上,DataModule不只可以放Data组件,我通常把所有不可视的、非动态创建的、被多个窗体使用的组件都放到DataModule中,比如ActionList。


[解决办法]
DataModule就是个普通的不能在普通的东西,你把connection,query等都可以放到上面,当然其他的 也可以,其他窗体引用 DataModule的单元,就可以访问其中的组件,其实自己写各类,管理数据组件也是一样的
[解决办法]
放不可视控件用的....

读书人网 >.NET

热点推荐