![]() |
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, |
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 |
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 |
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:
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: Para recuperar un objeto de los item y mostrar sus campos: Espero que se haya entendido.:);) Saludos...:) |
La franja horaria es GMT +2. Ahora son las 22:19:50. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi