如何刷新查询?(50分)

  • 主题发起人 主题发起人 oceanwave
  • 开始时间 开始时间
O

oceanwave

Unregistered / Unconfirmed
GUEST, unregistred user!
我建了两个窗体,窗体A用TDBGRID通过TQuery来反映表A的数据,窗体B是通过TTable来操作
表A的窗体。当在窗体A上点击新增表A记录的按钮后弹出窗体B,在窗体B中新增表A的记录后
关闭窗体B,窗体A如何自动刷新TQuery,以反映出表A的变化?
 
在窗体B的关闭事件中,调用刷新TQuery的方法。
 
这窗体B不一定由窗体A打开呀,有没办法实现比如当窗体A成为当前活动窗体时就刷新一次
TQuery呢?
 
建立一个数据模块,在数据模块中建立Query,两个窗体都引用这个Query
 
TQuery中如果有WHERE语句好象就只能是只读的吧那窗体B如果实现数据操作呢?
 
窗体B关闭时何做以下工作:
Table.Post;
Query.DisabledControls;
Query.Close;
Query.Open;
Query.EnabledControls;
 
在窗体B交易成功时可用AXTIVE对A进行自动刷新
 
什么AXTIVE?您能说仔细点儿吗?
 
Send user-defined window message (such as WM_UPDATEDATA) from form B to form A.

SendMessage(FormA.Handle, WM_UPDATEDATA, 0);

on form A, you can define:

procedure TFormA.UpdateData(msg: TWMessage); message WM_UPDATEDATE;

procedure TFormA.UpdateData(msg: TWMessage);
begin
// do refresh.
end;
 
可不可以这样:
在窗体B中设定一个Integer变量,如S
当窗体A、C、D打开窗体B时,分别给S赋值,
然后在窗体B的OnClose事件中,根据S的值对不同窗体的Query刷新!
如:
Case S Of
1:
Begin
窗体A.Query.Close;
窗体A.Query.Open;
End;
2:
Begin
窗体C.Query.Close;
窗体C.Query.Open;
End;
3:
Begin
窗体C.Query.Close;
窗体C.Query.Open;
End;
.
.
.
.

 
多谢大伙,给分了:)
 

Similar threads

S
回复
0
查看
694
SUNSTONE的Delphi笔记
S
S
回复
0
查看
782
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部