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 Text zentrieren 2006 - XE7 (https://www.delphipraxis.net/183810-stringgrid-text-zentrieren-2006-xe7.html)

HolgerCW 6. Feb 2015 10:32

Delphi-Version: XE7

StringGrid Text zentrieren 2006 - XE7
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

ich nutze nun XE7. Vorher hatte ich 2006.

Folgende Funktion nutzte ich dort:

Delphi-Quellcode:
procedure StringGridAlignment(Grid: TStringGrid; Rect: TRect; ACol, ARow: Integer;
  Alignment: TAlignment; LineBreak: Boolean);
var
  TextOut: string;
begin

 Grid.Canvas.FillRect(Rect);

 TextOut := Grid.Cells[ACol,ARow];

 if LineBreak = false then
 begin

  if Alignment = taLeftJustify then
  begin
   Rect.Left := Rect.Left + 2;
   DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect,DT_LEFT);
  end;

  if Alignment = taCenter then
   DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect,DT_CENTER);

  if Alignment = taRightJustify then
   DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect,DT_RIGHT);

 end
 else
 begin

  if Alignment = taLeftJustify then
  begin
   Rect.Left := Rect.Left + 2;
   DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)),
   Rect,DT_LEFT+DT_WORDBREAK);
  end;

  if Alignment = taCenter then
   DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect,
   DT_CENTER+DT_WORDBREAK);

  if Alignment = taRightJustify then
   DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect,
   DT_RIGHT+DT_WORDBREAK);
  end;

end;
Seid Delphi XE7 wird das aber leider so dargestellt: (Bezeichnung doppelt)

Anhang 42531

Gruss

Holger

baumina 6. Feb 2015 10:45

AW: StringGrid Text zentrieren 2006 - XE7
 
DefaultDrawing sollte False sein, sonst zeichnet die Grid selbst und du dann auch nochmal.

HolgerCW 6. Feb 2015 10:55

AW: StringGrid Text zentrieren 2006 - XE7
 
Hallo,

habe mal DefaultDrawing auf FALSE gesetzt. Dann müsste ich aber auch alles andere selber zeichnen. Die Kopfzeile ist dann nicht mehr so rundlich dargestellt etc.

Kann man nicht über den vorherigen Text drüber schreiben indem der entfernt wird ?

Mit dem selben Code ging das in Delphi 2006 ja auch. Was ist jetzt anders ?

Gruss

Holger

HolgerCW 6. Feb 2015 12:28

AW: StringGrid Text zentrieren 2006 - XE7
 
Hat jemand eine Lösung ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:47 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