起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 348|回复: 17

[搞定]窗体的引用**

[复制链接]
发表于 2007-11-2 11:10:05 | 显示全部楼层 |阅读模式
在同一业务功能下, 一个窗体引用另一个窗体下的组件, 为什么不能像Delphi 一样直接使用 FormName.组件这种方式, 是不是必须要使用重新创建窗体的方法:
var
form1:TItemForm;
begin
form1:=TItemForm.Create(Self.Context);
end;

这样我在这个窗体中,就读取不到 ItemForm窗体中组件的状态了呀?
比如说我想要获取ItemForm 窗体下DataGrid 组件当前所指向的记录.
这样每次读取到的都是第一条记录.

请问该如何解决呢?
回复

使用道具 举报

发表于 2007-11-2 11:47:41 | 显示全部楼层
1、创建了窗体不释放

2、或者,两个窗体使用同一个信息中的数据集
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-2 12:00:14 | 显示全部楼层
我创建了窗体, 也没有释放, 也没有使用业务信息, 直接从数据库取数据.

问题是: 新创建的窗体是空的呀,
比如说我想要获取ItemForm 窗体下DataGrid 组件当前所指向的记录. 这样每次读取到的都是第一条记录.
回复 支持 反对

使用道具 举报

发表于 2007-11-2 13:28:08 | 显示全部楼层
ItemForm 中的数据集被关闭后重新打开了,默认指向是第一条记录

你的ItemForm 窗体被操作后不要执行close或free等方法
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-2 14:48:53 | 显示全部楼层
我没有使用close 或free等方法,
我的主界面中ItemForm有一个DataGrid, 先选中DataGrid 的某一行再打开另一个窗体FormAdd, 然后在FormAdd窗体中读取所选中记录的值:
var
form1:TItemForm;
begin
form1:=TItemForm.Create(Self.Context);
setbh:=form1.DataGrid1.DataSource.DataSet.FieldByName('帐套编号').asstring;
setmc:=form1.DataGrid1.DataSource.DataSet.FieldByName('帐套名称').asstring;
.......
每次返回的都是第一条记录的值.
这样创建的窗体, 窗体中的内容是我打开ItemForm 窗体时的状态, 还是我选中DataGrid 的某条记录后的状态呢?   我认为很可以是前者呀.
回复 支持 反对

使用道具 举报

发表于 2007-11-2 14:55:12 | 显示全部楼层
因为你在FormAdd用的数据集和ItemForm中的数据集不是同一个(虽然是从同一个数据表取的数据),
在那打开FormAdd时,数据集才被打开,默认当前记录是第一条

你要想定位到itemform当前所选的记录,需要在返回值前,先定位记录
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-2 15:23:57 | 显示全部楼层
我就是要从ItemForm 窗体中定位记录, 然后在Addform 中读取记录, 根据我前面所说的应该如何解决呢?
回复 支持 反对

使用道具 举报

发表于 2007-11-2 15:38:34 | 显示全部楼层
你在addform窗体show之前,为addform中的数据感知控件的数据源赋值,
如:
addform.dataedit.datasource := ItemForm.DataGrid.DataSource;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-11-2 16:28:05 | 显示全部楼层
我在addform 中不用数据感知控件, 只是把ItemForm 中 DataGrid  选中记录的字段值读出来赋值给其他变量就可以了.
回复 支持 反对

使用道具 举报

发表于 2007-11-2 16:44:08 | 显示全部楼层
我已经被你弄糊涂了,不知道是谁要调用谁啊!
谁要展示谁的数据。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-30 07:28 , Processed in 0.043904 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表