Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Efecto visual DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=53756)

Minio 28-02-2008 20:42:14

Efecto visual DBGrid
 
Buenas tardes, como no sabía donde colocar mi problema pues aquí lo dejo.

Bueno el tema es que en un DBGrid se produce un efecto visual muy raro, y no he conseguido averiguar por que me pasa. Este efecto solo pasa cuando inserto la primera línea en el DbGrid, y se percibe de manera que el color de la fuente es negro y además en negrita y esta adquiere un color gris como si el DBGrid estuviera des habilitado. Esto es lo primero que yo comprobé, pero mi sorpresa fue que al desplegar la barra de inicio de Windows y quitarse, justo el texto que tapaba del DBGrid adquiría el color propio y el resto queda como he explicado. Lo mismo ocurre al arrastrar una ventana por encima.

Esto es rarisimo, solo me lo hace la primera línea, las siguientes no tiene el mismo problema. Ni siquiera cuando abro un nuevo albarán y cargo los datos, todo perfecto.

Bueno si alguien sabe algo o me puede ayudar, yo encantado...

Gracias a todos.

Neftali [Germán.Estévez] 29-02-2008 11:59:06

No acabo de entender muy bien, pero por lo que explicas debe ser problema del pintado. ¿Está usando el Grid estandar? ¿Has modificado rutinas de pintado? ¿Puedes colocar una imagen?

Minio 29-02-2008 12:21:24

Este código es el que tengo puesto en el evento OnDrawColumCell del DBGrid.

Ahora te paso una imagen para que te hagas una idea

Código Delphi [-]
procedure TFmAlbCli.DBGDatosDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
  DBGDatos.Columns[0].Font.Color := clBlue;
  with (Sender as TDBGrid) do
    begin
      if DMGestion.TDetAlb.RecNo mod 2 = 0 then
        begin
          Canvas.Brush.Color := clYellow;
          if DBCPOnline.Checked = True then
            begin
              Columns[5].Font.Size := 6;
              Columns[6].Font.Size := 6;
            end
            //Canvas.Font.Size := 6
          else
            begin
              Columns[5].Font.Size := 8;
              Columns[6].Font.Size := 8;
            end
            //Canvas.Font.Size := 8;
        end
      else
        begin
          Canvas.Brush.Color := clWhite;
          if DBCPOnline.Checked = True then
            begin
              Columns[5].Font.Size := 6;
              Columns[6].Font.Size := 6;
            end
            //Canvas.Font.Size := 6
          else
            begin
              Columns[5].Font.Size := 8;
              Columns[6].Font.Size := 8;
            //Canvas.Font.Size := 8;
            end
        end;
        DefaultDrawColumnCell(Rect, DataCol, Column, State);
    end;
  if (gdSelected in State) then
      begin
        DBGDatos.Canvas.Brush.Color := clBlue;
        DBGDatos.Canvas.Font.Style := [fsBold];
        DBGDatos.Canvas.Font.Color := clWhite;
        DBGDatos.DefaultDrawColumnCell(Rect, Datacol, Column, State);
      end;
end;

Minio 29-02-2008 12:59:14

Bueno adjunto te mando 3 imagenes en jpg con cada uno de los estados. Las he tenido que reducir para poder subirlas, no se si lo podrás apreciar bien.

En el primer estado verás lo que pasa cuando inserto el primer registro.

En el segundo lo que he hecho es desplegar la barra de inicio de windows.

Y en el tercero como puedes ver la barra de inicio ha vuelto a su estado normal y lo que se percibe es que la parte que tapaba la barra de menú ha cambiado al color que debe tener. Esto mismo ocurre si pincho sobre la celda, que adquiere el color negro normal, pero solo la celda que he pinchado con el puntero. Al igual sin arrastro una ventana por encima hace lo mismo.

Cuando cargo mas líneas ya no pasa nada raro todo funciona normal.

Bueno he aqui el dilema....

Gracias tio, por que no se por donde cogerlo.[IMG]file:///C:/DOCUME%7E1/Minio/CONFIG%7E1/Temp/moz-screenshot-2.jpg[/IMG]

Neftali [Germán.Estévez] 29-02-2008 13:56:06

Debes subir las imágenes a algun servidor público, para que podamos verlas. http://imageshack.us/ por ejemplo, y luego utilizas ese link.

Minio 29-02-2008 18:20:29

Estado 1


Estado 2


Estado 3

Minio 29-02-2008 18:22:55

No se si lo veras bien.

Lo siento pero estoy trabajando, y no estoy siempre delante del equipo, no te puedo responder lo rápido que quisiera, de todas formas muchas gracias.

Neftali [Germán.Estévez] 02-03-2008 13:35:51

