Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   problemas con el cuadro Color.Dialog (https://www.clubdelphi.com/foros/showthread.php?t=20517)

quake2420 18-04-2005 13:08:12

problemas con el cuadro Color.Dialog
 
Hola amigos, a ver si esta duda que tengo se puede resolver...

Estoy intentando sacar el valor verdadero de un color dialog para luego insertar dicho valor en una hoja de estilo css.
Mi problema es con los colores herederos del rojo (marron ,naranja...) y con los azules(azul claro, magenta...).
Me explico,lo que hago es Usar la funcion:
l:=ColorToRGB(colordialog1.Color);
despues uso la funcion:
color:=IntToHex(l,6);
le añado el simbolo '#' para luego al ejecutar la css se pueda mostrar el color que hemos elegido pero cual es mi sorpresa que si eligo el color naranja y hago los pasos antes mencionado me muestra un color azul y viceversa me ocurre lo mismo.
A ver si sabeis por que puede ser
Gracias por adelantado.

igest2000 22-04-2005 15:44:25

Ese problema me sucedio a mi también. Y te explico, cuadno aplicas esas funciones te da los séis codigos hezadecimales para representar los colores, pero invertidos. Ahora mismo no me acuerdo exactamente pero en lugar de RGB en css tendrías que poner BGR. Yo solucione el problema creando una funcion que invertia los dos códigos hexadecimales que te comento que estaban cambiados, aunque ahora mismo no tengo aqui a mano el codigo.

Espero te sirva esto.

snowlis 20-05-2007 14:19:03

Yo tambien tengo un problema parecido al colorear las filas de un dbgrid, no hay manera de que me muestre el color que yo quiero. Por ejemplo le pongo este color --> #FFFF00 y me saca un azul chillon muy feo.
Alguien sabe como funciona esto de los colores el delphi ?

Los códigos de los colores los saco de aquí, nose si servirá --> http://www.webtaller.com/utilidades/...er/colores.php

Saludos ;)

seoane 20-05-2007 14:27:19

¿Donde utilizas el valor #FFFF00? ¿Puedes poner la linea de código donde lo usas?

snowlis 20-05-2007 14:57:23

Lo uso aquí :

Código Delphi [-]
procedure TForm13.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
 clPaleGreen = Tcolor($CCFFCC);
 clPaleRed = TColor($CCCCFF);
 clPaleYellow= TColor($FFFF00);
begin
if column.Field.DataSet.FieldByName('HECHO').AsString='NO'
 then
  if (gdFocused in State)
   then dbgrid1.Canvas.brush.Color:=clblack
    else
     dbgrid1.Canvas.brush.Color:=clPalered;
dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);

if column.Field.DataSet.FieldByName('HECHO').AsString='SI'
then
  if (gdFocused in State)
   then dbgrid1.Canvas.brush.Color:=clblack
    else
     dbgrid1.Canvas.brush.Color:=clPaleGreen;
dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);

if column.Field.DataSet.FieldByName('PRIORIDAD').AsString='URGENTE'
then
  if (gdFocused in State)
   then dbgrid1.Canvas.brush.Color:=clblack
    else
     dbgrid1.Canvas.brush.Color:=clPaleYellow;
dbgrid1.DefaultDrawColumnCell(rect,datacol,column,state);

end;

seoane 20-05-2007 15:52:43

Bien, el problema esta aqui:
Código Delphi [-]
 clPaleGreen = Tcolor($CCFFCC);
 clPaleRed = TColor($CCCCFF);
 clPaleYellow= TColor($FFFF00);

En delphi, si haces ese tipo de asignación debes intercambiar el primer y ultimo byte para obtener el resultado que tu esperas. Es decir:
Código Delphi [-]
 clPaleGreen = Tcolor($CCFFCC);
 clPaleRed = TColor($FFCCCC);
 clPaleYellow= TColor($00FFFF);

snowlis 20-05-2007 18:35:53

Gracias seoane, así si que funciona perfectamente.
Hay que ver que cosas más raras pasan cuando lo normal sería mantener el mismo código hexadecimal del color en delphi y que funcionara de la misma manera sin tener que cambiar nada.


La franja horaria es GMT +2. Ahora son las 06:09:51.

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