in einer Applikation setze ich das TECGrid von Eye-Candy ein.
In einem TList-Record habe ich, unter anderem ein Array mit 3 Spalten (Name, Typ, Beschreibung).
Dieses Array wird je nach ausgewähltem Record in dem TECGrid angezeigt.
In meinem TList gibt es nun eine Suchfunktion, die in dem Record (auch in dem Array) nach Begriffen sucht (Volltextsuche). Jedes Vorkommen des Begriffs soll in der Anzeige im Dialog farblich hervorgehoben werden. Das gelingt mir im gesamt Form, nur beim TECGrid nicht.
Ich dachte, dazu wäre das Ereignis OnDrwaDataCell gedacht. Ich habe dort folgende Funktion zum einfärben eingebaut:
Code: Alles auswählen
procedure TfSyntax.ecgParameterDrawDataCell(Sender: TObject; ACanvas: TCanvas;
ACol, ARow: Integer; var AHandled: Boolean);
begin
ACanvas.Brush.Color:=clNone;
if length(arrCMD) > 0 then
begin
if (ACol = 1) and
(ARow = arrCMD[IndexAktCMD,ipArrParaCol1]) and
(arrCMD[IndexAktCMD,ipArrParaCol1] <> 0) then
ACanvas.Brush.Color:= cHighLight;
if (ACol = 2) and
(ARow = arrCMD[IndexAktCMD,ipArrParaCol2]-1) and
(arrCMD[IndexAktCMD,ipArrParaCol2] <> 0) then
ACanvas.Brush.Color:= cHighLight;
if (ACol = 3) and
(ARow = arrCMD[IndexAktCMD,ipArrParaCol3]-1) and
(arrCMD[IndexAktCMD,ipArrParaCol3] <> 0) then
ACanvas.Brush.Color:= cHighLight;
end;
end;
in dem dynamischen Array arrCMD ist hinterlegt welche Zelle eingefärbt werden soll. Klappt toll.
IndexAktCMD = aktueller in einer Listbox ausgewählter Record
ipArrParaCol1 = Spalte des Vorkommens des Begriffs
arrCMD[IndexAktCMD,ipArrParaCol1] = enthält die Zeile des Vorkommens im Array des Records
Die Logik funktioniert. Das Programm geht in die Funktion rein und setzt auch ACanvas.Brush.Color richtig.
Im TECGrid wird die Farbe aber nicht angezeigt. Trotz TECGrid.Repaint am Abschluss als auch TECGrid.Refrehs.
Jetzt hab ich schon gedacht, der Style der Komponenten müsste auf OwnerDraw gesetzt werden wie beim Listbox z.B. Aber diesen Style kennt die Komponenten nicht.
Ich denke ich stehe dicht vor der Lösung, bekomme aber die letzte Kurve nicht. Der Quell-Code der Komponente hilft mir auch nicht. Davor enden mein Kompetenzen.
Hat jemand einen Tip, wie ich DrawDataCell zum Erfolg führe?