Metainformationen zur Seite

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
code:defaultmethods [2025/10/24 20:11] Harald Schmidcode:defaultmethods [2026/08/24 18:54] (aktuell) Harald Schmid
Zeile 1: Zeile 1:
 ====== Standard-Funktionen und -Methoden ====== ====== Standard-Funktionen und -Methoden ======
 +
 +===== Nachrichten und Events =====
 +
 +==== Nachrichten vom Hauptprogramm zum Modul ====
 +
 +<code>
 +  CurrentModule.NotifyModuleI('DemoModeChanged', IfThen(dxBarButton26.Down, 1, 0));
 +  CurrentModule.NotifyModuleS('xxx', string);
 +</code>
 +
 +Zum Empfangen der Nachrichten müssen im TInsightsModuleMain die virtuellen Methoden überschrieben werden:
 +
 +insights.module.base - TinsightsModuleBase
 +<code>
 +    procedure NotifyModuleI(const mInfo: string; mInt: Integer); virtual;
 +    procedure NotifyModuleS(const mInfo, mStr: string); virtual;
 +</code>
 +
 +insights.module.main - TinsightsModuleMain
 +<code>
 +    procedure NotifyModuleI(const mInfo: string; mInt: Integer); override;
 +    procedure NotifyModuleS(const mInfo, mStr: string); override;
 +</code>
 +
 +==== 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
 +
 +<code>
 +      Result.Events.OnReceiveIDInt := formMain.DoReceiveIDInt;
 +      Result.Events.OnReceiveIDStr := formMain.DoReceiveIDStr;
 +</code>
 +
 +<code>
 +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;
 +</code>
  
 ===== im Module (TinsightsModuleBase) ===== ===== im Module (TinsightsModuleBase) =====
Zeile 14: Zeile 60:
 Beschreibung Beschreibung
 ++ ++
 +
 +===== 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.
 +
 +<code>
 +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;
 +</code>
 +
 +Im ConfigForm kann man dann in InitVars dem OnFilesDropped eine eigene Methode zuweise:
 +
 +<code>
 +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;
 +</code>
 +
 +