同一初级问题?

Michael 1999-12-29 11:18:00
可能上一次提问时表达不清,故重新提出:

本人在使用Delphi开发程序时,使用筛选录入(数据量大)Form选取数据,选中数据后要向另一调用自己的Form传输数据(一般向调用表单添加数据),问怎样实现选取数据向调用Form传输数据?
条件:1.不使用单独的Data Module,而在调用Form上加入Table或Query组件;
2.所有Form都使用‘实例’方式打开(Create(Self)),在调用数据选取Form时也
用实例方式打开;

(注:本人数据选取Form中声明一‘FORM’变量,以存储谁调用,但在开发过程中Compile时总过不去).

感谢各位专家的回答!希望各位再一次回答。

...全文
347 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
光明山人 2000-01-20
  • 打赏
  • 举报
回复
好久没有回答这个问题了,不知Michael还看不看?
如果我没猜错你的意思的话,你是想打开数据录入Form后一直打开,但一屏只有一个记录的数据,用户需要在该Form一直打开的情况下录入多个记录。但数据输入数据库不是由该Form完成,而是由它的调用者完成。
我想可以这样来实现:

在数据录入Form: 叫TInputForm上有一个按钮叫[保存] SaveBtn,每次用户按它保存。而所有数据录入的控件不是DB感知控件(TDBEdit等)。

你可以在调用者Form上增加一个方法,最好在private中:
procedure DoSave( Sender: TObject );

然后在它的实现中完成保存操作,并这样取TInputForm上的数据:
with TInputForm(TButton(Sender).Owner) do
begin
直接用TInputForm上控件的名字来取得值
end;

然后在要录入数据时这样写:
with TInputForm.Create( Application ) do
begin
try
SaveBtn.OnClick := DoSave;
ShowModal;
finally
Free;
end;
end;

当然,你还可以在TInputForm中加入ClearFields方法,方便调用者完成保存后清除数据控件。当然可以加上导航功能,就多加DoNext, DoPrev如同DoSave的功能。

如果要用数据感知控件,则你可以在TInputForm上加一TDataSource控件,所有的数据感知控件都有指向它,然后在调用Form中这样写:
with TInputForm.Create( Application ) do
begin
try
SaveBtn.OnClick := DoSave;
DataSource.DataSet := myTable; // 注***
ShowModal;
finally
Free;
end;
end;

// ***这里myTable是调用者Form上的一个TTable控件,用TQuery也行。
这样可能在DoSave中就是调用myTable.Post了。当然还有数据检查之类的工作要做。

不知这样回答能否满足你的要求。
caili 1999-12-30
  • 打赏
  • 举报
回复
procedure TCallerForm.GetData;
begin
with TCalleeForm.Create(Self) do
try
/* Query1是TCalleeForm的 */
Query1.First;
while not Query1.Eof do
begin
...
Query1.Next;
end;
/* 也可以采用bookmark来取Query1中的数据 */
finally
Free;
end;
end;
caili 1999-12-30
  • 打赏
  • 举报
回复
procedure TCallerForm.GetData;
begin
with TCalleeForm.Create(Self) do
try
/* Query1是TCalleeForm的 */
Query1.First;
while not Query1.Eof do
begin
...
Query1.Next;
end;
/* 也可以采用bookmark来取Query1中的数据 */
finally
Free;
end;
end;
barton 1999-12-30
  • 打赏
  • 举报
回复
如上一次的答案,将Query返回的结果重组.用TStrings表达.
tide 1999-12-29
  • 打赏
  • 举报
回复
1。应该使用DataModule,否则麻烦多多
2。把Form实例定义成全局变量,过滤得来的数据应该都可以用。
kxy 1999-12-29
  • 打赏
  • 举报
回复
可否贴一些代码出来.

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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