![]() |
Image in DBGrid zeichnen - Problem mit Text
Hallo,
ich zeichne mit folgendem Code ein Image in die Zeilen eines DBGrids.
Delphi-Quellcode:
Funktioniert auch alles bestens, allerdings würde ich gerne DrawingStyle:=gdsGradient setzen. Sobald ich diese Eigenschaft setze, wird der Text nicht mehr richtig dargestellt. Sobald die entsprechende Zeile ausgewählt wird, wird sowohl der verschobene Text, als der der Ursprungstext angezeigt, was natürlich zu einer unschönen Überlappung führt. Wird DrawingStyle:=gdsClassic ausgewählt, funktioniert alles problemlos. Im Notfall würde ich auf die Classic-Variante zurückgreifen, aber imho macht die Gradient-Variante doch mehr her.
fixRect := Rect;
if Column.Field = dbgrid1.Fields[0] then begin bitmap := TBitmap.Create; try ImageList5.GetBitmap(imgIndex,bitmap); bmpWidth := (Rect.Bottom - Rect.Top); fixRect.Right := Rect.Left + bmpWidth; DBGrid1.Canvas.StretchDraw(fixRect,bitmap); finally bitmap.Free; end; fixRect := Rect; fixRect.Left := fixRect.Left + bmpWidth; DBGrid1.DefaultDrawColumnCell(fixRect, DataCol, Column, State); end; Vielen Dank für Eure Hilfe, Jackandthejuice |
AW: Image in DBGrid zeichnen - Problem mit Text
Hallo,
ich müsste den Thread leider nochmal nach oben holen. Habe bisher leider keine Lösung gefunden. Es wäre nett, wenn sich jemand meinem Problem annehmen würde. Vielen Dank schonmal, jackandthejuice |
AW: Image in DBGrid zeichnen - Problem mit Text
Ist das Property DefaultDrawing = False?
Sollte so sein, denn du rufst ja DBGrid1.DefaultDrawColumnCell() auf, was leicht zu doppeltem Ausgeben der Zelle führen kann. |
AW: Image in DBGrid zeichnen - Problem mit Text
Hallo,
vielen Dank, ich glaub das wird's gewesen sein. Ich hab DefaultDrawing:=false gesetzt und zeichne die anderen Felder jetzt ebenfalls bei DrawColumnCell, allerdings wird nun die markierte Reihe nicht mehr blau unterlegt angezeigt. Irgendeine Ahnung, ob ich da noch etwas ergänzen muss? Beste Grüße |
AW: Image in DBGrid zeichnen - Problem mit Text
Schau doch in dem Quelltext von DBGrid nach und kopiere dir die DrawRoutine von dort.
Diese erweiterst du noch um deinen Part mit den Grafiken und alles sollte perfekt sein. Wenn du DefaltDrawing auf False setzt, dann musst du dich um das ganze Zeichnen-Geraffel kümmern. Default Drawt der nix mehr ;) |
AW: Image in DBGrid zeichnen - Problem mit Text
OK, für alle, die ein ähnliches Problem haben sollten.
Einfach in OnDrawColumnCell folgenden Code ergänzen:
Delphi-Quellcode:
So funktioniert es bei mir nun auch. :)
if (gdSelected in State) then
begin with DBGrid1.Canvas do begin Brush.Color := clHighlight; Font.Color := clHighlightText; end; end; Besten Dank |
AW: Image in DBGrid zeichnen - Problem mit Text
Eine Frage hierzu:
In meinem DbGrid wird in der Spalte wo ich das Icon anzeigen lasse auch noch der Text dargestellt. Wie kann ich den Text entfernen so das anstatt dem Text das Icon angezeigt wird? Der Text soll nur in der anzeige im DbGrid entfernt werden nicht in der Datenbank. |
AW: Image in DBGrid zeichnen - Problem mit Text
Das Zeichnen komplett selber übernehmen
|
AW: Image in DBGrid zeichnen - Problem mit Text
gibt es keine andere Möglichkeit
|
AW: Image in DBGrid zeichnen - Problem mit Text
Warum sollte es eine andere geben? Und vor allem: Wie stellst du dir das vor?
Du willst einen nicht standardmäßigen Inhalt drin haben, dann musst du auch im Code schreiben welchen. Eben indem du hineinzeichnest was du möchtest. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz