Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   colores diferentes dentro de dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=46626)

zugazua2001 05-08-2007 02:26:06

colores diferentes dentro de dbgrid
 
Hola amigos del foro, estoy armando una aplicacion para el manejo de reservas y ocupaciones de un hotel, utilizo una grilla en donde las filas van a ser los dias TDates y las columnas van a ser las habitaciones. Dos cuestiones tengo:
La grilla posee un primer campo del tipo TDate y los otros 20 campos del tipo A(100) donde va R u O en caso de estar o no reservada, dos espacios en blanco y el nombre del cliente.
Primero: si se da que el primer caracter es una "O" entonces me gustaria pintar la informacion de la celda con el color azul en caso de que sea "R" esa celda con el color verde.
Segundo: se pueden ver las filas como columnas y viceversa??? para poder recorrer la grilla horizontalmente y no verticalmente?? Uso delphi 6 y paradox.

ejm:

Fecha Habit 1 Habit 2 Habit 3 Habit 4 Habit 5
01/01/07 O / Perez R / Diaz O / Mendez
02/01/07 O / Perez R / Diaz O / Gonzales
.......
......
......

Muchisimas gracias por todo.

eduarcol 05-08-2007 02:32:32

Con respecto a los colores prueba esto

Cita:

procedure TBusquedas.grBusquedaDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if Loquequieras = 'O' then
grBusqueda.canvas.brush.color := El color que quieras;
grBusqueda.DefaultDrawColumnCell(rect,DataCol,Column,State)

end;

zugazua2001 18-08-2007 23:50:03

No me funciona, color de celda distinto
 
Hola amigos del foro, yo necesito cambiar segun el valor de la celda de una grilla que puede ser O u R el color de la fuente, y no puedo hacerlo me cambia todo. Les agradeceria me orientaran.
Muchisimas gracias por todo!

JULIPO 19-08-2007 02:00:34

espero te sirva esto
 
Creo que esto te puede servir tienes que leer el dato que t interesa y asignarle el color que quieras.

Código Delphi [-]
 procedure tdata.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
inherited;
if query1.Field[No].AsString[1] ='R' then
begin
DBGrid1.Canvas.Font.Color:=clBLACK;
dbgrid1.Canvas.Brush.Color:=clblue;
end
ELSE
BEGIN
if query1.Field[No].AsString[1] ='O' then
BEGIN
DBGRID1.Canvas.Font.Color:=CLWHITE;
DBGRID1.Canvas.Brush.Color:=CLgreen
END
END;
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Column, State);
end;








tienes que hacer esto con cada columna No es el numero de field en tu tabla de paradox

Espero te sirva

egostar 19-08-2007 02:19:40

Otra forma de como hacerlo a como te lo han dicho en las otras respuestas que te han dado.

Código Delphi [-]
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  with Sender as TStringGrid do begin
    If StringGrid1.Cells[ACol,ARow] <> '' then begin
       Case StringGrid1.Cells[ACol,ARow][PosiciondelaLetra] of
          'O' : begin
                  Canvas.Brush.Color := clNavy;
                end;
          'R' : begin
                  Canvas.Brush.Color := clGreen;
                end;
       end;
    end;
  end;
end;

Salud OS

zugazua2001 21-08-2007 13:37:37

Muchas gracias amigos del foro
 
Muchas gracias amigos voy a probar ambas respuestas.

zugazua2001 22-08-2007 15:59:16

No entiendo que es el query1 que me pusistes!!
 
Amigo del foro no comprendo que es el query1 que me pusistes
Muchisimas gracias por todo

Cita:

Empezado por JULIPO (Mensaje 224465)
Creo que esto te puede servir tienes que leer el dato que t interesa y asignarle el color que quieras.


Código Delphi [-]
procedure tdata.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
inherited;
if query1.Field[No].AsString[1] ='R' then
begin
DBGrid1.Canvas.Font.Color:=clBLACK;
dbgrid1.Canvas.Brush.Color:=clblue;
end
ELSE
BEGIN
if query1.Field[No].AsString[1] ='O' then
BEGIN
DBGRID1.Canvas.Font.Color:=CLWHITE;
DBGRID1.Canvas.Brush.Color:=CLgreen
END
END;
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Column, State);
end;










tienes que hacer esto con cada columna No es el numero de field en tu tabla de paradox

Espero te sirva


JULIPO 22-08-2007 16:10:12

Es un componente de Bases de datos
 
Es un componente con el que puedes leer las tablas de bases de datos incluyendo paradox puede ser un query o table dependiendo de como lonecesites utilizas alguno, si no utilizas este tipo de componente lo cambias por el componente que tu utilizas para leer los datos.
;)
Espero Sea Claro

zugazua2001 23-08-2007 13:14:58

No puedo leer los datos
 
