29.11.2012 Aufrufe

combit List & Label - Programmierer-Referenz - combit GmbH

combit List & Label - Programmierer-Referenz - combit GmbH

combit List & Label - Programmierer-Referenz - combit GmbH

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Weiterführende Programmierung<br />

Zunächst wird nur eine obere Ebene auf Vorschau ausgegeben (z.B. "Kunden") und durch<br />

einen Klick auf einen Kunden dann ein neuer Bericht (z.B. "Bestellungen") geöffnet, der<br />

im Normalfall Details zu dem Datensatz enthält, auf den man geklickt hat. So klickt man<br />

sich nach und nach herunter (daher die Bezeichnung) bis man z.B. bei den einzelnen<br />

Produkten gelandet ist. Der Vorteil liegt in der Performance, durch die schrittweise Spezialisierung<br />

findet man auch in komplexen und großen Datenbeständen schnell genau<br />

die Informationen, die man sucht. Drilldown funktioniert in <strong>List</strong> & <strong>Label</strong> für die Vorschau,<br />

und für Tabellenzeilen oder -felder.<br />

Voraussetzung für dieses Feature ist, dass Ihre Entwicklungsumgebung auf Callbacks<br />

oder Fenster-Nachrichten reagieren kann (siehe Kapitel 11. Callbacks und Notifications).<br />

Die .NET und VCL-Komponenten unterstützen im datengebundenen Modus automatisch<br />

dieses Feature, sobald eine Datenquelle angebunden wird, die Hierarchien unterstützt<br />

und auch zurückgesetzt werden kann (die meisten DataProvider erfüllen diese<br />

Voraussetzungen). Wenn Sie die Komponente so verwenden, brauchen Sie den Inhalt<br />

dieses Kapitels nicht zu berücksichtigen.<br />

Für eine verbesserte Benutzerakzeptanz empfiehlt es sich bei anderen Entwicklungsumgebungen<br />

das Drilldown per Threading zu implementieren, so dass die Arbeit dazu im<br />

Hintergrund stattfinden kann. Dies ist aber nicht zwingend notwendig. Sie müssen in<br />

diesem Fall einen Thread mit einer Druckprozedur starten können und benötigen Synchronisationselemente<br />

wie Mutex, Critical Section oder ähnliches.<br />

Die von Ihrem Code durchzuführende Aufgabe besteht darin, Ihren Echtdatendruck mit<br />

einer passend gefilterten Datenquelle auszuführen. Hierfür gibt es über einen Callback<br />

Informationen über die Aufgabe (Start und Ende eines Drilldown-Berichts). Es sind nur<br />

geringe Änderungen gegenüber dem normalen Druck notwendig.<br />

3.3.1. Vorbereitungen<br />

Um <strong>List</strong> & <strong>Label</strong> mitzuteilen, dass Sie Drilldown-Berichte entsprechend der obigen Anforderungen<br />

durchführen können, müssen Sie die Option LL_OPTION_DRILLDOWN-<br />

PARAMETER auf einen Wert ungleich 0 setzen.<br />

Beachten Sie aber, dass Sie diese Option für jeden Druckjob setzen müssen, der Drilldown<br />

ermöglichen soll.<br />

Beispiel:<br />

// activate Drilldown for current LL-Job<br />

::LlSetOption(hJob, LL_OPTION_DRILLDOWNPARAMETER,<br />

(LPARAM)&oMyDrillDownParameters);<br />

Um Drilldown für den LL-Job wieder zu deaktivieren, müssen Sie diese Option einfach<br />

auf den Wert 'NULL' setzen:<br />

Beispiel:<br />

// deactivate Drilldown for current LL-Job<br />

::LlSetOption(hJob, LL_OPTION_DRILLDOWNPARAMETER, NULL);<br />

50

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!