• Sábado 21 de Diciembre de 2024, 11:48

Autor Tema:  Sobre los combos  (Leído 2059 veces)

eduardo90

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Sobre los combos
« en: Lunes 7 de Julio de 2008, 04:03 »
0
Bien tengo un combo que debe llenarse al reconocer algo en una caja de texto por ejemplo un id de un profesor, pero dependiendo de que id se trate debe llenarse con las materias que dicho profesor imparte. si alguien tiene el codigo o por lo menos una idea.

Gracias

xodrf

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Sobre los combos
« Respuesta #1 en: Viernes 17 de Julio de 2009, 16:18 »
0
NO TENGO LA SOLUCION PERO SI IDEA DE COMO DEBES ENCARAR TU PROBLEMA UTILIZA LOS COMBOS CON ROWSOURCETYPE=0 Y LLENALOS DE FORMA PROGRAMADA JUSTAMENTE ANTES DE DARLE EL FOCO ES DECIR CON THISFORM.MICOMBO.ADDLISTITEM(...) O THISFORM.MICOMBO.ADDITEM(...)

3rn3st0

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Sobre los combos
« Respuesta #2 en: Sábado 18 de Julio de 2009, 17:46 »
0
Debes usar una instrucción condicional como la del ejemplo que voy a darte. Supongamos que tienes sólo dos profesores, cuyos Id son 1 y 2 (estoy asumiendo que Id es el nombre del campo que identifica a cada profesor y que es un campo de tipo numérico - Integer).

El código debes introducirlo en el evento Valid del TextBox que captura el Id.

Código: Text
  1.  
  2. local nId As Integer
  3.  
  4. && Primero debes capturar el Id...
  5. nId = This.Value                            && Se supone que estas dentro del evento Valid del TextBox
  6.  
  7.       && Creo un cursor el cual contendrá los datos que cargará el ComboBox
  8.       select nombre_prof, id_prof tabla_que_te_interesa where tabla.campoX == nId ;
  9.          into cursor curProf
  10.  
  11.       with Thisform.cboTuCombo           && Tu ComboBox...
  12.          .BoundColumn = 2
  13.          .ColumnCount = 2
  14.          .ColumnLines = .F.
  15.          .ColumnWidths = "200,0"
  16.          .IncrementalSearch = .T.
  17.          .ListIndex = 0
  18.          .RowSource = "curProf"
  19.          .RowSourceType = 2
  20.          .Style = 2
  21.       endwith
  22.  
  23.  

Las propiedades que estoy modificando en el ComboBox se refieren a lo siguiente:
BoundColumn: Indica cual será la columna que retornará el valor a ser usado (en mi ejemplo, el Id es colocado en una segunda columna dentro del ComboBox y esta columna es ocultada.
ColumnCount: Le indica al ComboBox que tiene dos columnas.
ColumnLines: Elimino las líneas de división entre columnas (esto es ya algo de gustos personales).
ColumnWidths: Ancho (en píxeles) de cada columna. Como verás, la segunda columna tiene un ancho de cero (0) lo cual la hace invisible. Solo me interesa mostrar los nombres.
IncrementalSearch: Le indico al Combo que debe comportarse como las autocompletaciones de Facebook.
ListIndex: Indico cual es el elemento seleccionado, por omisión ninguno (0).
RowSource: Origen de los datos del ComboBox, en este caso el cursor que creamos con el SELECT SQL
RowSourceType: Tipo de datos = Área (tabla, en este caso el cursor).
Style: No permite que el usuario pueda escribir en la caja de texto del ComboBox.

Bueno, espero que te sirva de algo este ejemplo. :D