Zeilenweise Fettschrift in StringGrid
-
Bin schon am Tippen. Ich war vorher über UMTS online, da musste es schnell gehen.
Es wird die Funktion Show() aufgerufen, die die Daten aus einigen Dateien ausliest, verarbeitet und in der Tabelle anzeigt...Funktioniert wunderbar
Je nachdem was das für daten waren, muss die entsprechende Zeile in der Tabelle eine Hintergrundfarbe/Fettschrift bekommen... Wie das mit OnDrawCell funktioniert weis ich mittlerweile auch.
Aber wie kann ich jetzt in Show() dafür sorgen, dass dieses OnDrawCell genau diese eine Zeile in die gerade der Text geschrieben wurde einen Hintergrund/Fettschrift verpasst bekommt?
Ich glaube ich stehe gerade etwas aufm' Schlauch.mfg
Rai
P.S: Bringt das Forum bei euch auch dauernd Critical errors?
-
Hallo
nicht die Funktion Show() macht das, sondern du must im OnDrawCell-Event die Unterscheidung machen.
Im einfachsten Fall hängt die Unetrscheiden an den Zeilen/Spaltenindizes und dem Zellwert. Das kannst du ja einfach im OnDrawCell-Event aus den parametern und aus dem StrignGrid auslesen und auswerten.
Wenn es nicht aus den genannten Werten selber ersichtlich wird, must du noch zusätzlich den Fett-Status in einer Member-variablen geeigneter Art zuwischenspeichern und im OnDrawCell-Event auswerten.bis bald
akari
-
Hi,
vielen Dank, funktioniert. Ich habe immer verzweifelt versucht, das OnDrawCell irgendwie auf zu rufen.... war offenbar persönliche Dummheit:-)
Leider ist mein Fall nicht der 'Einfache', aber das sollte jetzt kein Problem mehr sein. Werde ich eben einen kleineren Hilfsarray benutzen.... was ist da speicherschonender: Einen boolschen Array oder ein neue Spalte in der Tabelle mit breite=0?
mfg
Rai
-
Hallo
das bool-Array.
Aber wenn du dir das zutraust, kannst du auch die Objects-Eigenschaften der Rows bzw. Cols-StringLists für das speichern slcher integralen Werte benutzen.bis bald
akari
-
Ein boolsches Array wäre speicherschonender. Du kannst auch TStringGrid::Objects dafür nehmen.
-
ICh werde das mit den Objects mal probieren.. mehr als schiefgehen kann es ja nicht.
Ich habe mit dem Textzeichenbefehl noch ein problem:
DrawText(Tabelle->Canvas->Handle, Tabelle->Cells[ACol][ARow].c_str(),-1, &Rect, DT_SINGLELINE | DT_VCENTER );So stehts ja in der FAQ, die Borland Hilfe kennt DrawText nicht...
Das Problem ist: Dem Linken Buchstaben einer Zelle fehlen ein paar pixel, während an der rechten Seite ein paar hinzu kommen. setzt ich -1 auf 10 verstärkt sich der Effekt, setze ich es auf -10 verschwindet er. Wieso?mfg
Rai
-
Hallo
warum benutz du nicht Canvas->TextOut oder ->TextRect?
bis bald
akari
-
Weils so in der FAQ stand.. irgendwo. ich teste das andere gleich mal.
mfg
Raimond
-
DrawText ist WinAPI (genauer GDI) und erlaubt noch etwas mehr Einstellungen als TextRect. Im Falle der FAQ wird DrawText genutzt um den Text zentriert darzustellen.
-
Ich nutze jetzt
Tabelle->Canvas->TextOut(Rect.left+2,Rect.top+2, Tabelle->Cells[ACol][ARow]);funktioniert bestens.
mfg
Rai