ListBox en VFP
Deseo trabaja con dos ListBox: del listbox1 estarán los datos a partir de una Tabla, deseo a través de: seleción o arrastrarlos pasarlos a un List2.
Espero que esto te ayude, te digo de antemano que hay muchas formas de hacer esto, creo que esta es bastante sencilla pero puedes utilizarla como base y hacer algo mejor, disculpa alguna faltas ortográficas pero amigo a veces no hay mucho tiempo para corregir ok.
1. Paso
LstFuente = lisbox de la tabla
LstFuente.ColumnCount = 4 &&cantidad de campos que seleccionas en la consulta
LstFuente.ColumnWidths = 50,60,70,80 && para darle formato a los datos, estos valores los ajustas dependiendo de la cantidad y el ancho ok.
THISFORM.LstFuente.RowSourceType = 3
THISFORM.LstFuente.RowSource="SELECT * FROM tabla WHERE conducion INTO CURSOR cdatos"
THISFORM.LstFuente.Refresh()
2. Paso
LstDestino = listbox destino
No se si los datos que pasaras al listbox destino son los mismos de la tabla o solo sera un campo.
Si fuese un campo solamente entonces:
LstDstino.ColumnCount = 1
LstDstino.ColumnWidths = ## && tienes que buscar un ancho que se ajuste ok
3. Paso:
ahora necesitas 2 botones, uno para agregar datos y otro para quitarlos.
BOTON 1. cmdagregar
En el evento INIT de este botón escribes:
FOR i = 1 TO ThisForm.lstfuente.ListCount
IF THISFORM.lstfuente.SELECTED(i)
thisform.lstdestino.additem(alltrim(cdatos.campo1))
ENDIF
ENDFOR
Si te fijas estamos asumiendo que solo pasaras un dato de la tabla al listbox fuente y para eso utilizas el cursor y el dato(cdatos.campo1)
BOTON 2. cmdquitar
En el evento INIT de este botón escribes:
FOR j = 1 TO ThisForm.lstdestino.ListCount
IF THISFORM.lstdestino.SELECTED(j)
thisform.lstdestino.RemoveItem(j)
ENDIF
ENDFOR
Esto te permite remover los datos del listboxdestino.
cualquier duda me avizas para ayudarte ok.
1. Paso
LstFuente = lisbox de la tabla
LstFuente.ColumnCount = 4 &&cantidad de campos que seleccionas en la consulta
LstFuente.ColumnWidths = 50,60,70,80 && para darle formato a los datos, estos valores los ajustas dependiendo de la cantidad y el ancho ok.
THISFORM.LstFuente.RowSourceType = 3
THISFORM.LstFuente.RowSource="SELECT * FROM tabla WHERE conducion INTO CURSOR cdatos"
THISFORM.LstFuente.Refresh()
2. Paso
LstDestino = listbox destino
No se si los datos que pasaras al listbox destino son los mismos de la tabla o solo sera un campo.
Si fuese un campo solamente entonces:
LstDstino.ColumnCount = 1
LstDstino.ColumnWidths = ## && tienes que buscar un ancho que se ajuste ok
3. Paso:
ahora necesitas 2 botones, uno para agregar datos y otro para quitarlos.
BOTON 1. cmdagregar
En el evento INIT de este botón escribes:
FOR i = 1 TO ThisForm.lstfuente.ListCount
IF THISFORM.lstfuente.SELECTED(i)
thisform.lstdestino.additem(alltrim(cdatos.campo1))
ENDIF
ENDFOR
Si te fijas estamos asumiendo que solo pasaras un dato de la tabla al listbox fuente y para eso utilizas el cursor y el dato(cdatos.campo1)
BOTON 2. cmdquitar
En el evento INIT de este botón escribes:
FOR j = 1 TO ThisForm.lstdestino.ListCount
IF THISFORM.lstdestino.SELECTED(j)
thisform.lstdestino.RemoveItem(j)
ENDIF
ENDFOR
Esto te permite remover los datos del listboxdestino.
cualquier duda me avizas para ayudarte ok.
Amigo me equivoque el los botones de quitar y agregar, no es en el vento init donde escrbes el codigo sino en el evento Click. ok
