关于在另一form中调用table的用法(50分)

  • 主题发起人 主题发起人 gyq918
  • 开始时间 开始时间
G

gyq918

Unregistered / Unconfirmed
GUEST, unregistred user!
我在用d4时,设计一程序,其中insertfieldform是一个form,而mainform也是一个form,在insertfieldform中调用mainform的table1,编译时它告诉我'ftinteger'没有定义,请问是什么原因?
如果我在mainform的use中加入insertfieldform,在insertfieldform的use中加入mainform,编译也不能通过,属于循环调用,要用什么方法解决? 
procedure Tinsertfieldform.Button1Click(Sender: TObject);
begin
if edit1.text<>'' then
begin
with mainform.table1.fielddefs do
begin
add(edit1.text+'1',ftinteger,0,false);
add(edit1.text+'2',ftinteger,0,false);
end;
end;
mainform.table1.open;
end;
end;
 
在implementation的下一行加上uses mainform就没有循环调用的问题了
 
在insertfieldform里 uses db 了吗?
 
你应该让insertfieldform把参数传给mainform,或者让mainform把参数传给insertfieldform。
随便访问另一个类的属性绝对不是一个好办法,在你的工程较大的时候,特别是团队开发时,维护量大得会让人头痛。
大家同意我的看法吗?
 
在 insertfieldform 的 uses 中加 DB 和 DBTables 试试.
 
不要二个form都在interface中的uses调用对方,在mainform的interface部分的uses中调用insertfieldform,而在的insertfieldform的implementation部分的uses调用mainform,这样就不会有循环调用的问题。
 
2. 在 form1 中放置 Table, DataSource, DBGrid, Button元件各一
3. with Table1:
set DatabaseName = DBDEMOS
set TableName = ANIMALS.DBF
Set DataSource1.DataSet = Table1
Set DBGrid1.DataSource = Datasource1

4. 在 Form1 的 OnCreate 事件加入程式:
Table1.Open;

5. File | New Form 新開一個 Form2, 並在 form2 中安置
DBGrid, DBNavigator 各一

6. 在 form2 的 OnCreate 事件加入程式:
DBGrid1.DataSource := Form1.DataSource1;
DBNavigator1.DataSource := Form1.DataSource1;

7. 在 Unit2 的 implementation 部分加入程式:
uses Unit1;

11. Unit中, 在 interface 的 uses 述句中加上 Unit2;
12. Form1 的 Button1 的OnClick 事件处理程式:
Form2.Show;
 
用datamodule,它是专门用来在一个
工程中解决table需要在不同窗体共用而设置的
 
在MainForm中加入DB,DbTables 即可.
 
多人接受答案了。
 
后退
顶部