Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error de dirección en un tedit (https://www.clubdelphi.com/foros/showthread.php?t=33257)

dicatek 30-06-2006 23:18:57

Error de dirección en un tedit
 
Hola!

Estoy usando el codigó que me enseñó seoane para usar una paleta de colores con sus codigos en hexadecimal.

Código Delphi [-]
var  StrColor: string;begin  with TColorDialog.Create(self) do  try    if Execute then    begin      StrColor:= IntToHex(Color,6);      Edit1.Text:= StrColor;    end;  finally    Free;  end;end;

Y el siguiente para usarlo

Código Delphi [-]
var  MiColor: TColor;begin  MiColor:= StrToIntDef('$'+Edit1.Text,0);end;

El problema que tengo es que en el Edit1 el codigo hexadecimal de los colores, no me sale de izquierda a derecha, si no que me sale, de derecha a izquierda. Como puedo solventar este conflicto?

Gracias anticipadas!

seoane 30-06-2006 23:40:21

Cita:

Empezado por dicatek
Como puedo solventar este conflicto?

Puedes solventarlo leyendo la respuesta que te dí en tu primer hilo, ahi te explico que delphi utiliza para representar un color 3 bytes, siendo el mas alto el Azul y el mas bajo el Rojo. Por lo que al convertirlo a hexadecimal primero nos sale el azul, luego el verde y por ultimo el rojo. Esto es así, y no hay ningún problema en volver a convertir el string resultante al mismo color original.

Puede que la confusión la tengas porque al llamarse RGB creas que el rojo tiene que ir primero, pero ya ves que no es así. O puede que en algún programa como photoshop hayas visto representado un color en hexadecimal con el rojo primero, pero eso es solo una forma de expresarlo. De todas formas en el otro hilo también te explico como tienes que hacer para voltear el string, :rolleyes: pero veo que no lo has leído.

dicatek 01-07-2006 22:55:46

Hola Seoane y perdón por las repeticiones. Como bien dices, pensaba que RGB era Rojo,verde, amarillo, ahora ya lo sé. En cuanto a lo que me dijistes si que lo leí, pero no entendí nada:o.

Al final me pillé el libro que tengo de Delphi 7 y con tu ayuda logré no solo hacer lo que queria sino entenderlo todo a la perfección. Muchas gracias de veras.

Pon el codigo en la sección de trucos que a más de uno podrá irle bien:

Código Delphi [-]
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
  StrColor: string;
implementation
function ColorToStr(Color: TColor): string;
begin
  Result:= IntToHex(Color,6);
  Result:= Copy(Result,5,2) + Copy(Result,3,2) + Copy(Result,1,2);
end;
function StrToColor(Color: string): TColor;
begin
  Color:= Copy(Color,5,2) + Copy(Color,3,2) + Copy(Color,1,2);
  Result:= StrToIntDef('$'+Color,0);
end;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
  with TColorDialog.Create(self) do
  try
    if Execute then
    begin
      StrColor:= ColorToStr(Color);
      Edit1.Text:= StrColor;
      end;
  finally
    Free;
  end;
end;
 
end.

Muchas gracias de veras.;)

dicatek 02-07-2006 00:42:45

Buala! Que rabia!

Me sucede que he creado una mini aplicación, desde cero, con la información que me mandastes, y ahora cuando copio el codigo que funciona al proyecto que tenia ya empezado me sale el siguiente error al compilar:

[Error] UfrmPrincipal.pas(107): Undeclared identifier: 'IntToHex'
[Error] UfrmPrincipal.pas(114): Undeclared identifier: 'StrToIntDef'
[Error] UfrmPrincipal.pas(118): Declaration expected but 'USES' found

Que he echo mal para que con un proyecto desde cero funcione y uno empezado, no?

Definitivamente,

EDITO: PRoblema resuelto, escribí las funciones antes de la uses secundarias.

Muchas gracias.


La franja horaria es GMT +2. Ahora son las 15:33:41.

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