在标准风格窗体,红色字体部分是我修改的
procedure TSTANDARDSTYLEMAINFORM.UIRunFunc(AContext: TContext; const AUniqueID, AFuncURL, AParams: string; UseUI: Boolean; BeforeRunFunc: TFuncNotifyEvent; Modal: Boolean);
var
lContext: TContext;
S, lUID: string;
lFunc: TFunc;
begin
if Opr.IsSystemManager(TSystemCore.Operator.ID) then
begin
lUID := AUniqueID;
if lUID = '' then
lUID := TFuncManager.GetFuncUniqueID(TSystemCore.Operator.Context, AFuncURL, AParams);
// TSystemCore.FuncManager.RunFunc(TSystemCore.Operator.Context, lUID, AFuncURL, AParams, BeforeRunFunc, true);
TSystemCore.FuncManager.RunFunc(TSystemCore.Operator.Context, lUID, AFuncURL, AParams, BeforeRunFunc, Modal);
end
else begin
if FDefaultPosition = nil then
lContext := TSystemCore.FuncManager.FindRunFuncContext(AContext, AFuncURL)
else
lContext := TSystemCore.FuncManager.FindRunFuncContext(FDefaultPosition.Context, AFuncURL);
if lContext = nil then
begin
if not TSystemCore.FuncManager.IsDefaultFunc(AFuncURL) then
begin
try
S := BizSys.BizSystem.FileName2DisplayFileName(BizSys.BizSystem.URL2FileName(AFuncURL));
S := SysUtils.Format('您没有运行此功能的权限:%s', [S]);
except
S := SysUtils.Format('功能不存在:%s', [AFuncURL]);
end;
raise Exception.Create(S);
end;
lContext := TContextUtils.GetDefaultOperatorPosition(AContext).Context;
end;
if (FDefaultPosition = nil) and
StrUtils.AnsiMatchText(AFuncURL, TRTLConsts.PersonFuncs) then
lContext := AContext.GetParentContext(BizSys.IL_PERSON);
lUID := AUniqueID;
if lUID = '' then
begin
// 暂时一个功能只能运行一份实例, 不同参数的功能,允许多份实例
//lUID := TFuncManager.GetFuncUniqueID(lContext, AFuncURL, AParams);
lUID := AFuncURL + '.MainForm.Run' + '|' + AParams;
end;
lFunc := TSystemCore.FuncManager.FindRunning(lUID);
if lFunc <> nil then
TSystemCore.FuncManager.ActivateFunc(lFunc)
else
//TSystemCore.FuncManager.RunFunc(lContext, lUID, AFuncURL, AParams, BeforeRunFunc, Modal);
TSystemCore.FuncManager.RunFunc(lContext, lUID, AFuncURL, AParams, BeforeRunFunc, true);
end;
end; |