Ik ben bezig met de migratie van mijn code naar versie 10.4
Hierbij loop ik tegen het volgende probleem aan.
De stringgrids die ik gebruik voorzie ik altijd van een eigen opmaak middels het OnDrawCell event.
Hierbij kleur ik de oneven rijen wit en de even rijen licht blauw (of andersom)
Echter als ik deze code in 10.4 uitvoer wordt maar een deel van de cell gekleurd
Dit komt doordat de rect die je door krijgt afwijkt van de rect in 10.3
Wanneer ik deze corrigeer gaat het tekenen wel goed.
Heeft iemand een idee waarom het doorgegeven rect afwijkt ten opzichte van de vorige Delphi versies
hierbij de ondraw code inclusief de correctie
Code:
procedure TForm4.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
A:string;
mycolor:Tcolor;
tempRect:TRect;
begin
if (Acol >= Tstringgrid(Sender).FixedCols) and (Arow >= Tstringgrid(Sender).FixedRows) then
begin
mycolor:=clWhite;
if not (Odd(ARow)) then mycolor:= $00DECFCE;
if (gdselected in state) or (gdfocused in state) then mycolor:= $005FC8FB;
with Tstringgrid(Sender) do
begin
Canvas.brush.Style := bsSolid;
Canvas.brush.color := myColor;
tempRect.Left:=Rect.Left+1;
tempRect.top:=Rect.Top-12;
tempRect.right:=Rect.right+3;
tempRect.Bottom:=Rect.Bottom+2;
rect:=tempRect;
rect.Left:=rect.Left-4;
Canvas.FillRect(Rect);
Canvas.font.Color := clblack;
Canvas.brush.Style := bsClear;
rect.Left:=rect.Left + 6;
rect.Top := rect.top + 2;
A:=cells[acol, arow];
DrawText( Tstringgrid(Sender).Canvas.Handle,PChar(A),StrLen(PChar(A)),Rect,DT_WORDBREAK);
end;
end;
end;
Bookmarks