Page 1 of 1

Valid y When

Posted: Fri Sep 08, 2017 9:01 am
by jtscalpe
Como se puede hacer un Valid y When con QlineEdit() sin usar el get ?, se puede ?, porque no veo en los ejemplos ninguna practica de lo dicho, seria como el OnChange, Onclick ......

Re: Valid y When

Posted: Fri Sep 08, 2017 10:48 am
by Antonio Linares

Re: Valid y When

Posted: Fri Sep 08, 2017 11:12 am
by Antonio Linares
Aqui tienes un ejemplo de como poder hacer el VALID:

Code: Select all

#include "FiveTouch.ch"

function Main()

   local oDlg, oGet1, cTest 
   local oBtnOk, oBtnCancel

   DEFINE DIALOG oDlg

   @ 20, 20 GET oGet1 VAR cTest OF oDlg SIZE 100, 20

   oGet1:Connect( "textEdited(QString)", { | u | MsgInfo( u ) } )

   @ 200, 90 BUTTON oBtnOk PROMPT "Ok" OF oDlg ;
      ACTION MsgInfo( "Ok!" )

   @ 200, 220 BUTTON oBtnCancel PROMPT "Cancel" OF oDlg ;
      ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED

return nil

Re: Valid y When

Posted: Fri Sep 08, 2017 11:15 am
by Antonio Linares
Tambien podrias usar esta señal que se emite cuando se ha terminado de editar:

http://doc.qt.io/qt-4.8/qlineedit.html#editingFinished

Code: Select all

#include "FiveTouch.ch"

function Main()

   local oDlg, oGet1, cTest 
   local oBtnOk, oBtnCancel

   DEFINE DIALOG oDlg

   @ 20, 20 GET oGet1 VAR cTest OF oDlg SIZE 100, 20

   oGet1:Connect( "editingFinished()", { || MsgInfo( "VALIDar desde aqui" ) } )

   @ 200, 90 BUTTON oBtnOk PROMPT "Ok" OF oDlg ;
      ACTION MsgInfo( "Ok!" )

   @ 200, 220 BUTTON oBtnCancel PROMPT "Cancel" OF oDlg ;
      ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED

return nil

Re: Valid y When

Posted: Fri Sep 08, 2017 11:20 am
by Antonio Linares
hay dos señales que se reciben de QWidget pero no se como podemos usarlas:

http://doc.qt.io/qt-4.8/qwidget.html#signals

En concreto keyboardGrabber() y mouseGrabber() servirían para hacer el WHEN

Re: Valid y When

Posted: Tue Sep 12, 2017 3:29 pm
by jtscalpe
Este Ejemplo me funciona bien para el Valid, porque en función de lo que devuelva, (.t.) o (.f.), la función KeyBoardEvents() detiene la aplicación, pero pierdo el control con el ratón y me gustaría en la función KeyBoardEvents() asignarle al ENTER que funcionará como el TAB, Saludos



#include "FiveTouch.ch"

function Main()

local oDlg, oGet1, cTest
local oBtnOk, oBtnCancel

DEFINE DIALOG oDlg

@ 20, 20 GET oGet1 VAR cTest OF oDlg SIZE 100, 20

oGet1:connect( QEvent_KeyPress , { |e| KeyBoardEvents( e, cTest ) } )
//QEvent_KeyPress -- viene de Hbqtgui.ch

@ 200, 90 BUTTON oBtnOk PROMPT "Ok" OF oDlg ;
ACTION MsgInfo( "Ok!" )

@ 200, 220 BUTTON oBtnCancel PROMPT "Cancel" OF oDlg ;
ACTION oDlg:End()

ACTIVATE DIALOG oDlg CENTERED

return nil
//---------------------------------------------------
Function KeyBoardEvents( e, cText )
LOCAL lSalida := .T.
LOCAL nKey := e:key()

// (.T.) No Permite Continuar
// (.F.) Permite Continuar

Do Case
Case nKey == Qt_Key_Return .OR. nKey == Qt_Key_Enter
MsgInfo('Enter')
lSalida := .F.

Case nKey == Qt_Key_Tab
MsgInfo('Tab')
lSalida := .F.

Case nKey == Qt_XButton1
MsgInfo('Mouse')
lSalida := .F.

Case nKey == Qt_Key_F1
MsgInfo('F1')
lSalida := .T.

EndCase

Return( lSalida )