====== Създаване на евенти за закачане на справки ====== Намираме номенклатурата и дейтамодула й където ще добавяме нов ЕВЕНТ (събитие) на което ще закачаме справки В DM файла правим следните добавки - Описание на евента - в types описваме евента TMyNewEvent = class(TMultiCastNotifyEvent) end; - Регистрация - Добавяме в initialization частта регистрация на евента BaseEventRegister.RegisterEvent(TXXXXXXX_DM, 'TMyNewEvent', sNameOfTheEvent); - в В published добавяме евента като property: property OnMyEvent: TMyNewEvent read fOnMyEvent write fOnMyEvent; - намираме процедурата за създаване **procedure InitializeEvents; override;** и го създаваме: fOnMyEvent := TMyNewEvent.Create(nil); **Заб. Ако документа няма типове, то тук може да добавим всички свързани към него справки/скриптове описано в т. 7** - В procedure DataModuleDestroy(Sender: TObject); добавяме освобождаването - if Assigned(fOnMyEvent) then fOnMyEvent.Free; - В private частта добавяме процедурата procedure DoOnMyEvent(Sender: TObject); - Процедурата изглежда приблизително така procedure TXXXXX_DM.DoOnMyEvent(Sender: TObject); begin .... тук е текста на самият евент end; - Свързване на процедура в евент - if ActionViewLinks.HaveLinksFor(Self.ClassName, DocumentType, 'TMyNewEvent') then begin if OnMyEvent.Count = 0 then OnMyEvent.Add(DoOnMyEvent); end else if OnMyEvent.Count > 0 then OnMyEvent.Remove(DoOnMyEvent); В модула на номенклатурата просто остава да поставим на бутон или на каквото искаме да се извиква този евент f Assigned(DM) and Assigned(TXXXXX_DM(DM).OnMyEvent) then TXXXXX_DM(DM).OnMyEvent.DoEventFor(DM);