Amigo disculpa, pero no puedo leer los datos donde vos pusistes query1.
Como puedo hacer para leerlo?? Muchas gracias!!! Tengo el mismo problema con la solucion en que aparece

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
with Sender as TStringGrid do begin
If StringGrid1.Cells[ACol,ARow] <> '' then begin
Case StringGrid1.Cells[ACol,ARow][PosiciondelaLetra] of
'O' : begin
Canvas.Brush.Color := clNavy;
end;
'R' : begin
Canvas.Brush.Color := clGreen;
end;
end;
end;
end;

Ese TStringGrid1 que seria??? cuando compilo me sale el msj de error.
Bueno disculpen tantas preguntas.
Gracias nuevamente por todo.

zugazua2001 23-08-2007 17:20:30

No entiendo que es el query1
 
No entiendo que es el query1
Muchas gracias !!

zugazua2001 28-08-2007 12:54:46

No entiendo que es el query1
 
No entiendo que es el query1.

karlaoax 28-08-2007 15:33:22

Yo lo he hecho con una tabla cualquiera, y funciona a la perfeccion.
Código Delphi [-]
if table1.Field[No].AsString[1] ='rojo' then
begin
DBGrid1.Canvas.Font.Color:=clBLACK;
dbgrid1.Canvas.Brush.Color:=clblue;
end

Aunque ahora me intriga, intentarlo validando con una fecha anterior contra una actual, ejemplo: 11 de Agosto 2007 vs 28 de Agosto, hacer una operacion de resta entre estas 2, y colorear aquellas que sean mayores a 15, interesante, voy a hacer una prueba.

eduarcol 28-08-2007 18:00:08

el query1 es el origen de los datos, como recuperas los datos de la tabla????

zugazua2001 04-09-2007 18:56:11

Color a celdas de DBGrid
 
Hola amigos del foro, sigo con problemas para colorear segun el valor de la celda la misma de un color un otro.
Las soluciones que me han dado, no me funcionan. Yo utilizo un DBGrid, en la primer columna poseo por cada fila las fechas correlativas y en cada columna restante tengo las cabañas, me gustaria poder colorear con un color u otro cada celda segun el valor de la misma.
Les agradeceria me orientaran mas porque no puedo lograrlo. En algunas soluciones me han puesto Query para levantar los datos en otros TStringGrid, realmente no me ha funcionado nada.
Les agradeceria me orientaran.
Muchisimas gracias por todo y disculpen las molestias.

eduarcol 04-09-2007 19:12:57

que tal si colocas el codigo que estas utilizando a ver donde puede estar el error????

zugazua2001 05-09-2007 01:21:31

Aca te paso el codigo
 
Código Delphi [-]
procedure tdata.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
inherited;
if query1.Field[No].AsString[1] ='R' then
begin
DBGrid1.Canvas.Font.Color:=clBLACK;
dbgrid1.Canvas.Brush.Color:=clblue;
end
ELSE
BEGIN
if query1.Field[No].AsString[1] ='O' then
BEGIN
DBGRID1.Canvas.Font.Color:=CLWHITE;
DBGRID1.Canvas.Brush.Color:=CLgreen
END
END;
DBGrid1.DefaultDrawColumnCell
(Rect, DataCol, Column, State);
end;


Me tira error en el query1, el campo No no se que es.
Supongo que esos son los dos puntos que estan mal.
Muchas gracias por todo.

karlaoax 05-09-2007 15:34:30

Cita:

Empezado por zugazua2001 (Mensaje 228411)
Me tira error en el query1, el campo No no se que es.
Supongo que esos son los dos puntos que estan mal.
Muchas gracias por todo.

Mira
Field[No] = Nombre de tu campo
AsString[1] = Orden del campo, normalmente se empieza con un 0 cero

zugazua2001 05-09-2007 17:48:16

me tira error ya en el tquery1
 
Desde el query1 es que me tira error.
muchas gracias.

Cita:

Empezado por karlaoax (Mensaje 228532)
Mira
Field[No] = Nombre de tu campo
AsString[1] = Orden del campo, normalmente se empieza con un 0 cero


eduarcol 05-09-2007 17:52:57

No es el numero del campo en el conjunto de Fields, desde el 0 hasta el n-1, se supone debes sustituirlo por el valor correspondient

zugazua2001 07-09-2007 17:52:56

No entiendo que es el query1
 
El query no me lo reconoce. no entiendo porque el campo No, si yo quiero que me recorra todas las columnas.
Sinceramente no comprendo.
Muchas gracias

Cita:

Empezado por eduarcol (Mensaje 228575)
No es el numero del campo en el conjunto de Fields, desde el 0 hasta el n-1, se supone debes sustituirlo por el valor correspondient



La franja horaria es GMT +2. Ahora son las 21:01:50.

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