RE:Multiple Seleccion en un DW
Hola,
A)
sobre lo de los colores ya te contesté en mi anterior respuesta. No sé si me explico mejor, preguntame lo que no hayas entendido. (en resumen tienes que meter una expresión en el atributo backgroundcolor de cada columna).
B)
sobre la forma de limpiar con un FOR todos los contenidos de las columnas:de un formulario (asumiendo que con formulario quieres decir datawindow?):
puedes resetear todo el datawindow de golpe haciendo un dw_1.reset( ) pero bien si lo quieres hacer con un bucle FOR, aquí te digo como hacerlo:
tengo una ventana con un botón 'limpiar datos' y un control de datawindow que se llama: dw_mantenimiento. (tendrás que reemplazar en el código el dw_mantenimiento con el nombre de tu control de dw).
El siguiente código lo tengo en el evento clicked de mi boton 'limpiar datos':
//----------------------------
int li_max_cols, li_i
long ll_fila, ll_max_filas
string ls_col, ls_tipo
// variables para asignar nulos
date ld_nulo
datetime ldt_nulo
time lt_nulo
string ls_nulo
int li_nulo
// asignarles un valor nulo (no son nulo por su declaración en si, hay que hacerlo manualmente)
setnull( ld_nulo); setnull( ldt_nulo); setnull(lt_nulo); setnull(ls_nulo); setnull(li_nulo)
if not len(dw_mantenimiento.dataobject) > 0 then return
ll_max_filas = dw_mantenimiento.rowcount()
li_max_cols = integer(dw_mantenimiento.Object.DataWindow.Column.Count)
for ll_fila = 1 to ll_max_filas
for li_i = 1 to li_max_cols
ls_col = "#" + String(li_i) + ".name"
ls_col = dw_mantenimiento.Describe(ls_col)
// obtener el tipo de la columna
ls_tipo = dw_mantenimiento.Describe( ls_col + ".ColType")
ls_tipo = lower(mid(ls_tipo, 1, 5)) // para evitar tener que distinguir entre por ejemplo char(10), char(20)
choose case ls_tipo
CASE "long", "ulong", "decim", "numbe", "integ", "real"
dw_mantenimiento.setitem(ll_fila, ls_col, li_nulo)
CASE "date"
dw_mantenimiento.setitem(ll_fila, ls_col, ld_nulo)
case 'datet' // datetime
dw_mantenimiento.setitem(ll_fila, ls_col, ldt_nulo)
case 'time' // no creo que exista el caso
dw_mantenimiento.setitem(ll_fila, ls_col, lt_nulo)
case "char(", "strin"
dw_mantenimiento.setitem(ll_fila, ls_col, ls_nulo)
case else
Messagebox('Tipo por añadir al CASE en el código', 'añadir tipo: ' + ls_tipo + ', al itemerror de u_dw.')
return 1
END CHOOSE
next
next
//-------------------------------------
que los disfrutes,
Miguel L.