| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
paz Ens

Registrado: 22 Feb 2007Mensajes: 28
|
Publicado: Mar 17 Abr, 2007 1:38 pm Asunto: asociar un valor a cada item de un combobox |
|
|
pue eso, alguien sabe como le doy valores a los items de un combobox?
imagino q me he explicado quiero decir q pro ejemplo yo selecciono en el combo la palabra amarillo y el guarde un 340. |
|
| Volver arriba |
|
 |
Cerúleo Master


Registrado: 04 Ago 2003Mensajes: 332Ubicación: Santander, España
|
Publicado: Mar 17 Abr, 2007 1:55 pm Asunto: |
|
|
Hola.
Puedes crear una lista dinámica de enteros (o del tipo de datos que deseas guardar) donde almacenas el valor que quieres. Luego al seleccionar el item del TComboBox hallas su ItemIndex y usas éste para acceder a la lista de valores. No sé si me he explicado bien.
Un saludo. _________________ Nunca digas "Es imposible" sin intentarlo antes. |
|
| Volver arriba |
|
 |
Buildero Master


Registrado: 23 Dic 2003Mensajes: 523Ubicación: Puebla, México
|
Publicado: Mar 17 Abr, 2007 3:51 pm Asunto: |
|
|
Que tal paz, agrego a la sugerencia de Cerúleo otra forma de hacerlo.
Agrega en un form un combobox y asignale el nombre cbo. También agrega dos botones.
El código para el primer botón es el siguiente y lo que hace es llenar el combo con tres elementos pero usando el Método AddObject, que te permite agregar una cadena y un objeto asociado al elemento. En este caso solo asigno valores numéricos
| Código: | void __fastcall TForm1::Button1Click(TObject *Sender)
{
cbo->Items->AddObject("Amarillo", (TObject*)340);
cbo->Items->AddObject("Rojo", (TObject*)360);
cbo->Items->AddObject("Azul", (TObject*)380);
} |
La función del segundo botón es leer los elementos del combo enviando un mensaje indicando la cadena de cada elemento asi como también el valor que hemos asignado a cada elemento.
| Código: | void __fastcall TForm1::Button2Click(TObject *Sender)
{
AnsiString Cadena;
long Valor;
for (int i = 0; i < cbo->Items->Count; i++)
{
Cadena = cbo->Items->Strings[i];
Valor = (long)(TObject*)cbo->Items->Objects[i];
ShowMessage("Cadena:" + Cadena + "\nValor: " + IntToStr(Valor));
}
} |
Y por último, esta porción del código va en el evento OnSelect del combo (solo es para comprobar).
| Código: | void __fastcall TForm1::cboSelect(TObject *Sender)
{
long Valor;
Valor = (long)(TObject*)cbo->Items->Objects[cbo->ItemIndex];
ShowMessage("Valor: " + IntToStr(Valor));
} |
Saludos _________________ Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida. |
|
| Volver arriba |
|
 |
paz Ens

Registrado: 22 Feb 2007Mensajes: 28
|
Publicado: Mie 18 Abr, 2007 7:23 am Asunto: |
|
|
no sabéis cuanto agradezco vuestra colaboración, llevo varios días con esto, buscando... pero nada. Parecía algo lógico, pero no encontraba nada en ningún sitio.
Muchas gracias, voy a probarlo |
|
| Volver arriba |
|
 |
paz Ens

Registrado: 22 Feb 2007Mensajes: 28
|
Publicado: Mie 18 Abr, 2007 8:50 am Asunto: |
|
|
perdonar, pero uan preguntita mas....
y si en lugar de asignarel un entero le asigno otro nombre por ejemplo yo selecciono "nombre del cliente" pero quiere qeu el valor sea "nom_c". La funcion AddObject ya no me serviria, verdad? como lo haria entonces?
gracias |
|
| Volver arriba |
|
 |
jacko Master


Registrado: 03 Sep 2005Mensajes: 287Ubicación: Colombia
|
Publicado: Mie 18 Abr, 2007 3:30 pm Asunto: |
|
|
Hola paz
Y porque no haces un vector?
Cada elemento del ComboBox tiene un ItemIndex iniciando desde 0. Eso quiere decir que si tienes 10 Items, estos se cuentan desde el 0 hasta el 9.
Ahora creas un vector con la cantidad de casillas correspondientes a la cantidad de Items del ComboBox. Llenas el vector con las palabras que tu quieres, y da la casualidada que el vector tambien inicia desde el 0.
Por ultimo, cada vez que seleccionas un Item del ComboBox, tomas su ItemIndex, y con ese valor vas al vector y lo lees de la forma Vector[ComboBox->ItemIndex], y asi seleccionas la cadena correspondiente al Item seleccionado.
Es otra opcion. Desde mi punto de vista la veo mas sencilla. Nos cuentas como lo solucionaste!.
Gracias! _________________ Dios es real... a menos que se declare entero! |
|
| Volver arriba |
|
 |
paz Ens

Registrado: 22 Feb 2007Mensajes: 28
|
Publicado: Lun 23 Abr, 2007 12:18 pm Asunto: solucion |
|
|
Perdonar por el restraso pero no me acorde de contestar, efectivamente lo solucione como jacko me aconsejo, es una forma facil, muy sencialla y lo mas improtante no da ningun problema...
Muchas gracias a todos |
|
| Volver arriba |
|
 |
|