![]() |
in einem stringgrid den text in den column zentrieren
fogender massen bin ich rangegangen:
Delphi-Quellcode:
er zentriert aber nicht richtig. wird eigentlich bei der breite der zellen der rahmen mitgemessen, oder muss man diesen noch dazuaddieren???
procedure TForm1.SG1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); var r:TRect; i,a,x:integer; s:string; begin with (sender as Tstringgrid) do begin for i:=0 to 6 do begin r:=cellrect(i,0); canvas.brush.color:=clblue; if i = 0 then s:='name' else s:='Donnerstag'; a:=length(s)*font.size; canvas.TextRect(r,r.left+((colwidths[i]div 2)-(a div 2)),r.top,s);// das ist die zeile die zentrieren soll !!! canvas.Brush.color:=clwhite; canvas.FrameRect(r); end; end; raik |
Re: in einem stringgrid den text in den column zentrieren
hallo kiar!
ich glaub, du hast die arbeitsweise von 'drawcell' nicht richtig verstanden :wink: drawcell zeichnet immer nur jene zelle, mit deren koordinaten es aufgerufen wird --> procedure TForm1.SG1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); wenn du in einer schleife durch deine spalten iterierst, ist es sehr wahrscheinlich, dass du colwidth der letzten spalte für alle vorherigen auch zum zentrieren heranziehst. aus diesem grund dürfte es bei dir nicht so gut aussehen probiers mal auf diese art:
Delphi-Quellcode:
quelle: huberlix im vorigen beitrag :P
{$UNTESTED}
s:=StringGrid1.Cells[ACol,ARow] StringGrid1.Canvas.FillRect(Rect); // Zellfarbe zeichnen DrawText(StringGrid1.Canvas.Handle, PChar(s), Length(s), Rect, DT_Center); damit sollte es klappen mfg, stefan |
Re: in einem stringgrid den text in den column zentrieren
hi grayfox , danke für deine antwort, bin auch schon auf drawtext gekommen, da geht es sogar mit dt_center und dtwordbreak, aber ich will die fixierten cellen zentrieren und umbrechen.
wäre klasse, wenn dir noch etwas einfallen würde. raik |
Re: in einem stringgrid den text in den column zentrieren
Hallo,
versuch es doch mal mit
Delphi-Quellcode:
DrawText(StringGrid1.Canvas.Handle, PChar(s), Length(s), Rect, DT_Center+dt_wordbreak);
|
Re: in einem stringgrid den text in den column zentrieren
hallo jens
siehe einen post über deinen . ich hatte die beschriftung für die Column ausgeschaltet, deshalb war nichts in den column zu sehen. also das thema ist erledigt. vielen dank raik |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:09 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 by Thomas Breitkreuz