Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Image in DBGrid zeichnen - Problem mit Text (https://www.delphipraxis.net/158100-image-dbgrid-zeichnen-problem-mit-text.html)

Jack and the Juice 5. Feb 2011 14:01

Image in DBGrid zeichnen - Problem mit Text
 
Hallo,
ich zeichne mit folgendem Code ein Image in die Zeilen eines DBGrids.

Delphi-Quellcode:
    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;
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.

Vielen Dank für Eure Hilfe,
Jackandthejuice

Jack and the Juice 18. Feb 2011 14:33

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

shmia 18. Feb 2011 15:09

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.

Jack and the Juice 19. Feb 2011 22:23

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

Sir Rufo 20. Feb 2011 01:52

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 ;)

Jack and the Juice 20. Feb 2011 10:00

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:
if (gdSelected in State) then
      begin
        with DBGrid1.Canvas do
        begin
          Brush.Color := clHighlight;
          Font.Color := clHighlightText;
        end;
      end;
So funktioniert es bei mir nun auch. :)

Besten Dank

BBoy 28. Mai 2011 11:42

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.

mkinzler 29. Mai 2011 11:30

AW: Image in DBGrid zeichnen - Problem mit Text
 
Das Zeichnen komplett selber übernehmen

BBoy 29. Mai 2011 13:31

AW: Image in DBGrid zeichnen - Problem mit Text
 
gibt es keine andere Möglichkeit

jaenicke 29. Mai 2011 13:44

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.
Seite 1 von 2  1 2      

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