Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-06-2006
dicatek dicatek is offline
Miembro
 
Registrado: jun 2006
Posts: 46
Poder: 0
dicatek Va por buen camino
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!
Responder Con Cita
  #2  
Antiguo 30-06-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
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, pero veo que no lo has leído.
Responder Con Cita
  #3  
Antiguo 01-07-2006
dicatek dicatek is offline
Miembro
 
Registrado: jun 2006
Posts: 46
Poder: 0
dicatek Va por buen camino
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.

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.

Última edición por dec fecha: 01-07-2006 a las 23:00:52.
Responder Con Cita
  #4  
Antiguo 02-07-2006
dicatek dicatek is offline
Miembro
 
Registrado: jun 2006
Posts: 46
Poder: 0
dicatek Va por buen camino
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.

Última edición por dicatek fecha: 02-07-2006 a las 00:53:09.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Actualizar direccion ANG4L Internet 1 25-05-2006 20:30:44
Direccion mac yekkita Internet 3 17-08-2005 09:20:14
Manejar dirección API cardomjar Varios 7 08-12-2004 12:13:59
Pasar el valor de un TEdit dentro de un StringGrid a otro TEdit que está fuera atirado Varios 4 11-09-2004 19:13:48
Direccion MAC PTW Varios 1 28-07-2004 10:59:17


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


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
Copyright 1996-2007 Club Delphi