List & Label ILLDataProvider verfügbar für Xbase++
Verfasst: Fr, 13. Okt 2017 12:24
Hallo L&L User,
ich habe im Auftrag eines anderen Xbase++ Users ein COM-Objekt implementiert, das das ILLDataProvider Interface exportiert. Damit kann man Daten an L&L weiterreichen, nachdem L&L gestartet wurde. Das braucht man für Multiple Report Containers und Nested Tables. Hier ein Link zur Beschreibung dieses Interfaces:
https://www.combit.net/en/blog/developm ... ontainers/
Alles, was man tun muss, ist eine Klasse zu schreiben, das von meinem LLDataProvider erbt und die Methoden überlädt, bei denen man reinlangen will. Ich selber verwende L&L nicht, aber mein Kunde ist glücklich, weil LLDataProvider funktioniert wie eine Lottchen.
Gibt es "da draußen" größeres Interesse dafür? Ich selber verwende L&L (noch) nicht. Das könnte sich aber nun ändern. Nachfolgend der Source Code der LLDataProvider Klasse, von der man erbt und deren Methoden man überladen kann.
Viele Grüße
Michael
SECTION CLASS LLDataProvider
CLASS LLDataProvider FROM ComObjectManager,ILLDataProviderImage
EXPORTED:
METHOD Init
METHOD OpenTable
METHOD OpenChildTable
METHOD GetRowCount
METHOD MoveNext
METHOD DefineRow
METHOD Dispose
METHOD SetUsedIdentifiers
METHOD ApplySortOrder
METHOD ApplyFilter
METHOD ApplyAdvancedFilter
METHOD SetOption
METHOD OnDestroy
ENDCLASS
METHOD LLDataProvider:Init(llJob)
::ComObjectManager:Init({||::OnDestroy()})
::ILLDataProviderImage:Init(self,self)
RETURN self
METHOD LLDataProvider:OpenTable(in_c_TableName, out_ifc_LLDataProvider)
RETURN NIL && or LLDataProvider object
METHOD LLDataProvider:OpenChildTable(in_c_Relation, out_ifc_LLDataProvider)
* Put the code here to open a related file or array or ....
RETURN NIL && or LLDataProvider object
METHOD LLDataProvider:GetRowCount
* Return the number of rows of your table or a value saying you don't know
RETURN 0
METHOD LLDataProvider:MoveNext
* Move to the next record
RETURN .F.
METHOD LLDataProvider:DefineRow
* Pass all data of the current row to L&L using the L&L API
RETURN .F.
METHOD LLDataProvider:Dispose
* Clean up all your don't need any more
RETURN .T.
METHOD LLDataProvider:SetUsedIdentifiers(in_array_FieldRestriction)
* reserved
RETURN .F.
METHOD LLDataProvider:ApplySortOrder(in_c_SortOrder);
* apply a named sort order
RETURN .F.
METHOD LLDataProvider:ApplyFilter(in_array_c_FieldNames, in_array_Values);
* apply a filter using fields and values they must contain
RETURN .F.
METHOD LLDataProvider:ApplyAdvancedFilter
* Reserved for Future use
RETURN .F.
METHOD LLDataProvider:SetOption(in_n_index,in_value)
* Set an option addressed by an index
RETURN .F.
* Called when last reference falls
METHOD LLDataProvider:OnDestroy
RETURN NIL
ENDSECTION
ich habe im Auftrag eines anderen Xbase++ Users ein COM-Objekt implementiert, das das ILLDataProvider Interface exportiert. Damit kann man Daten an L&L weiterreichen, nachdem L&L gestartet wurde. Das braucht man für Multiple Report Containers und Nested Tables. Hier ein Link zur Beschreibung dieses Interfaces:
https://www.combit.net/en/blog/developm ... ontainers/
Alles, was man tun muss, ist eine Klasse zu schreiben, das von meinem LLDataProvider erbt und die Methoden überlädt, bei denen man reinlangen will. Ich selber verwende L&L nicht, aber mein Kunde ist glücklich, weil LLDataProvider funktioniert wie eine Lottchen.
Gibt es "da draußen" größeres Interesse dafür? Ich selber verwende L&L (noch) nicht. Das könnte sich aber nun ändern. Nachfolgend der Source Code der LLDataProvider Klasse, von der man erbt und deren Methoden man überladen kann.
Viele Grüße
Michael
SECTION CLASS LLDataProvider
CLASS LLDataProvider FROM ComObjectManager,ILLDataProviderImage
EXPORTED:
METHOD Init
METHOD OpenTable
METHOD OpenChildTable
METHOD GetRowCount
METHOD MoveNext
METHOD DefineRow
METHOD Dispose
METHOD SetUsedIdentifiers
METHOD ApplySortOrder
METHOD ApplyFilter
METHOD ApplyAdvancedFilter
METHOD SetOption
METHOD OnDestroy
ENDCLASS
METHOD LLDataProvider:Init(llJob)
::ComObjectManager:Init({||::OnDestroy()})
::ILLDataProviderImage:Init(self,self)
RETURN self
METHOD LLDataProvider:OpenTable(in_c_TableName, out_ifc_LLDataProvider)
RETURN NIL && or LLDataProvider object
METHOD LLDataProvider:OpenChildTable(in_c_Relation, out_ifc_LLDataProvider)
* Put the code here to open a related file or array or ....
RETURN NIL && or LLDataProvider object
METHOD LLDataProvider:GetRowCount
* Return the number of rows of your table or a value saying you don't know
RETURN 0
METHOD LLDataProvider:MoveNext
* Move to the next record
RETURN .F.
METHOD LLDataProvider:DefineRow
* Pass all data of the current row to L&L using the L&L API
RETURN .F.
METHOD LLDataProvider:Dispose
* Clean up all your don't need any more
RETURN .T.
METHOD LLDataProvider:SetUsedIdentifiers(in_array_FieldRestriction)
* reserved
RETURN .F.
METHOD LLDataProvider:ApplySortOrder(in_c_SortOrder);
* apply a named sort order
RETURN .F.
METHOD LLDataProvider:ApplyFilter(in_array_c_FieldNames, in_array_Values);
* apply a filter using fields and values they must contain
RETURN .F.
METHOD LLDataProvider:ApplyAdvancedFilter
* Reserved for Future use
RETURN .F.
METHOD LLDataProvider:SetOption(in_n_index,in_value)
* Set an option addressed by an index
RETURN .F.
* Called when last reference falls
METHOD LLDataProvider:OnDestroy
RETURN NIL
ENDSECTION