EleLa - Elektronik Lagerverwaltung Hilfe

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.


© 2010-2024 by Markus Müller