Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Obtener RGB a partir de HTML (https://www.clubdelphi.com/foros/showthread.php?t=62599)

Niko 04-01-2009 00:23:59

Obtener RGB a partir de HTML
 
Hola de nuevo a todos.

Sigo con mi programa, y ahora se me plantea otra duda, he logrado convertir un valor RGB a un valor HTML con esta expresion:

Código Delphi [-]
function ColorToHtml(DelphiColor:TColor):string;
var 
  tmpRGB : TColorRef;
begin 
  tmpRGB := ColorToRGB(DelphiColor);
  Result:=Format( '#%.2x%.2x%.2x',
                  [GetRValue(tmpRGB),
                   GetGValue(tmpRGB),
                   GetBValue(tmpRGB)]);
end; 
begin 
    Edit4.Caption:=ColorToHtml(Panel1.Color);
end;

Ahora, lo que quiero hacer es poder hacerlo a la inversa, ese valor que tengo en HTML, convertirlo en RGB y mostrarlo en label1, label2 y label3.

A ver si alguien me puede hechar una manilla. Muchas gracias de antemano.

xEsk 04-01-2009 03:21:58

Hola.

Código Delphi [-]
function HtmlToColor(Color: string): TColor;
begin
  Result:=StringToColor('$' + Copy(Color, 6, 2) + Copy(Color, 4, 2) + Copy(Color, 2, 2));
end;

Saludos.

Niko 04-01-2009 12:53:12

Hola xEsk:

Esto que me dices, al ponerlo en el OnClick del Button me da error en el siguiente Procedure. De todos modos no me he enterado muy bien, a lo mejor soy yo el que lo he puesto mal.

Mira:
Código Delphi [-]
procedure TForm1.SpeedButton9Click(Sender: TObject);
function HtmlToColor(Color: string): TColor;
begin
  Result:=StringToColor('$' + Copy(Color, 6, 2) + Copy(Color, 4, 2) + Copy(Color, 2, 2));
end;

procedure TForm1.TrackBar1Change(Sender: TObject); // AQUI ME DA EL ERROR
function ColorToHtml(DelphiColor:TColor):string;
var
  tmpRGB : TColorRef;
  begin
  tmpRGB := ColorToRGB(DelphiColor);
  Result:=Format( '#%.2x%.2x%.2x',
                  [GetRValue(tmpRGB),
                   GetGValue(tmpRGB),
                   GetBValue(tmpRGB)]);
end;
begin
Panel2.Color:= RGB(TrackBar1.Position,
                   0,
                   0);
Panel1.Color:= RGB(TrackBar1.Position,
                   TrackBar2.Position,
                   TrackBar3.Position);
Edit1.Text:= IntToStr(TrackBar1.Position);
Edit4.Text:=ColorToHtml(Panel1.Color);
Edit5.Text:= '('+Edit1.Text+','+Edit2.Text+','+Edit3.Text+')';
end;

De todos modos ya te digo que no se por donde me ando, yo tengo el valor HTML en el EDIT4 y quiero pasarlo a RGB y mostrarlo en label1, label2 y label3.

Me puedes explicar un poquito?, muchas gracias.

xEsk 04-01-2009 22:20:27

Hola, el código que has puesto aquí esta hecho un "churro" (y lo digo con todo el cariño xD).

Tienes procedures dentro de procedures, y por esto te da errores.

Te pongo un ejemplo de como podrias estructurarlo:

Código Delphi [-]
function HtmlToColor(Color: string): TColor;
begin
  Result:=StringToColor('$' + Copy(Color, 6, 2) + Copy(Color, 4, 2) + Copy(Color, 2, 2));
end;

function ColorToHtml(DelphiColor:TColor):string;
var
  tmpRGB : TColorRef;
begin
  tmpRGB := ColorToRGB(DelphiColor);
  Result:=Format( '#%.2x%.2x%.2x',
                 [GetRValue(tmpRGB),
                  GetGValue(tmpRGB),
                  GetBValue(tmpRGB)]);
end;

procedure TForm1.SpeedButton9Click(Sender: TObject);
begin
  // tu codigo del "SpeedButton OnClick"
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  // tu codigo del "TrackBar OnChange"
end;

Saludos.

Niko 05-01-2009 14:17:58

Hola xEsk:

Muchas gracias por tu ayuda (y por la crítica), la verdad es que llevaba casi 3 años sin coger el Delphi y se me han olvidado las cosas, de todos modos yo lo veia un poco raro también, asi que en cuanto me lo has dicho he caido. Ya me ha salido, y todo correcto, solo me queda solventar un par de errores y listo.

Muchas gracias de verdad.
Un saludo.


La franja horaria es GMT +2. Ahora son las 14:54:08.

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