遍历所有对象,是query的就刷新 for i:=0 to componentcount -1 do
你的dataset是放在子窗口中的吧?
//使用以下过程绝对OK! procedure TForm1.RefreshDataSet; var i:Integer; begin for i:=0 to ComponentCount-1 do begin if Components[i] is TDataSet then begin with Components[i] as TDataSet do begin if Active then begin Active:=False; Active:=True; end; end; end; end; end;
//你看看Open和Close的过程内容就发现(^_^): procedure open; begin Active:=True; end; procedure open; begin Active:=False; end;
2、将子窗口与tabsheet设为同一数据源
SubForm.DataSource:=tabShett.DataSource;
-----------------------
你的delphi版本是多少?我用的delphi7to luxuewei5214:
-----------------------
我用的TQueryto NightCloud()
--------------------------
我自己的程序
1、设置一个全局bool变量数组,假设为bchanged,有多少个tabsheet,数组元素就有多少个。标志是否有数据变更,每次数据变更就置所有的bchanged数组元素为真
2、在每个tabsheet的onshow事件中判断对应的bchanged[i]是否为真,如果为真,刷新数据,然后置对应的bchanged[i]为false。
没有具体想,上面方法有些原始。应该可以使用notify模式的思想来实现
1: 本地数据库, 不过我想网络数据库是一样的
2: 我知道打开再关闭可以刷新对于clientdataset,dataset,怎么刷新我还是知道的.问题是如何将若干个tabsheet里的dataset刷新
for i:=0 to componentcount -1 do
procedure TForm1.RefreshDataSet;
var
i:Integer;
begin
for i:=0 to ComponentCount-1 do
begin
if Components[i] is TDataSet then
begin
with Components[i] as TDataSet do
begin
if Active then
begin
Active:=False;
Active:=True;
end;
end;
end;
end;
end;
procedure open;
begin
Active:=True;
end;
procedure open;
begin
Active:=False;
end;