| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
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 |
|
 |
|