Standard-Funktionen und -Methoden

Nachrichten und Events

Nachrichten vom Hauptprogramm zum Modul

  CurrentModule.NotifyModuleI('DemoModeChanged', IfThen(dxBarButton26.Down, 1, 0));
  CurrentModule.NotifyModuleS('xxx', string);

Zum Empfangen der Nachrichten müssen im TInsightsModuleMain die virtuellen Methoden überschrieben werden:

insights.module.base - TinsightsModuleBase

    procedure NotifyModuleI(const mInfo: string; mInt: Integer); virtual;
    procedure NotifyModuleS(const mInfo, mStr: string); virtual;

insights.module.main - TinsightsModuleMain

    procedure NotifyModuleI(const mInfo: string; mInt: Integer); override;
    procedure NotifyModuleS(const mInfo, mStr: string); override;

Nachrichten vom Modul zum Hauptprogramm

Um eine Nachricht aus einem Modul zum Hauptprogramm zu schicken, ruft das Modul die Methode Events.OnReceiveIDInt oder Events.OnReceiveIDStr auf. Diese triggern im Hauptprogramm dann

      Result.Events.OnReceiveIDInt := formMain.DoReceiveIDInt;
      Result.Events.OnReceiveIDStr := formMain.DoReceiveIDStr;
procedure TformMain.DoReceiveIDInt(const mEventStr: string; mID: Integer; var mResult: Integer);
begin
  if sametext('ModuleIsLoaded', mEventStr) then
    mResult := IfThen(FModuleList.ContainsKey(mID), 1, 0);
end;

procedure TformMain.DoReceiveIDStr(const mEventStr: string; mID: Integer; var mResult: string);
begin
  if sametext('StartPageInitLog', mEventStr) then
    mResult := formInit.cxMemo1.Lines.Text;
end;

im Module (TinsightsModuleBase)

Presets

  • ActivatePresetsByID Info
  • CurrentConfigToJson Info
  • CurrentConfigFromJson

TCommon - insights.common

  • AddButtonToButtonLayoutGroup Info

Drag & Drop

  • Um das Drag&Drop von Dateien auf ein Modul zu aktivieren, muss man im Modul TinsightsModuleMain.Create FInfo.AcceptFiles auf True setzen.
  • Die auf das Formular gedroppten Dateien können dann in der override-Methode procedure FilesDropped(const mText: string); override; ausgewertet werden.
procedure TinsightsModuleMain.FilesDropped(const mText: string);
begin
  // direkt im Module Code ausführen oder
  // den Event OnFilesDropped des formModuleBase (override im eigentlichen Formular) ausführen
  if assigned(FConfigForm.OnFilesDropped) then
    FConfigForm.OnFilesDropped(mText);
end;

Im ConfigForm kann man dann in InitVars dem OnFilesDropped eine eigene Methode zuweise:

procedure TformConfigForm.InitVars;
begin
  inherited;
  OnFilesDropped := FilesDropped;
end;

procedure TformConfigForm.FilesDropped(const mText: string);
begin
  CodeSite.Send(csmGreen, 'mText', mText);
  hsSList(mText, #13#10).ForEachI(procedure(const mStr: string; mInt: Integer)
    begin
      CodeSite.Send(mInt.ToString, mStr);
    end);
end;