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 10-01-2010
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
guardar valores para cada item de un TComboBox ¿como?

pues eso como se hace para si por ejemplo tengo un combobox con los items
España
Francia
Portugal

para que cada item me guarde un valor (ESP,FRA,POR) en el propio componente para poder recuperarlo al seleccionarlo

Vamos el equivalente a lo que es en HTML esto:
<option value="ESP">España</option>
<option value="FRA">Francia</option>
<option value="POR">Portugal</option>

ya se que podria hacer algo como esto por codigo
if combobox.itemindex=0 then valor:=ESP;
if combobox.itemindex=1 then valor:=FRA;
if combobox.itemindex=2 then valor:=POR;

pero me interesa saber si se pueden guardar los valores en el propio componente sin escribir código, o con otro compoente parecido¿?

gracias,

Última edición por cocute fecha: 10-01-2010 a las 16:26:34.
Responder Con Cita
  #2  
Antiguo 11-01-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.282
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Directamente (que se me ocurra a mi) sin crear código no se puede. La forma en que el algun caso he hecho algo similar es utilizar la propiedad Items (donde se almacenan las cadenas) y el puntero que tienen cada uno de los elementos de un TStrings (propiedad Object) para almacenar información adicional.

De todas formas no es trivial y necesitas código.

El el caso que tú necesitas, que es almacenar una segunda cadena, tal vez lo más simple sea que te crees una estructura paralela a tu combobox, donde almacenes el valor y el alternativo (o el valor sólo, lo que te sea más sencillo).

Es decir; en tu Combobox:
España
Francia
Portugal

Y en un TStringList mantener esto:
España=ESP
Francia=FRA
Portugal=POR
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 11-01-2010
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
gracias por responder,
no es que lo necesite realmente,
solo tenia la curiosidad de saber si se podia hacer para evitarme trabajo ya que es una opción que suelo utilizar a menudo y como estoy cansado de ver que en html se podia pues eso, me extraña que no se pueda de algún modo....

he encontrado un componente con el que si se puede hacer lo que digo
el TColumnComboBox de TMS
http://www.tmssoftware.com/site/colcombo.asp
además en cada item se pueden guardar tantos valores como quieras no solo uno.
Se supone que el componente esta pensado para poner mas columnas en los items, pero si dejamos solo una visible podemos guardar mas valores en el resto aunque no los mostremos.

y para extraer valores del item seleccionado es tan simple como:
ColumnComboBox1.ComboItems[ColumnComboBox1.itemindex].Strings[x];
donde la x es el nº del valor que queramos de cada item

He seguido buscando cosas,
y también lo he conseguido hacer con el ComboBox de los componentes BussinesSkinForm,
utilizando la propiedad TabWidths (que no se para que sirve) que es strings y sirve para guardar los valores de los Items

Última edición por cocute fecha: 11-01-2010 a las 15:40:04.
Responder Con Cita
  #4  
Antiguo 11-01-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Pues creo que se puede hacerlo tranquilamente con un TComboBox normal, y supongo que no entendiste el comentario de Neftali al decirte que podrias utilizar la propiedad Object de los item (TStrings) lo unico malo con con dicha propiedad es que no acepta string como objeto (al menos hay problemas con los string), con numeros o otros objetos no hay problema; pero tranquilamente puedes resolver esa situacion creandote una clase que tenga los campos que veas necesario Por ejemplo:
Código Delphi [-]
unit Unit2;
interface
Type
 TMyClase =Class//
 Private
    aCodigo:Integer;
    aNombre:String;
    aSigla:String;
 Public
   constructor Create();
   Property Codigo:Integer read aCodigo write aCodigo;
   Property Nombre:String read aNombre write aNombre;
   Property Sigla:String read aSigla write aSigla;
 end;
implementation

{ TMyClase }

constructor TMyClase.Create();
begin
//Inicio los valores por defecto
  aCodigo:=0;
  aNombre:='';
  aSigla:='';
end;
end.
Es una clase ejemplo, tú ya ves si necesitas guardar otros campos o quitar los ya existentes.
Ahora lo que vamos hacer es utilizar objetos de la anterior clase y adicionarlo alos item de mi combobox:
Para adicionar un objeto a los items de mi comboBox:
Código Delphi [-]
var MiObjeto:TMyClase;
begin
    MiObjeto:=TMyClase.Create;
    MiObjeto.Codigo:=123;
    MiObjeto.Nombre:='España';
    MiObjeto.Sigla:='ESP';
    ComboBox1.Items.AddObject(MiObjeto.Nombre,MiObjeto);//adiciona mi objeto alos item del ComboBox
end;
Para recuperar un objeto de los item y mostrar sus campos:
Código Delphi [-]
var MiObjeto:TMyClase;
begin
    if ComboBox1.ItemIndex>-1 then //if hay un item selecionado
    begin
      MiObjeto:=TMyClase(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);{obtengo el objeto de item selecionado
 haciendo casting}
      ShowMessage(IntToStr(MiObjeto.Codigo));//<--muestro el codigo
      ShowMessage(MiObjeto.Nombre);//<--muestro el Nombre
      ShowMessage(MiObjeto.Sigla);//<--muestro La Sigla
    end;
end;
Espero que se haya entendido.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 11-01-2010 a las 16:15:36.
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
Cómo hacer para retornar valores de una Unit a otra karo Varios 6 14-03-2009 20:57:28
Como hacer para que una funcion regrese varios valores jangel_ramirezm Varios 11 07-03-2008 22:14:49
ComboBox con Objeto String asignado a cada item amadis OOP 2 17-05-2007 20:20:22
cómo saber en una listview el item que está visible (no seleccionado) en cada momento igc C++ Builder 1 16-02-2007 18:25:52
Guardar valores de registro para siguiente ejecución oscarsanta Varios 3 24-01-2006 18:20:42


La franja horaria es GMT +2. Ahora son las 09:04:31.


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