static function TRefreshRelevanciesMessage.GetName: string;
begin
Result := 'Relevancy.View.Refresh.Message';
end;
这里FRelevancyNavBar是需要显示出来的关联条,在主窗体上创建消息实例时候对它赋值
GetName的静态函数就是消息的名称,在创建消息实例和消息处理对象实例时候使用
2) 在主窗体上创建消息实例,往当前功能上发消息
lRefreshRelevanciesMessage := TRefreshRelevanciesMessage.Create(FRelevancyNavBar);
try
if not CurrentFunc.Context.SendMessage(lRefreshRelevanciesMessage) then
DefaultRefreshRelevancies(FRelevancyNavBar);
finally
lRefreshRelevanciesMessage.Free;
end;
因为大部分功能没有定义消息处理对象,因此执行了缺省的DefaultRefreshRelevancies方法
procedure TRelevancyMsgHandle.DoExecute(AMessage: TBizMessage; const AParam: THandleParam;
var Handled: Boolean);
var
lMsg: TRefreshRelevanciesMessage;
begin
if AMessage is TRefreshRelevanciesMessage then
begin
lMsg := AMessage as TRefreshRelevanciesMessage;
//清除关联条
lMsg.RelevancyNavBar.Clear;
//根据ActivePageIndex绑定不同的数据集
if FForm.PageControl1.ActivePageIndex=0 then
lMsg.RelevancyNavBar.BindDataSet(FForm.DataSetBroker1.DataSet as TBizDataSet)
else
lMsg.RelevancyNavBar.BindDataSet(FForm.DataSetBZSJJ1);
//根据上面指定的数据集,根据业务关联定义加载关联项
lMsg.RelevancyNavBar.ReloadRelevancies(FForm.Context, FForm.FuncBroker1.Func.BizClassURL.BizURL.URL);
//增加自定义的关联项
lMsg.RelevancyNavBar.AddAction('mytest', FForm.Action1);
//记录关联条对象,待会儿发消息时候要用到
if NavBar=nil then NavBar := lMsg.RelevancyNavBar;
Handled := True;
end;
end;