
[RESUELTO] Como almacenar un dato de tipo TColor
#1
Escrito 07 octubre 2009 - 09:14
Tengo una situacion en la que se quiere hacer un sistema de avisos mediante colores, segun determinados criterios, pero estos criterios y colores los configura el usuario como estime conveniente
El problema me lo encuentro en como guardar la informacion del color que escoja, para ello uso el componente TColorComboBox, que me devuelve un tipo TColor.
Como tengo que declarar el tipo de dato en la BD (uso Access), o de que forma haria para guardar ese color
#2
Escrito 07 octubre 2009 - 09:24
function HexToTColor(sColor : string) : TColor; begin Result := RGB( StrToInt('$'+Copy(sColor, 1, 2)), StrToInt('$'+Copy(sColor, 3, 2)), StrToInt('$'+Copy(sColor, 5, 2)) ) ; end;
Se usaría así:
var Color: TColor; begin Color := Table1Color.AsString; Edit1.color := Color; end;
Saludos.
#3
Escrito 07 octubre 2009 - 09:35
function TColorToHex(Color : TColor) : string; begin Result := IntToHex(GetRValue(Color), 2) + IntToHex(GetGValue(Color), 2) + IntToHex(GetBValue(Color), 2) ; end; procedure TForm1.ColorBox1Click(Sender: TObject); begin ShowMessage(TColorToHex(ColorBox1.Selected)); end;
Saludos.
#4
Escrito 07 octubre 2009 - 09:41
var IDColor: TColor; procedure TForm1.ColorBox1Select(Sender: TObject); begin IDColor := ColorBox1.Selected; end; procedure TForm1.GrabaDatos; begin Tabla.Append; Tabla.CampoColor.Value := IDColor; Tabla1.Post; Tabla1.Close; end;
Salud OS
#5
Escrito 07 octubre 2009 - 09:47
Y no sería mas fácil grabar el valor como entero directamente?
Porque no todos son enteros


Saludos.
#6
Escrito 07 octubre 2009 - 09:56

Recuerda que los enteros no solo son Positivos

Salud OS
#7
Escrito 07 octubre 2009 - 10:19

#8
Escrito 07 octubre 2009 - 10:23
Lo probare como entero, y tambien utilizare las funciones RGBToColor y ColorToRGB que devuelven un entero, es decir convierten TColor a Integer y viceversa
#9
Escrito 07 octubre 2009 - 10:28
Sí amigo eso está bien, pero...¿y los colores con valores enteros y strings? ¿cómo lo metes en un campo entero?
.
Recuerda que los valores enteros son base 10, y los hexadecimales son base 16, asi que no te preocupes por las letras, en resumen de cuenta lo que quiero decir es que el TColor es un numero entero, indeferentemente que sea Hexadecimal o decimal igual es un entero.
#10
Escrito 07 octubre 2009 - 10:38
Saludos
#11
Escrito 07 octubre 2009 - 12:38
function ColorToString(Color: TColor): string; function StringToColor(const S: string): TColor; function ColorToIdent(Color: Longint; var Ident: string): Boolean; function IdentToColor(const Ident: string; var Color: Longint): Boolean;
#12
Escrito 15 marzo 2018 - 03:38
Perdón que me meta acá, pero no se como redactar una pregunta nueva.
Me gustaría saber si se puede mostrar un ColorComboBox Con los nombres de los colores en Español
#13
Escrito 15 marzo 2018 - 04:21
Se me olvidó decirte cómo lo grabarías :$, lo acabo de probar de esta forma y me funciona perfecto:
delphi
function TColorToHex(Color : TColor) : string; begin Result := IntToHex(GetRValue(Color), 2) + IntToHex(GetGValue(Color), 2) + IntToHex(GetBValue(Color), 2) ; end; procedure TForm1.ColorBox1Click(Sender: TObject); begin ShowMessage(TColorToHex(ColorBox1.Selected)); end;
Saludos.
Y ¿Como sería con FMX?
#14
Escrito 15 marzo 2018 - 04:23
Se me olvidó decirte cómo lo grabarías :$, lo acabo de probar de esta forma y me funciona perfecto:
delphi
function TColorToHex(Color : TColor) : string; begin Result := IntToHex(GetRValue(Color), 2) + IntToHex(GetGValue(Color), 2) + IntToHex(GetBValue(Color), 2) ; end; procedure TForm1.ColorBox1Click(Sender: TObject); begin ShowMessage(TColorToHex(ColorBox1.Selected)); end;
Saludos.
#15
Escrito 15 marzo 2018 - 04:23
Y ¿Cómo sería con FMX?