Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Pintar un Grid ....me falta algo (https://www.clubdelphi.com/foros/showthread.php?t=38331)

JULIOCTORRESG 11-12-2006 22:39:43

Pintar un Grid ....me falta algo
 
tengo un dbgrid y en el segun el valor de campo cambio el color de la fuente
a rojo o negro segun sea el caso
Código Delphi [-]
   Canvas.FillRect(Rect);

     // en base al campo decido si centrar o no el  texto
     largo:=length(Column.Field.AsString)*2;    //aca defino el largo del campo para luego restarlo y asi centrar el texto
 
        if (column.Field.fieldname='Status')and (column.field.value ='Vencido') then Canvas.Font.Color:=clred
                                                                          else canvas.font.Color:=clblack;

       if ((column.Field.fieldname='Status')or(column.Field.fieldname='Dias')) then Canvas.TextOut((Rect.Left + 20)-largo, Rect.Top + 2, Column.Field.AsString)
                                                                                else Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, Column.Field.AsString);
el problema es que cuando selecciono una fila el color es el predeterminado por windows en mi caso azul oscuro y con letra negra no se ve nada como coloco la fila seleccionada en letra blanca o vistosa....

gracias....

roman 11-12-2006 22:46:40

Prueba poner algo como

Código Delphi [-]
if State*[gdSelected, gdFocused] = [] then
  Canvas.Font.Color := clWhite;

Es decir, con esa condición detectas si la celda en ese momento está seleccionada, y de ser así, pone el color blanco en lugar del rojo.

// Saludos

vtdeleon 11-12-2006 23:38:36

Saludos

No enteindo el asterisco allí, escapa de mis conocimientos. Podrías explicarmelo? román:confused:

roman 11-12-2006 23:42:30

El asterisco es la intersección de conjuntos y- ahora que lo veo - está mal :p, debe ser:

Código Delphi [-]
if State*[gdSelected, gdFocused] <> [] then

es decir, si la intersección de State con [gdSelected, gdFocused] no es vacía, o sea, si hay algo en la intersección de State y [gdSelected, gdFocused].

Es una forma de abreviar:

Código Delphi [-]
if (gdSelected in State) or (gdFocused in State) then

// Saludos

vtdeleon 11-12-2006 23:48:29

Gracias por la explicación.

Saludos

JULIOCTORRESG 12-12-2006 16:24:33

bien muchas gracias ....
 
ahora se presentan cosas nuevas pero con esas si puedo solo ....al menos eso creo.....de nuevo gracias ...

Lepe 13-12-2006 12:25:41

¿y cuando salió el asterisco? eso ha salido nuevo hace 1 día según veo.

Juer roman, estas "al día" :D

saludos

roman 13-12-2006 16:24:23

Ja, ja. Pues simplemente un dia lo necesité y busqué set operators en la ayuda de Delphi. Yo imagino que existen desde Wirth, pues el tipo set ya estaba entonces, creo.

// Saludos


La franja horaria es GMT +2. Ahora son las 20:37:43.

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