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 24-11-2013
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Colocar los nombre de los colores en español en un Combobox

Hola Chicos como están?

Agradeciéndoles antemano la colaboración prestada en este foro y tratando de encontrar solución planto este interrogante:

en un link encontre esto que necesitaba:

http://delphi.about.com/od/vclwritee.../aa061104a.htm

Sin embargo me encontré que los usuarios de mi aplicación no son Bilingue asi que tengo que mostrar los colores en español:

Este es el código que extraje del link:

Código Delphi [-]
//Tengo esta constante en mi formulario
const Colors: array[0..17] of TColor =
 (clAqua, clBlack, clBlue, clDkGray, clFuchsia, clGray, clGreen, clLime, clLtGray, clMaroon, clNavy, clOlive, clPurple, clRed, clSilver, clTeal, clWhite,  clYellow) ;

//ahora en el evento OnDrawItem del ComboBox llamado cbxColor1 Puse esto:

procedure TFrmIngresarArticulo.cbxColor1DrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
cName: string;
begin
 if odSelected in State then
   (Control as TComboBox).Canvas.Brush.Color := clHighlight
 else
   (Control as TComboBox).Canvas.Brush.Color := clWhite;

 (Control as TComboBox).Canvas.FillRect(Rect);

 cName:=ColorToString(Colors[Index]);
 Delete(cName,1,2); //removes cl from clColorName

 with (Control as TComboBox).Canvas do
 begin
  TextOut(Rect.Left + 24,Rect.Top, cname);
  Brush.Color := TColor(Colors[Index]);
  Rectangle(Rect.Left + 1,Rect.Top + 1,Rect.Left + 21,Rect.Bottom - 1);
 end;
end;

//Nota aclaro que tengo que poner en la propiedad del combobox lo siguiente: csOwnerDrawFixed

en realidad no se me ocurre utilizando este código obtener lo que deseo:

Código Delphi [-]
Azul := clBlue;

Alguna idea?


Saludos

novato_erick
Responder Con Cita
  #2  
Antiguo 24-11-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Creo que tendrías que crear otro arreglo constante con la traducción de los nombres.

Un ejemplo:
Código Delphi [-]
const
  SPACOL: array[0..17] of string = ('Agua','Negro','Azul','Gris oscuro',
    'Fucsia','Gris','Verde','Lima','Gris claro','Marrón','Azul marino',
    'Verde oliva','Púrpura','Rojo','Plateado','Cerceta','Blanco','Amarillo');
  ENGCOL: array[0..17] of TColor = (clAqua, clBlack, clBlue, clDkGray,
    clFuchsia, clGray, clGreen, clLime, clLtGray, clMaroon, clNavy,
    clOlive, clPurple, clRed, clSilver, clTeal, clWhite,  clYellow);

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  with ComboBox1 do
  begin
    Style:= csOwnerDrawFixed;
    for i:= 0 to 17 do AddItem(SPACOL[i], TObject(ENGCOL[i]));
  end;
end;

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with Control as TComboBox do
  begin
    if odSelected in State then
      Canvas.Brush.Color:= clHighlight
    else
      Canvas.Brush.Color:= clWhite;
    Canvas.FillRect(Rect);
    Canvas.TextOut(Rect.Left + 24, Rect.Top, SPACOL[Index]);
    Canvas.Brush.Color:= TColor(Items.Objects[Index]);
    Canvas.Rectangle(Rect.Left + 1, Rect.Top + 1, Rect.Left + 21, Rect.Bottom - 1);
  end;
end;

// Aplicar color seleccionado a un TPanel
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
   with TComboBox(Sender) do
     if ItemIndex <> -1 then
       Panel1.Color:= TColor(Items.Objects[ItemIndex]);
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 25-11-2013
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
ecfisa



Es lo que necesitaba Muchassss gracias... al final en utilizar el color seleccionado solo agregué esto porque no lo mostraba en modo de ejecucion:

Código Delphi [-]
// Aplicar color seleccionado a un TPanel
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
   with TComboBox(Sender) do
     if ItemIndex <> -1 then
      begin//aqui agregue
       Panel1.Color:= TColor(Items.Objects[ItemIndex]);
      end;//y el final
end;

Funcionó correctamente.....

y nuevamente
Responder Con Cita
  #4  
Antiguo 25-11-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
novato_erick,

Cita:
Empezado por novato_erick
...solo agregué esto porque no lo mostraba en modo de ejecución...
El código del Msg #2 funciona correctamente y sin ninguna modificación en Delphi 7 bajo Windows 7 Professional x32.

Espero sea útil

Nelson.
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
TscExcelExport colocar nombre a Hoja 1 Viky Varios 1 16-07-2010 14:22:24
Cómo colocar el resultado de una consulta en un ComboBox??? gusanita Varios 8 16-05-2008 00:58:50
Colocar Nombre a una fila de DBGrid FGarcia Conexión con bases de datos 3 20-11-2006 22:53:10
colocar tablas bd en un combobox vivamotos C++ Builder 3 07-09-2006 14:35:17
Mostrar nombre de campos y filtar nombre de tablas .db en un combobox Coco_jac Varios 1 24-06-2006 01:34:29


La franja horaria es GMT +2. Ahora son las 19:24:11.


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