DLL Einbinden
EleLa bietet die Funktion eine
externe DLL ein zu binden mit der Applikation spezifische Parameter abgefragt
werden können.
Eine DLL kann für folgende
Funktionen verwendet werden:
- Historie Fehler Code Generierung
- RMA Nummer Generierung
- Kostenvoranschlag Nummer
generierung
Die DLL wird in der INI Datei
als Parameter angegeben und von EleLa geladen. Es werden die aufgelistete
Funktionen unterstützt, jedoch muss nur die Funktion in der DLL voehanden
sein, die auch benötigt wird.
Die DLL kann unter Windows
ein Eingabeformular darstellen, unter Linux nicht. Mit übergeben
wird die Connection zur Datenbank, somit können beliebige eigene
Datenabfragen erstellt werden.
DLL Funktionsaufrufe
EleLa frägt bei Start
in der DLL nach welche Funktionen überhaupt verfügbar sind.
Anhand dieser Info können die einzelfunktionen genutzt werden.
Funktion |
Rückgabewert |
Beschreibung |
GetDLLFct() |
PChar; Cdecl; |
Abfrage welche Funktionen
die DLL unterstützt, Funktionsname getrennt mit "|" |
GetDLLInfo() |
PChar; Cdecl; |
Versionsinformation für
den Log Eintrag |
HistErrorCode(Frm: THandle;
DB: TZConnection; sValue: PChar) |
PChar; Cdecl; |
Erzeugung Historie Fehlercode.
Wenn diese DLL Funktion vorhanden ist, wird in EleLa das Historien
Fehlercode Eingabefeld gesperrt und ein "..." Taste gezeigt. |
RMACode(Frm: THandle;
DB: TZConnection; sValue: PChar) |
PChar; Cdecl; |
Erzeuge RMA Nummer |
KVAuftrag(Frm: THandle;
DB: TZConnection; sValue: PChar) |
PChar; Cdecl; |
Erzeuge Kostenvoranschlag
Nummer |
Beispielcode der DLL, Freepascal / Lazarus.
Nur die Projektdatei, nicht
das Formular. In dem Beispiel ist nur der Aufruf für "HistErrorCode()"
enthalten.
library EleLaExt;
{$mode objfpc} {$H+}
uses Classes, Interfaces, Forms, SysUtils, Windows, LCLType, Controls,
(*ZConnection,*) { you can add units
after this }
fHistErrcode;
function GetDLLFct(): PChar; cdecl;
Begin
Result := 'GetDLLInfo|HistErrorCode'; //
String mit Funktionen der DLL, getrennt mit '|'
End;
function GetDLLInfo(): PChar; cdecl;
Begin
Result := 'V0.0.12504, EleLa DLL für Erweiterungen';
// Info-Text für EleLa
End;
// Formular für RMA Codegenerierung
// DB: TZConnection, die Verbindung zur Datenbank.
function HistErrorCode(Frm: THandle; DB: THandle; sVal: PChar):
PChar; cdecl;
Var sValue: String;
Begin sValue := sVal;
Result := PChar(sValue);
try
frmErrCode := TfrmErrCode.Create(Application);
try
SetWindowLongPtr(frmErrCode.Handle,GWLP_HWNDPARENT,
Frm);
SetWindowPos( frmErrCode.Handle, Frm,
0,0,0,0, SWP_NOSIZE or SWP_NOMOVE or SWP_FRAMECHANGED);
EnableWindow(Frm,false);
frmErrCode.sValue := sValue;
If frmErrCode.ShowModal = mrOK
Then
Result := PChar(frmErrCode.sValue);
finally
frmErrCode.Free;
frmErrCode := Nil;
EnableWindow(Frm,true);
SetWindowPos( Frm, HWND_TOP, 0,0,0,0,
SWP_NOSIZE or SWP_NOMOVE or SWP_FRAMECHANGED);
end;
except
on E:Exception do
Result := PChar('Error: ' + E.Message);
end;
end;
exports
GetDLLFct,
GetDLLInfo,
HistErrorCode;
Begin
Application.Initialize;
end.
|
Hier kann der Demo
Code geladen werden. Sie sollten sich vor der Programmierung mit MmVisual
in Verbindung setzen, bzw. für eine Spende bin ich gerne bereit für
Sie die DLL zu erstellen.
Sollten Sie für eine andere EleLa Funktion eine Erweiterung für
die DLL benötigen, so schreiben Sie mir ein E-Mail.
|