User-Objekte

Sollte Ihnen in List & Label eine Objektart fehlen, dann lässt sich List & Label über sog. User-Objekte erweitern.

Wenn Sie in Ihrem Programm eine Variable über

LlDefineVariableExt(hJob, <Name>, <Inhalt>, LL_­DRAWING_­USEROBJ, NULL);

definiert haben, kann der Benutzer im Designer ein Objekt definieren, das mit dieser Variablen zusammenhängt. Dies geschieht analog zu normalen LL_­DRAWING-Variablen.

Wenn List & Label dieses Objekt im Preview oder beim Druck ausgeben soll, ruft es über den Callback LL_­CMND_­DRAW_­USEROBJ Ihr Programm auf, um diese Aufgabe an Ihr Programm weiterzugeben.

Dasselbe können Sie auch für Tabellenfelder durchführen, damit der Benutzer die Möglichkeit hat, sich ein User-Objekt in die Tabelle einzubauen:

LlDefineFieldExt(hJob, <Name>, <Inhalt>, LL_­DRAWING_­USEROBJ, NULL);

Für Variablen besteht zusätzlich die Möglichkeit, User-Objekte zu definieren, deren Parameter der Benutzer im Designer ändern kann. Die Objekte werden mit dem LL_­DRAWING_­USEROBJ_­DLG-Typ definiert:

LlDefineVariableExt(hJob, <Name>, <Inhalt>, LL_­DRAWING_­USEROBJ_­DLG, NULL);

Bearbeitbare User-Objekte können nicht in Tabellen eingefügt werden.

Wenn der Benutzer nun im Designer in den Objekteigenschaften des Bildes die Eigenschaften der Variable bearbeitet, dann werden Sie über den LL_­EDIT_­USEROBJ-Callback aufgefordert, einen dazugehörigen Dialog aufzubauen, in dem die Parameter, die zu dem Objekt gehören, geändert werden können. Diese Parameter werden mit den anderen Objektinformationen automatisch in der Projektdefinitionsdatei gespeichert und zur Auswertung beim LL_­DRAW_­USEROBJ-Callback übergeben, so dass Ihr Programm sich nicht weiter um die Speicherung der Parameter kümmern muss.

Beachten Sie, dass Sie in Callback-Objekten nur mit DIB (device independent bitmaps) arbeiten sollten, DDB (device dependent bitmaps) können mit dem jeweiligen Drucker-DC inkompatibel sein.