José Luis,
¿Y por que quitas el filtro al arrancar el segundo formulario? No tiene
mucho sentido, a mi modo de ver. Haciendo un simil con DBF estás haciendo lo
siguiente:
1) Muestro un browse con una DBF filtrada
2) Entro en edición de un registro de la DBF, pero justo después de
inicializar los controles con el valor de registro quito el filtro y me voy
al primer registro de la DBF
No tiene más sentido dejar el Browse en ese mismo registro que estás
editando. No consigo entenderlo.
En cualquier caso, se te está refrescando el Browse inicialmente cuando
haces el CLEARFILTER. Deberás indicar que no quieres que se actualizen los
controles e igualmente que no se posicione en el primer registro:
::oParent:oMemDataSet1:ClearFilter( .F., .F.)
El primer parametro indica que no vaya al primer registro y el segundo que
no actualice los DataControls. Veo que la documentación esta incompleta,
pero puedes fijarte en TMemDataSet:Filter que utiliza los mismos parametros.
Ahora lo corrigo en la documentación.
Después cuando grabas eres tu mismo el que hace una llamada a
DataSet:UpdateControls() y logicamente el Browse se actualiza.
Saludos,
"José Luis Capel" <
jose.luis@iaicom.com> escribió en el mensaje
news:[email=Xns97B9C0CB2A01Dasalesiaicomcom@82.144.6.50...]Xns97B9C0CB2A01Dasalesiaicomcom@82.144.6.50...[/email]
> Ignacio,
>
>> Me temo que no es posible. lUpdLinked cuando está a verdadero
>> actualiza los valores de los DataControls y FUERZA el repintado pero
>> no quiere decir que cuando este a falso los DataControls no terminen
>> reflejando los cambios. El DBBrowse sobre TmemDataSet siempre se apoya
>> directametne en una matriz, por lo tanto, si se modifica cualquier
>> elemento de la matriz, en cuanto el DBBrowse se repinte mostrará los
>> cambios.
>
> Gracias por tu respuesta.
>
> Te dejo un ejemplo que resume lo que estoy haciendo.
>
> Parto de un tMemdataset con 5000 elementos. Ese tMemDataset lo muestro en
> un dbBrowse. No obstante, el tMemdataset está filtrado por uno de sus
> campos, con lo que en realidad está mostrando (por ejemplo) 4500
> elementos.
>
> Llamo al segundo formulario (de forma modal) con lUpLinked := .F.
> Ese segundo formulario tiene datacontrols que, en el oncreate de cada uno,
> se asigna el dataset al memdataset del formulario padre. Además, en el
> onInitialize de este segundo formulario quito el filtro al MemDataSet
>
> ¿Que me encuentro? Pues que si muevo el segundo formulario (que es modal)
> el dbBrowse se refresca; sin embargo, lo más curioso es que (en mis
> pruebas) los datacontrols del segundo formulario cambian!!
>
> Te dejo un ejemplo.
>
> Saludos y gracias por tu tiempo.
> José Luis Capel
>
>