|

楼主 |
发表于 2009-5-8 17:11:59
|
显示全部楼层
procedure TPANELINFO.LoadGroupDefines;
var
Storage: TPersistentDataSetStorage;
Rule: TPersistentDataSetStorageRule;
GroupDefine: TMyInfoGroupDefine;
Default_: TMyInfoGroupDefine;
I, U: Integer;
temList: TStringList;
begin
I := 0;
U := 0;
Storage := TPersistentDataSetStorage.Create;
Rule := TPersistentDataSetStorageRule.Create;
Default_ := TMyInfoGroupDefine.Create(nil);
//***********ZPM 修改开始**********************
temList := TStringList.Create;
//***********ZPM 修改结束**********************
try
Rule.ContentFieldName := 'FCONTENT';
DataSetGroups.Open;
try
if DataSetGroups.Locate('FID', 'default', [TLocateOption.loCaseInsensitive]) then
begin
Storage.Load(Default_, DataSetGroups, Rule);
DataSetGroups.Delete;
end;
FGroupDefines := []; // 干掉警告
SetLength(FGroupDefines, DataSetGroups.RecordCount);
//***********ZPM 修改开始**********************
{
I := 0;
DataSetGroups.First;
while not DataSetGroups.Eof do
begin
GroupDefine := TMyInfoGroupDefine.Create(nil);
try
Storage.Load(GroupDefine, DataSetGroups, Rule);
GroupDefine.Merge(Default_);
if FRightsCalculator.Calc(GroupDefine.RightsDefine) = TRightsValue.RightsAccept then
begin
FGroupDefines[I] := GroupDefine;
GroupDefine.Tag := I;
Inc(I);
FGroupDefineDimensionIndex.AddObject(GroupDefine.Dimension, GroupDefine);
end
else
GroupDefine.Free;
except
GroupDefine.Free;
raise;
end;
DataSetGroups.Next;
end;
}
if GetADskSetAreas(GetDesktopID, temList) then
begin
for I:= 0 to temList.Count-1 do
begin
if DataSetGroups.Locate('FID', temList[I], [TLocateOption.loCaseInsensitive]) then
begin
GroupDefine := TMyInfoGroupDefine.Create(nil);
try
Storage.Load(GroupDefine, DataSetGroups, Rule);
GroupDefine.Merge(Default_);
if FRightsCalculator.Calc(GroupDefine.RightsDefine) = TRightsValue.RightsAccept then
begin
FGroupDefines[U] := GroupDefine;
GroupDefine.Tag := I;
FGroupDefineDimensionIndex.AddObject(GroupDefine.Dimension, GroupDefine);
Inc(U);
end
else
GroupDefine.Free;
except
GroupDefine.Free;
raise;
end;
end;
end;//end for
end;
//***********ZPM 修改结束**********************
SetLength(FGroupDefines, I);
SetLength(FGroupLeftJoinExprs, I);
SetLength(FGroupRightJoinExprs, I);
finally
DataSetGroups.Close;
end;
finally
Default_.Free;
Rule.Free;
Storage.Free;
//***********ZPM 修改开始**********************
temList.Free;
//***********ZPM 修改结束**********************
end;
end;
这段代码我跟踪了一下,确实很晕,而且我把 for I:= 0 to temList.Count-1 do begin……end;
注释掉看了看,该出来的还是全出来了,似乎没起作用。
我要在哪儿做什么动作呢?能给进一步的指导吗? |
|