TStringGrid, OnDrawCell und Zellenausmasse
-
Hi,
ich habe ein TStringGrid, bei dem ich die Zellen selbst zeichne. Funktioniert soweit ganz gut, wenn alle Zellen komplett sichtbar sind und weder horizontal noch vertikal unvollständige Zellen gezeichtnet werden müssen. Bei unvollständigen Zellen wird das Rechteck der Zelle beschnitten, sodass der der rechte oder untere Rand der Zelle immer auf dem rechten bzw. unteren Rand des StringGrids liegt. Das ist ärgerlich, wenn man Text horizontal zentriert zeichnen will, da eine Zelle z.B. plötzlich nur noch 8 Pixel breit oder hoch ist statt der normalen 60 oder 20. Die Zellenbeschriftung sieht dann aus wie Fliegendreck.
Hat jemand eine Idee, wie man das lösen kann? Ich möchte nicht immer die Zellenbreite/-höhe anpassen, sodass nur vollständige Zellen in das StringGrid passen.
-
Lösung:
Statt die von CellRect zurückgelieferten TRect der einzelnen Zellen zu benutzen korrigiere ich deren Höhe und Breite manuell:TRect r = StringGrid->CellRect( Column, Row ); r.right = r.left + StringGrid->ColWidths[Column]; r.bottom= r.top + StringGrid->RowHeights[Row];
PS:
Mein erstes Posting muss nicht unbedingt stimmen, da ich aus dem OnDrawCell Ereinishandler eine weitere Methode aufrufe und bei diesem Aufruf aber nicht das TRect aus dem Ereignis benutze. Stattdessen bestimme ich das Zellenrechteck durch TStringGrid::CellRect, das wohl das von mir oben beschriebene Verhalten zeigt.