Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Colorear lineas en StringGrid (https://www.clubdelphi.com/foros/showthread.php?t=4672)

gario 23-10-2003 15:14:55

Colorear lineas en StringGrid
 
Hola a tod@s:

Ya he visto varios mensajes sobre como colorear un string grid, pero no acabo de consguir lo que quiero.

Tengo un string grid y quiero que cuando pulse un boton del formulario, se coloreen ciertas lineas del stringgrid.
No puedo usar un dbgrid por las condiciones del programa.

Ademas de eso me vendria bien un codigo para que al hacer doble clik sobre una celda poder recuperar en el evento ondouble click la celda sobre la que se hizo... he probado con mouse to cell y mouse coord pero no acabo de tener un metodo fiable.

Viet 23-10-2003 16:11:17

Buenas

Aqui tienes como colorear una celda determinada.... no obstante en el mismo metodo, puedes colorear toda una fila si dentro del evento haces un control sobre la columna que decide tu caso.

por ejemplo

Código:

If  Grid.cells[5, row]=1 then
                ....cambio el color de la celda...

aqui si la celda de la columna 6 (5+1) es 1 entonces pintara la celda... esto lo va a hacer con todas las celdas de la fila


con respecto al doble click no te sirve OnDblClick ???

Suerte ;)

gario 23-10-2003 22:19:15

ya.. lo que queria es el codigo para colorear la celda... es que no que que canvas hay por ahi que me despista mogollon..

Efectivamente me vale el doble clik pero en ese evento necesito recuperar la celda sobre la que se hizo el doble click para editarla... iva a provar con la propiedad selected... pero no se si al hacer doble click sobre una celda esa queda editada.

Muchas gracias

ContraVeneno 30-05-2005 18:19:38

colorear líneas en string grid
 
se puede colorear una fila en un stringrid? :confused:
todavía sigo buscando la respuesta a esta pregunta...
si alguien la tiene se los agradecería mucho

para obtener el valor de una celda

var Valor: String;
....

//valor de la celda seleccionada actualmente en el string grid
Valor:=stringrid.cells[stringrid.col,stringrid.row];
......

Encontre lo que buscaba, coloco la respuesta por si existe algún interesado:
Código Delphi [-]
 
procedure TFrmInicial.stgActRecomDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
inherited;
With Sender as TStringGrid do begin
try
    if StrToFloat(cells[ACol, ARow]) >= 95 then
        begin
         //for BackGround Color
         Canvas.Brush.Color := clRed;
         Canvas.FillRect(Rect);
         //for Font.Color
         Canvas.Font.Color := clWhite;
         Canvas.TextRect( Rect, Rect.Left+2, Rect.Top+2, Cells[acol, arow]);
        end
        else if (StrToFloat(cells[ACol, ARow]) >= 80) then
        begin
         //for BackGround Color
         Canvas.Brush.Color := clYellow;
         Canvas.FillRect(Rect);
         //for Font.Color
         Canvas.Font.Color := clBlack;
         Canvas.TextRect( Rect, Rect.Left+2, Rect.Top+2, Cells[acol, arow]);
        end 
    except on e:exception do exit; end;
end; //Fin with
end;

Este código funciono perfecto con lo que yo necesito, espero que al menos los coloque en el camino correcto si algún día lo requieren...


La franja horaria es GMT +2. Ahora son las 04:42:28.

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