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/10/02 13:07] (aktuell) – Harald Schmid
Zeile 1: Zeile 1:
 ====== Standard-Funktionen und -Methoden ====== ====== Standard-Funktionen und -Methoden ======
 +
 +===== Modul umbenennen =====
 +
 +  * **prüfen, ob es den neuen Namen schon gibt**
 +    * in insights.constants.pas
 +    * in Dabenbank modules.filename
 +  * Datenbank: Tabelle **modules** Feld **filename**
 +  * Dateiname der dll in IDE ändern
 +  * Verzeichnis unter insights\data anpassen
 +  * im Data-Verzeichnis den *.db Dateinamen anpassen
 +  * im Data-Verzeichnis die *.ini-Datei anpassen
 +  * in dll main ganz am Schluss CodeSite-String anpassen
 +  * in insights.constants.pas **cmi_** und **cmc_** anpassen
 +  * in insights.module.main.pas TinsightsModuleMain.Create **FInfo.Caption** und **FInfo.ID** anpassen
 +
 +===== ModulID ändern =====
 +
 +  * **prüfen, ob es die neue ID schon gibt**
 +    * in insights.constants.pas
 +    * in Datenbank modules.id
 +  * Datenbank: Tabelle **modules** Feld **id** und ggf. Feld **catid** anpassen
 +  * in insights.constants.pas **cmi_** anpassen
 +  * ggf. in insights.ini Settings LastModuleID anpassen (wenn das geänderte Modul das letzte aktive Modul war)
 +
 +===== 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 83:
 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>
 +
 +