Miguel,
Mira la nota al final de mi anterior mensaje.
Un saludo
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Miguel A. Torrellas" <
miguel@torrellas.net> escribió en el mensaje
news:45f5898e$[email=
1@news.xailer.com...]
1@news.xailer.com...[/email]
> Gracias Ignacio,
>
> Extraordinariamente explicito, comparto 100 por 100 toda tu explicación,
> ademas con los ejemplos que explicas, todo solucionado.
>
> No termino de entender el uso de TDBNavigator:Lock y UnLock ya haré
> pruebas para ver lo que hace.
>
> Saludos. Miguel A. Torrellas
>
> Ignacio Ortiz de Zúñiga escribió:
>> Miguel,
>>
>> La clase TDBNavigator no está preparada para internamente poner el Browse
>> en modo edición o modo alta cuando se pulsen los botones
>> correspondientes. La clase permite gobernar la navegación por el dataset
>> y entrar en edición con cualquier datacontrol, pero no contempla que al
>> pulsar el botón de editar entre el Browse en modo edición. De hecho si lo
>> hicieramos así podría tener consecuencias no deseables, ya que un usuario
>> puede permitir la edición por celda en un determinado browse, pero sin
>> embargo desear edición en un formulario aparte cuando se desea editar
>> todo el registro. Cuando hiciese oDataset:Edit() además de entrar en
>> edición los controles del formulario, entraría también en edición el
>> browse del formulario anterior. Y seguramente, para complicarlo aún más,
>> es muy posible que el campo al que apunta algún DataControl del
>> formulario coincida con el que esté editando el propio browse. Espero
>> haber sido claro. En definitiva, no lo veo prudente. Podriamos limitarlo
>> para que sólo entrara en edición el Browse cuando no haya ningún
>> DataControl enlazado en el DataSet, pero no me convence. Espero que lo
>> entiendas.
>>
>> No obstante, y como habrás podido observar el Editor de DBFs hace eso
>> mismo que deseas, y por lo tanto es posible, pero con un poco de trabajo
>> de codificación, que es el siguiete:
>>
>> EN EL CONTROL TDBNAVIGATOR:
>>
>> // Evento OnClickInsert
>> METHOD DBNavigatorClickInsert( oSender ) CLASS TFrmDbfView
>> ::oDbBrowse:Append()
>> oSender:UnLock()
>> RETURN .F.
>>
>> // Evento OnClickEdit
>> METHOD DBNavigatorClickEdit( oSender ) CLASS TFrmDbfView
>> ::oDbBrowse:Edit()
>> oSender:UnLock()
>> RETURN .F.
>>
>> // Evento OnClickUpdate
>> METHOD DBNavigatorClickUpdate( oSender ) CLASS TFrmDbfView
>> ::oDbBrowse:CancelEdit()
>> RETURN .F.
>>
>> EN EL CONTROL TDBBROWSE:
>>
>> // Evento OnPostEdit
>> METHOD DbBrowsePostEdit( oSender, lCanceled, nKey ) CLASS TFrmDbfView
>> ::oDbNavigator:Lock()
>> RETURN Nil
>>
>> Nota: Los métodos Lock y UnLock que poseen todos los Datacontrol no están
>> documentados por considerarse de uso interno y son los encargados de
>> bloquear y desbloquear los controles cuando entran y salen de edición. En
>> el caso de TDBNavigator dichos métodos se utilizan para
>> habilitar-deshabilitar los botones de la toolbar según el estado del
>> dataset.
>>
>> Saludos,
>>