Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   incorporar color directamente por codigo (https://www.clubdelphi.com/foros/showthread.php?t=94316)

viverosjosem 25-11-2019 05:05:25

incorporar color directamente por codigo
 
Hola amigos.
Tengo una aplicacion que toma datos de un archivo de texto. En este archivo hay una columna de colores en formato integer. La aplicacion necesita tomar la columna de colores (Quinta columna), y pintar paneles, segun corresponda.

El archivo es similar a este:
Cita:

1;1;5;6900;16711935;0
1;2;4;5900;65535;0
1;3;3;3900;65535;0
1;4;16;6800;65280;0
1;5;23;5200;16776960;0
1;6;2;3500;-16777201;0
1;7;1;3400;16711935;0
1;8;9;15300;0;0

Aqui va un segmento de codigo, donde explico las lineas importantes para que se entienda el problema.
** Asumiremos que estamos posicionado sobre la primera linea del archivo de texto.
Código Delphi [-]
var 
...
...
   sStrToHexa := String;
   iTColor       : TColor;

...
...
...
   AssignFile(f, Archivo );
   Reset(f);
   while not SeekEof(f) do
   begin
      if SeekEoln(f) then
        Readln;  

      Read( f, j );
      j := Trim( j );

      sCateg   := GetParam(j, ';');
      sPanel   := GetParam(j, ';');
      sCodigo  := GetParam(j, ';');
      sPrecio  := GetParam(j, ';');
      sColorBtn:= GetParam(j, ';');  //===>  Esta linea toma el color de la linea del archivo (columna 5). Por ejemplo: 16711935, Color Rosado.

      sStrToHexa := IntToHex(StrToInt(sColorBtn));  // ===> Aqui convertimos el color numerico(16711935) a Hexadecimal, lo que nos da: 00FF00FF 

      iTColor    := '$' + sStrToHexa;  //===> Aqui deberiamos asignar el color Hexadecimal, de la forma $00FF00FF
...
...

El problema es que al asignar el color, en la forma: '$' + sStrToHexa, esta asignacion, internamente conserva las comillas (''), con lo que no me entrega el color esperado. Solo me entrega un tono de gris, para todas las lineas de color leidas.

Entonces,
como puedo realisar esa asignacion?, eliminando internamente las comillas?, para que me quede algo como:
Código Delphi [-]
 iTColor    := $00FF00FF;

Espero haberme explicado bien.

Saludos.
Jose Miguel.

manelb 25-11-2019 07:40:58

prueba si te funciona así ...
Código Delphi [-]
  grid.Canvas.Brush.Color:= Stringtocolor('$00FF00FF');

Saludos a todos

viverosjosem 25-11-2019 11:23:04

Hola manelb.
Gracias por tu respusta.
Olvide comentar que trabajo con Delphi Tokyo, para android. Y la funcion: "StringToStr", no esta soportada para Delphi/Android.

Saludos.
Jose Miguel.

viverosjosem 25-11-2019 11:25:57

Quise decir: La funcion "StringToColor", no esta soportada para Delphi/Android.

Saludos.
Jose Miguel.

viverosjosem 26-11-2019 01:10:58

Hola Amigos.
Solucione el problema de los colores en Delphi/Android.

lo logre de esta manera.
Código Delphi [-]

...
...
      sColorBtn:= GetParam(j, ';');

      sColorBtn := IntToHex(StrToInt(sColorBtn));
...

                                                               // Aqui, logramos incorporar el codigo Hexadecimal, sin comillas.                                                   
   TRectangle(Components[a]).Fill.Color := TAlphaColor(AnsiQuotedStr('$'+sColorBtn, '"'));

Les dejo la solucion, por si le sirve a alguien.

Y gracias por su apoyo.
Saludos.
Jose Miguel.

ElKurgan 26-11-2019 07:23:40

Gracias por compartir la solución

Saludos


La franja horaria es GMT +2. Ahora son las 03:50:46.

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