FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Deshabilitar Boton en Dialogo
Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Deshabilitar Boton en Dialogo
Posted: Sun Aug 14, 2011 06:33 AM
Hola a todos,

Estoy empezando a hacer pruebas con tDolphin(Gracias Daniel), y deseo desactivar el boton de Ir a Inicio cuando el puntero de registro se encuentre al inicio del Query, alguien podria orientarme en como hacerlo???



E intentado de la siguiente manera:

Code (fw): Select all Collapse
   @ 90,60 RBBTN oBtn1 OF oDlg ;
            ACTION ( lNew := lMod := .F.,;
                     oQry:GoTop(), ;
                     oDlg:Update() );
            GROUPBUTTON FIRST ROUND;
            BITMAP "\tdolphin\bitmaps\top.bmp"
.............
.............
   oDlg:bPainted := { || If( oQry:BoF() ,  oBtn1:Disable()  ,  oBtn1:Enable() ) }

   ACTIVATE DIALOG oDlg CENTERED on init (oQry:GoTop(), msgInfo(oQry:BoF()))


El MsgInfo de la ultima linea, me devuelve FALSO.... no se porque!!!!

=====>

Bayron Landaverry
xBasePHP.com
(215)2226600 Philadelphia,PA, USA
MayaBuilders@gMail.com
Guatemala

FWH25.06--Harbour 3.0.0--BCC7.7--UEstudio 10.10
Windows 10

FiveWin, One line of code and it's done...

Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Deshabilitar Boton en Dialogo
Posted: Sun Aug 14, 2011 02:53 PM

Byron, aún no he intentado usar Tdolphin, pero referente al Bof()...

BOF()
Determine when beginning of file is encountered
Syntax

 BOF() --> lBoundary

Returns

 BOF() returns true (.T.) after an attempt to SKIP backward beyond the
 first logical record in a database file; otherwise, it returns false
 (.F.).  If there is no database file open in the current work area,
 BOF() returns false (.F.).  If the current database file contains no
 records, BOF() returns true (.T.).

Description

 BOF() is a database function used to test for a boundary condition when
 you are moving the record pointer backward through a database file using
 the SKIP command.  A simple usage example is a descending order record
 list with an ascending order index file.  A more sophisticated example
 is a screen paging routine that pages forward or backward through the
 current database file based on the key the user presses.  When the user
 attempts to page backward, you would use BOF() to test for a beginning
 of file condition before using the SKIP command to move the record
 pointer and repaint the screen.

 Once BOF() is set to true (.T.), it retains its value until there is
 another attempt to move the record pointer.

 By default, BOF() operates on the currently selected work area.  It can
 be made to operate on an unselected work area by specifying it within an
 aliased expression (see example below).

 The SKIP command is the only record movement command that can set BOF()
 to true (.T.).

Saludos

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Re: Deshabilitar Boton en Dialogo
Posted: Sun Aug 14, 2011 03:46 PM
Gracias Francisco, tienes toda la razon....

Ahora si puedo encontrar el BoF de esta manera:

Code (fw): Select all Collapse
   ACTIVATE DIALOG oDlg CENTERED on init (oQry:GoTop(), oQry:Skip(-1), msgInfo(oQry:BoF()))


Lo cual no es practico, por lo que me he decidido a usar el valor de oQry:nRecno...

El problema que tengo ahora, es que no se como indicarle al dialogo automaticamente por medio de un Bloque de Codigo que hacer cada vez que se actualize la informacion, he intentado hacerlo con:

oDlg:bPainted
oDlg:OnMouseMove

y sigo intentando de otras formas, buscando en la clase tWindow, pero no encuentro nada todavia.

Alguien tiene alguna idea de como hacer que los botones se actualizen automaticamente dependiendo del registro en el que se encuentre el Puntero en la Base de Datos????

La idea es que si el Puntero esta en el Principio de la Base de Datos, el Boton de Ir al Inicio de la Base de Datos se desactive.....

Code (fw): Select all Collapse
   oDlg:bGotFocus := { || If( oQry:nRecno == 1,  oBtn1:Disable() , oBtn1:Enable() ) }


El codigo anterior desactiva el boton, pero al moverme de registro, el boton no se reactiva, incluso cuando clicleo en otras oplicaciones para perder el foco y despues volverlo a recuperar....

=====>

Bayron Landaverry
xBasePHP.com
(215)2226600 Philadelphia,PA, USA
MayaBuilders@gMail.com
Guatemala

FWH25.06--Harbour 3.0.0--BCC7.7--UEstudio 10.10
Windows 10

FiveWin, One line of code and it's done...

Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Re: Deshabilitar Boton en Dialogo
Posted: Sun Aug 14, 2011 04:09 PM

Se me acaba de ocurrir, que podria usar una solucion menos elegante a la de usar una activada por eventos...

Estoy seguro de de esta manera va a funcionar, y se trata de crear una funcion activada por la accion de los botones, la cual evaluaria la localizacion del Puntero y activaria o desactivaria los botones correspondientes...

Uhhhmmm, todavia me gustaria saber la manera de activar un Bloque de Codigo cada vez que cualquier accion se realize en un dialogo (Paint, Move, Mouse Movement, Resize, Click, etc)

=====>

Bayron Landaverry
xBasePHP.com
(215)2226600 Philadelphia,PA, USA
MayaBuilders@gMail.com
Guatemala

FWH25.06--Harbour 3.0.0--BCC7.7--UEstudio 10.10
Windows 10

FiveWin, One line of code and it's done...

Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Deshabilitar Boton en Dialogo
Posted: Sun Aug 14, 2011 04:32 PM

probastes con la clausula WHEN..? :shock:

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Deshabilitar Boton en Dialogo
Posted: Sun Aug 14, 2011 04:37 PM
Bayron

puedes usar los codeblock bBof y bEof de la clase TDolphinQry
Code (fw): Select all Collapse
DATA bBof,;        //codeblock to evaluate if the value is the first row
         bEof,;        //codeblock to evaluate if the value is the last row

ejemplo

Code (fw): Select all Collapse
oQry:bBof = {|| BofAction() }
oQry:bEof = {|| EofAction() }
Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Re: Deshabilitar Boton en Dialogo
Posted: Sun Aug 14, 2011 07:58 PM

Gracias a ambos, intentare a ver que puedeo hacer....

=====>

Bayron Landaverry
xBasePHP.com
(215)2226600 Philadelphia,PA, USA
MayaBuilders@gMail.com
Guatemala

FWH25.06--Harbour 3.0.0--BCC7.7--UEstudio 10.10
Windows 10

FiveWin, One line of code and it's done...

Posts: 883
Joined: Thu Dec 24, 2009 12:46 AM
Re: Deshabilitar Boton en Dialogo
Posted: Sun Aug 14, 2011 08:21 PM
Hola,
Me he decidido ha hacerlo un poco no tan OOps....

Quedo asi... Gracias a todos:
Code (fw): Select all Collapse
//top 
   @ 90,60 RBBTN oBtn1 OF oDlg ;
            ACTION ( lNew := lMod := .F.,;
                     oQry:GoTop(), ;
                     oDlg:Update(), ;
                     NumeroReg(oBtn1, oBtn2, oBtn3, oBtn4, oQry) );
            GROUPBUTTON FIRST ROUND;
            BITMAP "\tdolphin\bitmaps\top.bmp"
   
............

ACTIVATE DIALOG oDlg CENTERED on init ( oBtn1:Disable() , oBtn2:Disable() )


Function NumeroReg(oBtn1, oBtn2, oBtn3, oBtn4, oQry)
    If oQry:nRecno == 1
        oBtn1:Disable()
        oBtn2:Disable()
    Else
        oBtn1:Enable()
        oBtn2:Enable()
        
    EndIf
    
    If oQry:nRecno == oQry:nRecCount
        oBtn3:Disable()
        oBtn4:Disable()
    Else
        oBtn3:Enable()
        oBtn4:Enable()
        
    EndIf
    
Return NIL

=====>

Bayron Landaverry
xBasePHP.com
(215)2226600 Philadelphia,PA, USA
MayaBuilders@gMail.com
Guatemala

FWH25.06--Harbour 3.0.0--BCC7.7--UEstudio 10.10
Windows 10

FiveWin, One line of code and it's done...

Continue the discussion