Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Ver texto en una stringrid coloreada (https://www.clubdelphi.com/foros/showthread.php?t=41946)

richi 29-03-2007 19:37:43

Ver texto en una stringrid coloreada
 
El caso es que tengo un procedimiento que llamo desde destintas zonas del programa para colorear la stringgrid; el problema viene cuando tengo texto introducido en donde e coloreado no me lo muestra. El procedimiento que utilizo es el siguiente:
Código Delphi [-]
procedure form.pintarStringGrid(color : TColor; fila,desde,hasta : integer);
var
  i : integer;
begin
  stringGridPEriodo.Enabled := false;
  StringGridPeriodo.Canvas.brush.Color := color;

  for i:= desde to hasta do
  begin
    StringGridPeriodo.Canvas.FillRect(StringGridPeriodo.CellRect(i,fila));
  end;
  stringGridPEriodo.Enabled := true;
end;
Al procedimiento le paso el color la fila y en esa fila desde donde hasta donde pintar.
Gracias.

Bicho 29-03-2007 20:06:28

Hola,

no se que tal eso de hacer en un procedimiento aparte, pero yo creo que lo suyo para éste caso, sería poner ese codigo en el evento OnDrawCell del StringGrid.
O quizá podrías probar a hacer un repintado al final del procedimiento que has creado para forzar que se refresque el StringGrid.
Son dos alternativas que quizá te puedan servir.

Saludos

droguerman 30-03-2007 02:06:19

Cita:

Empezado por richi
El caso es que tengo un procedimiento que llamo desde destintas zonas del programa para colorear la stringgrid; el problema viene cuando tengo texto introducido en donde e coloreado no me lo muestra. El procedimiento que utilizo es el siguiente:
Código Delphi [-]procedure form.pintarStringGrid(color : TColor; fila,desde,hasta : integer); var i : integer; begin stringGridPEriodo.Enabled := false; StringGridPeriodo.Canvas.brush.Color := color; for i:= desde to hasta do begin StringGridPeriodo.Canvas.FillRect(StringGridPeriodo.CellRect(i,fila)); end; stringGridPEriodo.Enabled := true; end;

Al procedimiento le paso el color la fila y en esa fila desde donde hasta donde pintar.
Gracias.

haces fillRect y pintas todo de nuevo (incluido el texto) te falta añadir un TextRect o un DrawText para escribir otra vez el texto de la celda

richi 02-04-2007 12:20:05

Gracias por responder a los dos. Lo solocione con la respuesta de droguerman con un TextRect.


La franja horaria es GMT +2. Ahora son las 22:32:25.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi