In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

lChecked en TDBSwitch

Foro de Xailer profesional en español
avitalini
Posts: 134
Joined: Wed Jan 07, 2015 6:31 pm

lChecked en TDBSwitch

Postby avitalini » Fri May 18, 2018 1:00 am

Al utilizar TDbSwitch el estado de oSender:lChecked y lo guardado en la tabla MySQL es inverso al estado visual

Por ejemplo:
Si está hacia la derecha e iluminado y con el texto mostrado en :cTextChecked lo que se guarda es .F.
Y a la inversa, si el control está cargado hacia la izquierda y el texto mostrado es el de cTextUnChecked lo que se guarda en la tabla es .T.

Yo esperaría el mismo comportamiento de un tCheckBox.
User avatar
ignacio
Site Admin
Posts: 8409
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

Re: lChecked en TDBSwitch

Postby ignacio » Fri May 18, 2018 10:00 am

Buenos días,

Le ruego nos mande un pequeño ejemplo usando una BD local como SQLite. Nadie nos ha reportado ese error. Gracias.

Un saludo
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
avitalini
Posts: 134
Joined: Wed Jan 07, 2015 6:31 pm

Re: lChecked en TDBSwitch

Postby avitalini » Fri May 18, 2018 5:11 pm

Ignacio:

Ya probé y encontré que el problema es que el OnChange trabaja de manera diferente con el CheckBox

Code: Select all

METHOD DBSwitch1Change( oSender ) CLASS TForm1
   ::oSQLTable1:Update()
   ::oSQLTable1:Edit()
RETURN Nil


El Update se ejecuta realmente antes de que el control tenga el verdadero valor.

Y con el CheckBox el OnChange se ejecuta correctamente.
Claudio C
Posts: 36
Joined: Sun Sep 20, 2015 8:13 pm
Location: Buenos Aires

Re: lChecked en TDBSwitch

Postby Claudio C » Fri May 18, 2018 5:35 pm

Similar comportamiento reporte para el TSwitch en http://www.xailer.com/forum/viewtopic.php?t=13462&p=53192#p53192
Al ejecutarse onchange se encuentra el estado 'previo' al cambio en lchecked.

avitalini wrote:Al utilizar TDbSwitch el estado de oSender:lChecked y lo guardado en la tabla MySQL es inverso al estado visual

Por ejemplo:
Si está hacia la derecha e iluminado y con el texto mostrado en :cTextChecked lo que se guarda es .F.
Y a la inversa, si el control está cargado hacia la izquierda y el texto mostrado es el de cTextUnChecked lo que se guarda en la tabla es .T.

Yo esperaría el mismo comportamiento de un tCheckBox.
avitalini
Posts: 134
Joined: Wed Jan 07, 2015 6:31 pm

Re: lChecked en TDBSwitch

Postby avitalini » Sat May 19, 2018 7:17 pm

La funcionalidad la puedo cambiar con una negación, cómo lo dice Ignacio, pero el problema es con lo que se guarda en la tabla.

Menciona Ignacio que se mandará un segundo parámetro con el verdadero valor, pero creo que el problema seguiría ya que en mi caso la tabla se guardaría con el valor anterior, creo que si tendría que haber un evento OnChanged para que funcione de forma similar a DBCheckBox y podría ser que el OnChange sea para aceptar o no el cambio.

O que el evento OnChange se dispare después de asignar el valor al campo de la tabla, para poder guardar correctamente.

Saludos, a ver qué nos dice Ignacio.

Claudio C wrote:Similar comportamiento reporte para el TSwitch en http://www.xailer.com/forum/viewtopic.php?t=13462&p=53192#p53192
Al ejecutarse onchange se encuentra el estado 'previo' al cambio en lchecked.

avitalini wrote:Al utilizar TDbSwitch el estado de oSender:lChecked y lo guardado en la tabla MySQL es inverso al estado visual

Por ejemplo:
Si está hacia la derecha e iluminado y con el texto mostrado en :cTextChecked lo que se guarda es .F.
Y a la inversa, si el control está cargado hacia la izquierda y el texto mostrado es el de cTextUnChecked lo que se guarda en la tabla es .T.

Yo esperaría el mismo comportamiento de un tCheckBox.

Return to “Spanish”