Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi StringGrid farblich in XE7 anders als in Delphi 2006 (https://www.delphipraxis.net/183812-stringgrid-farblich-xe7-anders-als-delphi-2006-a.html)

HolgerCW 6. Feb 2015 11:04

Delphi-Version: XE7

StringGrid farblich in XE7 anders als in Delphi 2006
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

in Delphi XE7 werden jetzt meine StringGrind-Zellen nicht mehr komplett mit der Farbe gefüllt.

Delphi-Quellcode:
With STG_1 do
 begin

  If (ACol = 5) AND (ARow > 0) then
  begin

   Canvas.Brush.Color := clGradientInactiveCaption;
   Canvas.FillRect(Rect);

   Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]);

  end;

 end;
Es bleibt links ein kleiner Rand. Warum ? Siehe hier:

Anhang 42532

Gruss

Holger

hathor 6. Feb 2015 11:28

AW: StringGrid farblich in XE7 anders als in Delphi 2006
 
...

Uwe Raabe 6. Feb 2015 11:55

AW: StringGrid farblich in XE7 anders als in Delphi 2006
 
Da war doch mal was...
FillRect doesn't paint the complete TStringGrid cell in Delphi XE2

HolgerCW 6. Feb 2015 12:29

AW: StringGrid farblich in XE7 anders als in Delphi 2006
 
Wenn man nun folgendes macht:

Delphi-Quellcode:
Rect.Left := Rect.Left - 4;
Dann klappt es. Ist das denn die saubere Lösung ?

Gruss

Holger

Uwe Raabe 6. Feb 2015 13:26

AW: StringGrid farblich in XE7 anders als in Delphi 2006
 
Zitat:

Zitat von HolgerCW (Beitrag 1289006)
Wenn man nun folgendes macht:

Delphi-Quellcode:
Rect.Left := Rect.Left - 4;
Dann klappt es. Ist das denn die saubere Lösung ?

Sicher nicht - aber ich kenne keine andere.

Harry Stahl 1. Mai 2015 18:24

AW: StringGrid farblich in XE7 anders als in Delphi 2006
 
Da bin ich auch gerade drüber gestolpert.

Würde dann hier aber

Delphi-Quellcode:
rect := TStringGrid (sender).CellRect(ACol,ARow);


bevorzugen, denn dann stimmen die Rect-Werte auch, wenn man den Source-Code auch auf älteren Delphi-Versionen einsetzt (oder falls das später mal in einer Version XE 43 :wink: gefixt werden sollte).

Sir Rufo 1. Mai 2015 18:58

AW: StringGrid farblich in XE7 anders als in Delphi 2006
 
Mit
Delphi-Quellcode:
Rect
bekommt man nun den Ausgabebereich für den Text.

Der Weg von Harry geht übrigens nur bei Firemonkey

Harry Stahl 1. Mai 2015 19:21

AW: StringGrid farblich in XE7 anders als in Delphi 2006
 
@ Sir Rufo: Nein, das war nicht auf FireMonkey bezogen, sondern auf die VCL.

CellRect gibt genau die gleichen Werte an, wie Rect an das OnDrawCell-Event übergeben wird, nur eben korrigiert um den Wert für Rect.Left um -4.

Sir Rufo 1. Mai 2015 20:24

AW: StringGrid farblich in XE7 anders als in Delphi 2006
 
Zitat:

Zitat von Harry Stahl (Beitrag 1299954)
@ Sir Rufo: Nein, das war nicht auf FireMonkey bezogen, sondern auf die VCL.

CellRect gibt genau die gleichen Werte an, wie Rect an das OnDrawCell-Event übergeben wird, nur eben korrigiert um den Wert für Rect.Left um -4.

Jetzt wo du es sagst, ich hatte nur auf der Eigenschaftsseite geschaut das ist aber eine Methode :oops:

Delphi-Referenz durchsuchenTStringGrid.CellRect


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz