|

楼主 |
发表于 2008-9-18 11:50:53
|
显示全部楼层
这是我的主要代码,麻烦你能看一下,共同找出问题之所在
procedure TDBRWCT.BizFormCreate(Sender: TObject);
var
lViewMode: string;
lFilterType: string;
lFilterDesc: string;
lLocateID: string;
begin
ParserRunParams(lViewMode, lFilterType, lFilterDesc, lLocateID);
MyTaskDoc.FilterBeginUpdate;
try
MyTaskDoc.DocBarTask.ShowMaxButton := False;
MyTaskDoc.FilterToAutoFill := True;
// MyTaskDoc.RightsFilter := False;
if lViewMode <> '' then
MyTaskDoc.ViewMode := TMyFuncInfo.StrToViewMode(lViewMode)
else
//MyTaskDoc.ViewMode := TViewMode.vmTaskGrid;
MyTaskDoc.ViewMode := MyFuncInfo.TViewMode.vmTaskGrid;
if SysUtils.SameText(lFilterType, TRTLConsts.NeedProcessTaskTypeStr) then
MyTaskDoc.ProcessStates := [TProcessState.psProcess]
else if SysUtils.SameText(lFilterType, TRTLConsts.PostTaskTypeStr) then
MyTaskDoc.ProcessStates := [TProcessState.psPost]
else
//MyTaskDoc.ProcessStates := [TProcessState.psProcess, TProcessState.psFinish, TProcessState.psPost, TProcessState.psPostFinished];
MyTaskDoc.ProcessStates := [TProcessState.psProcess];
MyTaskDoc.DateRange := TDateRange.drAll;
MyTaskDoc.OrgTypes := TaskCenterInfo.TTaskCenterInfo.DefaultDesktopTaskOrgRange;
finally
MyTaskDoc.FilterEndUpdate;
end;
if lFilterDesc <> '' then
Caption := SysUtils.Format('%s(%s)', [Caption, lFilterDesc]);
MyTaskDoc.OpenTask;
MyTaskDoc.InfoTask.DataSetTaskIndex.Locate('FGUID', lLocateID, []);
MyTaskDoc.OnViewModeChange := DoTaskDocViewModeChange;
MyTaskDoc.OnTaskOpened := DoTaskOpened;
{
lTaskDoc := MyTaskDoc;
lTaskDoc.OpenTask;
lTaskDoc.DocBarTask.ShowMaxButton := False;
lTaskDoc.TaskGridDoc.TaskIndexDataDataSetChange(nil);}
FMessageHandler := TRelevancyBizMessageHandler.Create(Self);
Context.AddMessageHandler(TRefreshRelevanciesMessage.GetName, FMessageHandler);
FDocMessageHandler := TDocRelevancyBizMessageHandler.Create(Self);
Context.AddMessageHandler(TRefreshDocRelevanciesMessage.GetName, FDocMessageHandler);
end;
procedure TDBRWCT.BizFormDestroy(Sender: TObject);
begin //
DocRelevancyNavBar := nil;
Context.RemoveMessageHandler(TRefreshDocRelevanciesMessage.GetName, FDocMessageHandler);
FDocMessageHandler.Free;
RelevancyNavBar := nil;
Context.RemoveMessageHandler(TRefreshRelevanciesMessage.GetName, FMessageHandler);
FMessageHandler.Free;
end;
procedure TDBRWCT.Notification(AComponent: TComponent; Operation: TOperation);
begin
inherited;
if (AComponent = FRelevancyNavBar) and (Operation = TOperation.opRemove) then
FRelevancyNavBar := nil;
if (AComponent = FDocRelevancyNavBar) and (Operation = TOperation.opRemove) then
FDocRelevancyNavBar := nil;
end;
procedure TDBRWCT.SetRelevancyNavBar(Value: TRelevancyNavBar);
begin
if FRelevancyNavBar <> Value then
begin
if FRelevancyNavBar <> nil then
FRelevancyNavBar.RemoveFreeNotification(Self);
FRelevancyNavBar := Value;
if FRelevancyNavBar <> nil then
FRelevancyNavBar.FreeNotification(Self);
end;
end;
function TDBRWCT.GetMyTaskDoc: MyFuncInfo.TMyTaskDoc;
begin
Result := dcvMyFuncInfo.Doc as MyFuncInfo.TMyTaskDoc;
end;
procedure TDBRWCT.ParserRunParams(out ViewMode, FilterType, FilterDesc, LocateID: string);
var
lParser: TCommandLineParser;
lOption: TCommandLineOptionDefine;
begin
lParser := TCommandLineParser.Create(nil);
try
lOption := lParser.OptionDefines.Add;
lOption.Name := '-v';
lOption.HasValue := True;
lOption.DisplayName := '显示模式';
lOption := lParser.OptionDefines.Add;
lOption.Name := '-f';
lOption.HasValue := True;
lOption.DisplayName := '过滤选项';
lOption := lParser.OptionDefines.Add;
lOption.Name := '-d';
lOption.HasValue := True;
lOption.DisplayName := '过滤选项描述信息';
lOption := lParser.OptionDefines.Add;
lOption.Name := '-l';
lOption.HasValue := True;
lOption.DisplayName := '定位记录';
lParser.Parse('-fNeedProcess -vvmTaskGrid -d待办');
ViewMode := lParser.GetOption('-v').Value.Value;
FilterType := lParser.GetOption('-f').Value.Value;
FilterDesc := lParser.GetOption('-d').Value.Value;
LocateID := lParser.GetOption('-l').Value.Value;
finally
lParser.Free;
end;
end; |
|