Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   funcionalidad parecida a la del TDBLookUpComboBox.. (https://www.clubdelphi.com/foros/showthread.php?t=35662)

pvizcay 17-09-2006 19:00:02

funcionalidad parecida a la del TDBLookUpComboBox..
 
buenas gente del foro:
recientemente he desarrollado un proyecto y me tope con una duda que tal vez algunos de uds. ya solucionaron.. todo el mundo conoce la funcionalidad del DBLookUpComboBox o ListBox, lo que estuve buscando es algo parecido pero con una lista fija (osea que los valores se cargen en el editor de propiedades en el código y no que se levanten de la base de datos) pero que a la vez funcione como un LookUp..

a ver si me explico mejor con un ejemplo (q tal vez no sea el mejor para el caso pero explica el punto :) supongamos que tengo varias tablas donde tengo campos del estilo Si / No con un SMALLINT (IBX + Firebird trabajo)..
ahora en la UI del programa el usuario tiene que ver un combobox con el Si / No pero internamente se tiene que guardar un 1 o 0 respectivamente.. esto se puede hacer fácilmente con el DBLookUpComboBox creando una tabla por ej

ID DESCRIPCION
0 No
1 Si

pero ahora si tengo MUCHOS de estos casos como en mi aplicación termino creando MUCHAS tablas asi que se usan solo para eso y no me parece muy limpio que digamos.. (los valores esos son 99% estáticos)

si utilizo el DBComboBox me permite cargar una lista de Strings pero no mapearlos a 1 o 0, o los valores que tenga en cuestión internamente..

también tengo la suite de DevExpress y no he encontrado ningún control que me permita hacer este 'mapping' digamos en el editor de propiedades y dejarlo fijo..

me estoy perdiendo de algo? aprecio sus comentarios y grax. por adelantado..

salu2 Pablo

pvizcay 18-09-2006 17:22:27

mm este no era el lugar para este post?
 
hola puede ser que este no sea el lugar correcto para el post?
o por ahí no exprese correctamente la consulta?

grax

maeyanes 18-09-2006 19:12:59

Si usas los DevExpress prueba con el TcxDBImageComboBox, este componente te permite tener una lista fija y mapear descripciones y valores.

Checa la propiedad Property.Items, el editor tiene una lista donde puedes especificar la imagen (de un TImageList), una descripción (SI/NO), un valor asociado (1/0) y el tipo del valor (Integer, string, etc...), el valor que se guarda en el campo de la tabla es el de la columna Value.


Saludos...

pvizcay 19-09-2006 17:32:10

grax
y nadie una idea con los componentes de Delphi x defecto (incluso enterprise)??

maeyanes 19-09-2006 18:01:34

En determinado momento podrías usar un TComboBox normal y en el evento BeforePost de la tabla en cuestión agregar el valor de ItemIndex del TComboBox en el campo deseado. Para esto, la propiedad Style debes ponerla en csDropDownList:

Código Delphi [-]

// La propiedad Items del ComboBox tendría:
// Si <--- ItemIndex = 0
// No <--- ItemIndex = 1

procedure TForm1.Tabla1BeforePost(DataSet: TDataSet);
begin
  DataSet.FieldByName('Campo').AsInteger := ComboBox1.ItemIndex
end;

Otra opción sería desde el evento OnChange del TComboBox::

Código Delphi [-]
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Tabla1.FieldByName('Campo').AsInteger := ComboBox1.ItemIndex
end;

Saludos...

roman 19-09-2006 18:15:56

Cita:

Empezado por pvizcay
pero ahora si tengo MUCHOS de estos casos como en mi aplicación termino creando MUCHAS tablas asi que se usan solo para eso y no me parece muy limpio que digamos.. (los valores esos son 99% estáticos)

Esto no lo entiendo. ¿Por qué no usas la misma tabla para alimentar a todos los DBLookupComboBox que requieras?

// Saludos

pvizcay 19-09-2006 20:22:03

porque son tablas distintas

Si/No
Credito/Debito
Debe/Haber
Fectura/Nota Deb./Nota Cred/Ticket .. .. .. y todo asi

estenoesta 20-09-2006 22:18:02

usa un combobox normal con su propiedad style=dropdawnlist...
y usas el itemindex para determinar cual es el que selecciono

si no me equivoco el itemidex tiene el valor de -1 si no has seleccionado nada
0 para el primer elemento
1 para el segundo
y asi sucesivamente

...

espero te sirva...

maeyanes 20-09-2006 22:22:15

Este... eh... ejem... http://www.clubdelphi.com/foros/show...93&postcount=5 :D


La franja horaria es GMT +2. Ahora son las 22:58:05.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi