Hi also ich habe per folgendem Code meine Stringgridfelder weiß gemacht, und dann den Text mittig gesetzt.
Delphi-Quellcode:
dy := (Rect.Bottom-Rect.Top-StringGrid1.Canvas.TextHeight(StringGrid1.Cells[ACol, ARow])) div 2;
dx := (Rect.Right-Rect.Left-StringGrid1.Canvas.TextWidth(StringGrid1.Cells[ACol, ARow])) div 2;
if (acol = 0) or (arow = 0) then begin
StringGrid1.Canvas.Brush.Color := clBtnFace;
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextOut(Rect.Left+dx, Rect.Top+dy, StringGrid1.Cells[ACol, ARow]);
end;
if (acol = 1) or (acol = 4) or (acol = 5) then begin
if (arow >0) then begin
StringGrid1.Canvas.Brush.Color := clWindow;
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.TextOut(Rect.Left+dx, Rect.Top+dy, StringGrid1.Cells[ACol, ARow]);
end;
end;
Wenn ich nun ein Feld markiere und dann das Grid den Focus verliert "verschwindet" der Inhalt.
Normalerweise wird das Feld ja blau und die Schrift weiß da ich die Felder aber im onDraw selbst bepinselt habe scheint nur die Schrift weiß (also unsichtbar) zu werden ... (nicht alle Felder sind weis hab auch rote/grüne aber da könnt ich damit leben)
hat jemand ne Ahnung, wie ich das umgehen kann
Wenn ich den Inhalt auch ohne das OnDraw-Bepinseln Zentrieren könnte könnte ich bei den weißen Feldern auch darauf verzichten und hätte dann das Problem nicht mehr
aber wie ???
龍 Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.