La verdad es que no se ven muy bien.:(:(

Minio 03-03-2008 09:41:41

Buenos días comenzamos la semana.

Aquí te dejo las imágenes comprimidas a ver si puedes verlas.

http://www.imageshack.us/?pickup=80112309753949

Neftali, muchísimas gracias por tu insistencia.

Minio 03-03-2008 09:44:26

haammm el código que pide es el siguiente: 80112309753949

gracias...

Neftali [Germán.Estévez] 03-03-2008 11:31:18

Nada, que no puedo acceder a las imágenes. Me dice algo así como:
"File upload seems to be abandoned by sender"

:o:o:o

PeterPunk 03-03-2008 11:37:56

Cita:

Empezado por Minio (Mensaje 269727)
Estado 1


Estado 2


Estado 3

Con quitar el .th (de thumbnails) ya las puedes ver a tamaño real:
http://img402.imageshack.us/img402/408/imagen1vy1.jpg

Estado 2
http://img229.imageshack.us/img229/4342/imagen2hs5.jpg

Estado 3
http://img402.imageshack.us/img402/238/imagen3kx4.jpg

Neftali [Germán.Estévez] 03-03-2008 12:01:01

Cita:

Empezado por PeterPunk (Mensaje 270240)
Con quitar el .th (de thumbnails) ya las puedes ver a tamaño real...

¡¡Qué grande!! PeterPunk.
La verdad es que no me había fijado...

Delfino 03-03-2008 12:16:40

No sera por el theme q tienes puesto en el windows? prueba de poner el theme estandar a ver si es por eso..

Neftali [Germán.Estévez] 03-03-2008 12:20:41

He hecho las pruebas con los datos que has pasado y no tengo ningun problema. Parece que el código funciona perfectamente.
No acabo de ver claro donde asignas el color Gris a las letras (¿en diseño? ¿En otro lugar del código?).

http://img254.imageshack.us/img254/3...agen367jv6.png

http://img444.imageshack.us/img444/3...agen369aj2.png

http://img208.imageshack.us/img208/5...agen370ji2.png

Minio 03-03-2008 12:22:02

Deuuuu que desesperación, no se que hacer.

Tienes algún mail donde poder enviártelo si no te importa.

Minio 03-03-2008 12:24:59

Si en realidad el color gris yo no se lo asigno en ningún sitio, el unico color es para la celda que es o amarillo o blanco, según si es linea par o impar.

Minio 03-03-2008 12:28:54

Probaré lo del tema a ver que me dice.

Neftali [Germán.Estévez] 03-03-2008 12:33:54

He vuelto a leer tu mensaje.
¿Comentas que sólo te lo hace con la primera línea? Si tienes varias ¿sólo lo hace con la primera o con la que está seleccionada?

Ves eliminando temporalmente partes de ese código para detectar donde está el problema.

Comenta la parte del gdSelected, luego la parte del Yellow,...

A ver si detectas qué parte del código es la que da el problema. Tal vez llegues a comentarlo todo y el porblema esté en otro sitio.

¿Tienes más eventos programados sobre el Grid?
¿Tienes mensajes capturados sobre el form? Tipo WM_PAINT o similares que puedan afectar al repintado de los componentes.

Minio 03-03-2008 12:41:28

Lo del tema no resulta pasa lo mismo. Bueno tengo que salir a la tarde volveré a ver como va.

Minio 03-03-2008 12:46:24

Voy a revisarlo todo, te pasare de la forma mas clara todo lo que he ido haciendo, a ver si con tu ayuda lo consigo.

Solo me lo hace en la primera línea que inserto en el albarán, si inserto otra el color de la fuente se vuelve al negro predefinido (lo normal), si ese mismo albarán lo abro más tarde no hace nada raro, es simplemente cuando inserto la primera línea.

Chris 03-03-2008 16:11:21

Hola Minio, también a todos los del club.

Minio, veo en tu código que haces varías condicionales con if ... then. Podría apostar a que puede ser que el primer registro no cumple con ninguna de las condiciones evaluadas y por consecuencia el registro se pinte en algun color predeterminado en alguna parte..

Intenta insertar forzar la letra a color negro en la primera línea de código.

Código Delphi [-]
Grid.Canvas.Font.Color := clBlack;
..... // continuación del código que tienes.

Saludos.

Minio 03-03-2008 17:22:39

Acabo de volver de un curro, voy a probar lo que me comentáis.

Minio 03-03-2008 17:41:56

No me ha funcionado sigue pasando los mismo, voy ver como dice Neftali, ir probando partes de código a ver donde falla.

Chris 03-03-2008 18:22:53

Intenta bloquear el canvas.

Código Delphi [-]
LockCanvas;
Creo que así se llama el procedimiento.

Saludos.

Minio 03-03-2008 18:36:40

Esto es lo que he probado y nada, no hay manera.

Código Delphi [-]
DBGDatos.Canvas.Lock;

Minio 03-03-2008 18:46:03

Deeeeeuuuu, conseguido..., gracias a los dos por fin. D&W acertaste con tu primera propuesta. Antes lo probá al final del evento y ahora lo puse al inicio y conseguido, ya no hace ese efecto.

Código Delphi [-]
DBGDatos.Canvas.Font.Color := clBlack;

Muchiiiiiiiiissssimas gracias, sois unos cracks

Chris 03-03-2008 19:07:52

Cita:

Empezado por Minio (Mensaje 270317)
Acabo de volver de un curro, voy a probar lo que me comentáis.

Ya decía yo, me parecía raro que no te haya funcionado.
Cita:

Empezado por Minio (Mensaje 270344)
Muchiiiiiiiiissssimas gracias, sois unos cracks

Nos ofendes si nos dices crackers, será hackers. :cool:

Minio 03-03-2008 19:18:44

Jajajajaj, no tio , no me referia a hackers ni cracker, sino que sois unos "cracks" (unas maquinas, unos fenómenos, muy buenos, etc...). Es diferente.

Bueno de nuevo muchas gracias.

egostar 03-03-2008 19:26:54

Cita:

Empezado por Minio (Mensaje 270353)
Jajajajaj, no tio , no me referia a hackers ni cracker, sino que sois unos "cracks" (unas maquinas, unos fenómenos, muy buenos, etc...). Es diferente.

Bueno de nuevo muchas gracias.

Ah pues que bien que lo especificas porque ya estaba pensando en esto :eek::cool::D:D:D

Salud OS


La franja horaria es GMT +2. Ahora son las 08:15:09.

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