PDA

Ver la Versión Completa : Ayuda con StringGrid


BuenaOnda
08-05-2007, 07:38:19
Hola amigos:

Alguien me podria decir como pintar una celda de un StringGrid, lo que pasa es que necesito pintar con un "DobleClick", la celda seleccionada, de color rojo y con un "click" de colo azul. muchas gracias.:D

Neftali [Germán.Estévez]
08-05-2007, 11:15:18
¿Debe haber más de una celda pintada? ¿Puede haber varias o siempre la última que pulses?

Lo digo porque pintar no es difícil, pero dependiendo cuantas quieras pintar deberás almacenar por detrás una estructura que te guarde de qué color está pintada cada una. Si sólo necesitas la última es más sencillo.

droguerman
08-05-2007, 14:49:04
código (no probado)

TForma = class(TForm)
...
private
lista : TStringList;
...
end;
procedure TForma.TuGridDblClick(Sender: TObject);
var
indice : integer;
begin
inherited;
indice := lista.add(format('%d-%d',[TuGrid.Col, TuGrid.Row]);
//0 = Azul 1=Rojo
lista.objects := Pointer(1);
end;

procedure TForma.TuGridClick(Sender: TObject);
var
indice : integer;
begin
inherited;
indice := lista.add(format('%d-%d',[TuGrid.Col, TuGrid.Row]);
//0 = Azul 1=Rojo
lista.objects := Pointer(0);
end;

procedure TfmCompra.fraGridxgGridDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
texto : string;
indice : integer;
colorCelda : TColor;
begin
inherited;
texto := IntToStr(ACol)+'-'IntToStr(ARow);
indice := lista.indexOf(texto);
if indice>=0 then
begin
if Integer(lista.objects[indice])=0 then
colorCelda := clBlue
else if Integer(lista.objects[indice])=1 then
colorCelda := clRed;
end
else
colorCelda := TuGrid.color;

TuGrid.Canvas.Brush.color := colorCelda;
TuGrid.Canvas.fillRect(Rect);
end;


saludos

BuenaOnda
08-05-2007, 22:20:10
sigo sin solucionar el problemita..:D , lo que pasa es que necesito pintar algunas celdas de colo rojo y otras de color azul, al realizar un click o un dobleclick, respectivamente, trabajo en delphi 7, osea las celdas en un comienzo estan sin pintar, pero luego los usuario puede pintar las celdas, para indicar el estado de las maquinarias, en este caso, las celdas pintadas de azul indican que la maquina esta disponible y las celdas de colo rojo indican lo contrario..muchas gracias por su valiosa ayuda.

BuenaOnda
09-05-2007, 10:09:04
hola amigos.. disculpen la insistencia porfabor, pero alguien me podria decir como pintar algunas celdas de color en el stringgrid, o algun componente que realice esto, no necesito pintar las columnas o las filas sino las celdas..muchas gracias y disculpen la insistencia.:confused:

roman
09-05-2007, 10:22:18
Pegué el mensaje que abriste en otro hilo aquí; no tiene caso que abras nuevos hilos para lo mismo, sobre todo porque ya te han contestado aquí. El compañero droguerman te ha puesto ya un código para comenzar, si tienes dudas pregunta sobre eso pero no ignores la ayuda que te han prestado.

// Saludos

BuenaOnda
09-05-2007, 10:32:09
Muy bien te encuentro toda la razon, jamas fue esa mi intención, solo es que necesito realizar esto lo antes posible, pero no volvera a suceder..:o ... mil disculpas..

BuenaOnda
10-05-2007, 08:05:19
Muchas gracias amigos por su valiosa ayuda, ya resolvi mi problemilla..:D .
solo bastaba con acceder al evento DrawCell del StringGrid...
aqui esta la solucion...


if (acol = 1) and (arow = 1) then
begin
StringGrid1.Canvas.Brush.Color := clred;
StringGrid1.Canvas.FillRect(Rect);
end;


espero que les sirva...