Hallo Herr Laue,
wir verwenden in unserem VB6-Programm seit Ewigkeiten die Möglichkeit mehrere Versionen von List & Label zu verwenden.
Dazu gibt es bei uns eine “Druck-Klasse”, die wrapper-Funktionen enthält, die je nach benötigter Version die Parameter an die korrekte API-Funktion weiterreicht.
Beispiel:
mLLVersion ist eine Modul-Variable, die von außen gesetzt wird! Aufgerufen wird die Function LlDefineFieldExtW
Private [b]Declare [/b]Function Ll17DefineFieldExtW Lib "CMLL17.DLL" Alias "LlDefineFieldExtW" (ByVal hLlJob As Long, ByVal pszVarName As String, ByVal lpbufContents As String, ByVal lPara As Long, ByVal lpPtr As Any) As Long
Private [b]Declare [/b]Function Ll19DefineFieldExtW Lib "CMLL19.DLL" Alias "LlDefineFieldExtW" (ByVal hLlJob As Long, ByVal pszVarName As String, ByVal lpbufContents As String, ByVal lPara As Long, ByVal lpPtr As Any) As Long
Private [b]Declare [/b]Function Ll21DefineFieldExtW Lib "CMLL21.DLL" Alias "LlDefineFieldExtW" (ByVal hLlJob As Long, ByVal pszVarName As String, ByVal lpbufContents As String, ByVal lPara As Long, ByVal lpPtr As Any) As Long
Private [b]Function [/b]LlDefineFieldExtW(ByVal hLlJob As Long, ByVal pszVarName As String, ByVal lpbufContents As String, ByVal lPara As Long, ByVal lpPtr As String) As Long
Select Case mLlVersion
Case LLVersion17
LlDefineFieldExtW = Ll17DefineFieldExtW(hLlJob, pszVarName, lpbufContents, lPara, lpPtr)
Case LLVersion19
LlDefineFieldExtW = Ll19DefineFieldExtW(hLlJob, pszVarName, lpbufContents, lPara, lpPtr)
Case LLVersion21
LlDefineFieldExtW = Ll21DefineFieldExtW(hLlJob, pszVarName, lpbufContents, lPara, lpPtr)
Case Else
End Select
End Function
Es gibt sicherlich elegantere Möglichkeiten, aber so funktioniert es seit etlichen Jahren problemlos!
Gruß
Jörg Wendisch