FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Ayuda para crear un filtro
Buen día para todos...estoy migrando de vb6 a delphi 6, y les confieso que se me ha hecho un poco dificil.
Aqui les tengo algo a ver si pueden ayudarme: Tengo 2 TComboBox, uno para mostrar los paises y otro para mostrar los estados, lo que quiero es que al seleccionar un país, el combo de los estados tenga automaticamente los estados del país seleccionado. ¿Cómo puedo hacer Esto? Agradezco mucho a Quienes puedan Ayudarme (a no hacer tan frustrante esta migración)!! |
#2
|
||||
|
||||
Podriras utilizar el evento OnCloseUp del TComboBox para detectar el momento que seleccionan un país y aplicar un filtro el el Combo de los estados, ahora esto depende de la forma en la que estas "cargando" los combos con los valores de países y estados
Generalmente para el mismo caso yo utilizo el componente DBLookupComboBox con el cual puedo relacionar directamente a los campos de una tabla |
#3
|
||||
|
||||
Supongo que tendrás tus tablas paises y estados similares a éstas:
paises = (id, pais, ... ) estados = (id, estado, pais_id) donde id es la llave primaria. Tendrás dos Table (o los dataset que uses para tu base), tblPaises y tblEstados, enlazados a estas tablas. Tomas dos DataSource, dsPaises y dsEstados y los conectas a los Table mediante su propiedad DataSet. Ahora, lo que debes hacer es establecer la relación maestro-detalle entre paises y estados. Para ello, en tblEstados asignas dsPaises a su propiedad MasterSource y en su propiedad MasterFields pones id;pais_id para relacionar la llave de la tabla paises con la llave foránea pais_id de la tabla estados. Finalmente, en lugar de usar ComboBox, usa dos DBLookupComboBox, digamos cbPaises y cbEstados. Popnes sus propiedades así: cbPaises.ListSource: dsPaises cbPaises.KeyField: 'id'; cbPaises.ListField: 'pais' y similar para los estados. De esta manera, los combos mostrarán automáticamente los registros de las tablas, y, gracias a la relación con MasterSource y MasterFields, el combo de los estados se filtra automáticamente. // Saludos |
#4
|
||||
|
||||
Yo trate de utilizar esos DbLookUpComboBox....pero no supe. Entonces lo que hice fue insertar un TIbTable para los Paises, y en el OnCreate del Form escribí este codigo:
with TBLPaises do begin first; while not eof do begin if (cmbpaises.Items.IndexOf(FieldByName('PAIS').AsString)=-1)then cmbpaises.Items.Add(FieldByName('PAIS').AsString); next; end; end; Y así Asigne los paises al combo de Paises |
#5
|
||||
|
||||
Cita:
tblEstados.IndexName: nombre del índice sobre pais_id tblEstados.MasterSource: dsPaises tblEstados.MasterFields: id Si la llave primaria de paises (y, por tanto, la llave foránea de estados) consta de más de un campo, entonces en MasterFields pones todos los campos que conforman la llave, separándolos con ;. Toda la relación es más fácil hacerla usando el editor de MasterFields (doble clic sobre el botón de los tres puntos) // Saludos |
#6
|
||||
|
||||
Gracias!!! La verdad me ha sido muy util la Ayuda que me han prestado Uds.
Muy Agradecida. |
#7
|
||||
|
||||
Ahora mi pregunta sería...¿La lista de elementos de un DBLookUpComboBox puede desplegarse como los ComboBox?, es decir ¿Se pueden Ver Varios Elementos hacia abajo de la lista??
|
#8
|
||||
|
||||
utilizando la propiedad DropDownRows!!!...listo!!!
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Ayuda para crear ayuda... | Gabriel2 | Varios | 2 | 10-06-2005 00:15:18 |
crear ayuda para una aplicacion.... | User_baja1 | Varios | 3 | 08-04-2005 14:42:03 |
Ayuda para crear una clase | estebanx | OOP | 0 | 10-03-2005 16:36:49 |
Ayuda con el Microsoft Help Workshop para crear las ayudas para aplicaciones en Delph | Lester | Varios | 2 | 19-06-2003 17:14:16 |
Ayuda para crear mi propio IDE | antonio | Varios | 2 | 03-06-2003 13:07:32 |
|