Erläuterung

Wenn die Einstellung von List & Label-Optionen gewünscht ist, müssen diese vor Aufruf des Designers vorgenommen werden.

Normalerweise wird nun der Benutzer über eine Dialogbox gefragt, welche Datei er bearbeiten möchte. In unserem Fall nehmen wir an, dass er ein Etikett bearbeiten will.

Wichtig ist, dass der Puffer für den Dateinamen vorinitialisiert wurde - entweder auf einen leeren String (""), oder auf einen Dateinamenvorschlag, incl. Pfad:

TCHAR  aczProjectFile[_­MAX_­PATH];
_tcscpy(aczProjectFile, "c:\\mylabel.lbl");
LlSelectFileDlgTitleEx(hJob, hWindow, "Etikett auswählen", LL_­PROJECT_­LABEL,
       aczProjectFile, _­MAX_­PATH, NULL);

Natürlich können Sie den Aufruf auch mit einer eigenen Dialogbox realisieren, oder Sie können den Dateinamen ohne Benutzerabfrage dem Designer übergeben, falls nicht gewünscht ist, dass der Benutzer wählen kann.

Jetzt müssen List & Label die möglichen Variablen mitgeteilt werden, damit es diese dem Benutzer in der Variablenliste zur Verfügung stellt. Sonst könnte der Benutzer nur festen Text in die Objektdefinitionen übernehmen.

Zuerst wird der Variablenpuffer gelöscht (falls schon Variablen definiert wurden, aber der Aufruf ist zur Sicherstellung eines leeren Variablenpuffers empfehlenswert):

LlDefineVariableStart(hJob);

Jetzt kann man die Variablen auf mehrere Arten angeben. Wenn der Designer zu einer Variablen eine Beispiel-Übersetzung kennt, wird diese im Preview-Fenster statt des Variablennamens verwendet, um eine realistischere Preview-Darstellung zu gewährleisten.

LlDefineVariable(hJob, "Vorname", "Otto");
LlDefineVariable(hJob, "Name", "Normalverbraucher");

Im Preview wird der auf dem Designer-Arbeitsblatt stehende Ausdruck
          Vorname+" "+Name
in die Ausgabe
          Otto Normalverbraucher
umgesetzt.

Die erweiterte Variablendefinition mit LlDefineVariableExt() wird benutzt, um andere Variablentypen als Text, z. B. für Barcode-Objekte oder Zeichnungen zu definieren.

Wenn auch Listenobjekte gebraucht werden, also ein Projekt des Typs LL_­PROJECT_­LIST bearbeitet werden soll, muss der Programmierer die hier möglichen Felder zur Verfügung stellen. Dies geschieht analog zu oben (auch z. B. Barcode-Felder und Zeichnungen sind als Tabellenspalten möglich), nur dass die Funktionsnamen nun statt 'Variable' 'Field' enthalten:

LlDefineFieldStart(hJob);
LlDefineField(hJob, "Buch");
LlDefineField(hJob, "ISBN");
LlDefineFieldExt(hJob, "ISBN", "40|15589|97531", LL_­BARCODE_­EAN13, NULL);
LlDefineFieldExt(hJob, "Foto", "c:\\dwg\\test.bmp", LL_­DRAWING, NULL);

Vor dem Aufruf von LlDefineLayout() können dem Benutzer über LlDesignerProhibitAction() Menüpunkte gesperrt werden, oder verhindert werden, dass der Designer minimiert wird. Dies macht beispielsweise der Aufruf von

LlDesignerProhibitAction(hJob, LL_­SYSCOMMAND_­MINIMIZE);

Jetzt ist alles so weit definiert, dass der Benutzer sein Etikett, seine Karteikarte oder Liste definieren kann, indem der Designer aufgerufen wird:

LlDefineLayout(hJob, hParentWindow, "Test-Titel", LL_­PROJECT_­LABEL, "test.lbl");

Für eine Liste muss entsprechend die Konstante LL_­PROJECT_­LIST bzw. für eine Karteikarte LL_­PROJECT_­CARD verwendet werden.

Beachten Sie, dass Prinzip bedingt im Vorschaufenster des Designers mit nur einem (immer gleichen) Datensatz gearbeitet wird. Es ist aber möglich, auch im Designer eine Echtdatenvorschau direkt anzubieten, siehe Kapitel Direkter Druck und Export aus dem Designer.

Es empfiehlt sich, generell den Fehlercode von Funktionsaufrufen auszuwerten.