Aufgabe:
Ermöglicht es, die Farbgebung einzelner Tabellenfelder zu modifizieren.
Aktivierung:
LlSetOption(hJob, LL_OPTION_TABLE_COLORING, LL_COLORING_PROGRAM);
Dadurch wird die alleinige Kontrolle der Farbgebung in Tabellen Ihrem Programm überlassen (die entsprechenden Einstellungen im Tabellen-Eigenschaften-Dialog des Designers verschwinden dann).
LlSetOption(hJob, LL_OPTION_TABLE_COLORING, LL_COLORING_DONTCARE);
Mit dieser Option hingegen lässt List & Label erst Ihr Programm den Hintergrund zeichnen, dann zeichnet es den Hintergrund bei Bedarf noch einmal mit dem im Designer definierten Feldmuster. Dadurch ist eine Art Kooperation zwischen dem Programmierer und dem Benutzer möglich.
Parameter:
lParam zeigt auf eine scLlTableField-Struktur:
_nSize: Größe der Struktur, sizeof(scLlTableField)
_nType: Art des Feldes:
Wert |
Bedeutung |
LL_TABLE_FIELD_HEADER |
Feld ist in Kopfzeile |
LL_TABLE_FIELD_BODY |
Feld ist in Datenzeile |
LL_TABLE_FIELD_GROUP |
Feld ist in Gruppenkopf |
LL_TABLE_FIELD_GROUPFOOTER |
Feld ist in Gruppenfuß |
LL_TABLE_FIELD_FILL |
Feld ist die Füll-Fläche, die entsteht, wenn die Tabelle feste Größe besitzt und unter der letzten Datenzeile noch etwas Freiraum bleibt |
LL_TABLE_FIELD_FOOTER |
Feld ist in Fußzeile |
_hPaintDC: Device Context für die Ausgaben
_hRefDC: Device Context für Referenzen
_rcPaint: Rechteck, in dem das Feld gezeichnet werden soll. Der Mapping-Mode ist in der eingestellten Einheit, z. B. mm/100.
_nLineDef: Die Nummer der Zeilendefinition, die ausgegeben wird.
_nIndex: Feldindex, 0-basiert (die erste Spalte hat als Index 0, die zweite 1, etc.)
_rcSpacing: Werte der Zellen-Abstände
_pszContents: Der Parameter liefert den (evaluierten) Inhalt der Zelle, die gerade ausgegeben wird, also z. B. "Müller" für eine Spalte, die Person.Nachname enthält. Diesen Parameter kann man verwenden, um z. B. bestimmte Werte im Event besonders zu behandeln.
Rückgabewert (_lResult):
0
Hinweise:
In diesem Callback darf keine List & Label-Funktion aufgerufen werden, die Ausgaben zur Folge hat (LlPrint(), etc.)!
Wenn Sie irgendein GDI-Objekt in diesen DC selektieren oder andere Änderungen vornehmen, z. B. des Mapping-Modes, sollten Sie die Änderungen vor der Beendigung der Routine wieder rückgängig machen. Tipp: die API-Funktionen SaveDC(), RestoreDC() können bei komplexen Veränderungen sehr helfen (verwendete Funktionen sind Windows-API-Funktionen).
Beispiel:
case LL_CMND_TABLEFIELD:
pSCF =
(PSCLLTABLEFIELD)pSC->_lParam;
if (pSCF->_nIndex
== 1)
{
FillRect(pSCF->_hPaintDC, pSCF->_rcPaint,
GetStockObject(LTGRAY_BRUSH);
}
pSC._lResult = 0;
break;