Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

asociar un valor a cada item de un combobox

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: solucion Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.