Clipper On Line • Ver Tópico - Ayuda con wvgPushButton()

Ayuda con wvgPushButton()

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Ayuda con wvgPushButton()

Mensagempor Ruben Dario » 02 Jan 2020 17:40

Saludos
He creado ester Boton
El evento si funciona, lo que hace es que no me refresca el registro en el formulario. Solamente lo hace cuando retiro el Puntero de Maus de los botones.

         oThisButton := wvgPushButton():New(::oCrt)   
         oThisButton:Border       := .T.
         oThisButton:PointerFocus := .f.
         oThisButton:Caption := IconFromCaption( acButtons[ nCont ], @cToolTip )
         oThisButton:Create( , , { -1, iif( nCol == 0, -0.1, -nCol ) }, { -3, -5 } )  // { -1, iif( nCol == 0, -0.1, -nCol ) }, { -3, -5 } )
         oThisButton:ToolTipText := cToolTip 
         oThisButton:Activate :=  { || ::reg_nav0001("S0") } 
Ruben Dario
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 115
Data de registro: 14 Jun 2015 23:19
Cidade/Estado: Colombia
Curtiu: 3 vezes
Mens.Curtidas: 0 vez

Ayuda con wvgPushButton()

Mensagempor JoséQuintas » 02 Jan 2020 19:33

Ruben Dario escreveu:El evento si funciona, lo que hace es que no me refresca el registro en el formulario. Solamente lo hace cuando retiro el Puntero de Maus de los botones.


Em GTWVG não existe... formulário... isso é coisa de GUI.

Ou... ao que está se referindo como formulário? GETs? GETs NÃO são atualizados automaticamente no Clipper/Harbour.

Geralmente faço assim:

DO WHILE .T.
    Formulario()
   // menu com botões, exemplo: buttonSair:Activate := { || hb_Keyput( K_ESC ) }
   nKey := Inkey(0)
   DO CASE
   CASE nKey == K_ESC; EXIT
   CASE nKey == K_HOME; GOTO TOP
   CASE nKey == K_END; GOTO BOTTOM
   CASE nKey == K_PGDN; SKIP
   CASE nKey == K_PGUP; SKIP -1
   CASE nKey == K_INSERT; Formulario( .T., "I" )
   CASE nKey == K_ENTER; Formulario( .T., 'A" )
   CASE nKey == K_DEL; IF Mensagem( "Excluir?", "S,N" ) == "S"; DELETE; ENDIF
   ENDCASE
ENDDO

FUNCTION Formulario( lEdit, cOption )

hb_Default( @lEdit, .F. )
hb_Default( @cOption, "C" )

@ 1, 0 SAY "hjkhsfd"  GET a
@ 2, 0 SAY "sdfsdfddf" GET b
IF ! lEdit .OR. cOption == "C"
   CLEAR GETS
   RETURN NIL
ENDIF
READ
IF LastKey() == K_ESC
   RETURN NIL
ENDIF
IF cOptions == "I"
   APPEND BLANK
ENDIF
REPLACE field->x WITH a, field->y WITH b
RETURN NIL


Ou... nos botões associar rotina completa

no pushbutton primeiro: GOTO TOP; Formulario() e talvez um crt:refresh()
no pushbutton ultimo: GOTO BOTTOM; Formulario() e talvez um crt:refresh()
e assim por diante.

Se fosse GUI.....
Então teria o disable de botões, e enable de digitações, mas não é o caso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Ayuda con wvgPushButton()

Mensagempor JoséQuintas » 02 Jan 2020 19:38

Não se esqueça que pode usar o WITH OBJECT

oThisButton := wvgPushButton():New(::oCrt)   
WITH OBJECT oThisButton
   :Border       := .T.
   :PointerFocus := .f.
   :Caption := IconFromCaption( acButtons[ nCont ], @cToolTip )
   :Create( , , { -1, iif( nCol == 0, -0.1, -nCol ) }, { -3, -5 } )  // { -1, iif( nCol == 0, -0.1, -nCol ) }, { -3, -5 } )
   :ToolTipText := cToolTip 
   :Activate :=  { || ::reg_nav0001("S0") } 
ENDWITH


É questão de se acostumar, mas com certeza no início confunde quando usar : ou ::
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Ayuda con wvgPushButton()

Mensagempor JoséQuintas » 02 Jan 2020 19:43

Só mais um detalhe:

oThisButton:Caption := IconFromCaption( acButtons[ nCont ], @cToolTip )


Esse IconFromCaption é porque tenho os botões em um array, e seleciono o ícone conforme o nome.
Não sei se está usando o mesmo esquema, ou se apenas manteve porque copiou fonte.
Se não está usando um array, pode usar IconFromCaption( "BOTAOSAIR", @cToolTip ), e na rotina IconFromCaption atribui o ícone/tooltip conforme o nome recebido.
É bom pra manter TODAS as telas do aplicativo com mesmo ícone pra mesma função e/ou pra gerenciar num lugar só as imagens.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Ayuda con wvgPushButton()

Mensagempor Ruben Dario » 02 Jan 2020 23:07

Gracias me Funciono

Otra duda que tengo
esta Instruccion
@ POS,cpos+46 GET lEditar PUSHBUTTON;
CAPTION "&Edit" STATE { || ::reg_nav0001("M0") } WHEN ::aContl[1]=0 ;
message "Edita Registro" ; //FOCUS { || ruben1("E") }
COLOR if(::jlopm1,::cBtnClr,::cBtnCl1) //colorset(C_MENU_SELECTED,.T.)

No se si esta condicion se puede colocar ::reg_nav0001("S0") } WHEN ::aContl[1]=0 en el :Activate de wvgPushButton()

oThisButton:Activate := { || ::reg_nav0001("S0") }
Ruben Dario
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 115
Data de registro: 14 Jun 2015 23:19
Cidade/Estado: Colombia
Curtiu: 3 vezes
Mens.Curtidas: 0 vez

Ayuda con wvgPushButton()

Mensagempor JoséQuintas » 03 Jan 2020 12:05

Sem saber o que faz a rotina, ou o que tem na tela, fica impossível responder.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Ayuda con wvgPushButton()

Mensagempor Ruben Dario » 11 Jan 2020 18:16

Saludos al Forum

Como Ejecuto esta Instruccion, no me funciona

cComExec := 'iif(::aContl[1]=1,::reg_nav0001("S0")," ")'
oThisButton:Activate := { || cComExec }
Ruben Dario
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 115
Data de registro: 14 Jun 2015 23:19
Cidade/Estado: Colombia
Curtiu: 3 vezes
Mens.Curtidas: 0 vez

Ayuda con wvgPushButton()

Mensagempor JoséQuintas » 11 Jan 2020 19:20

Ruben Dario escreveu:Como Ejecuto esta Instruccion, no me funciona
cComExec := 'iif(::aContl[1]=1,::reg_nav0001("S0")," ")'
oThisButton:Activate := { || cComExec }


Talvez assim:
bCode := { || iif( ::aCont[ 1 ] == 1, ::reg_Nav0001( "SO" ), NIL ) }
OThisButton:Activate := bCode
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Ayuda con wvgPushButton()

Mensagempor Ruben Dario » 29 Jan 2020 19:38

Saludos

Si me funciona de esta manera ,
Hay un DO donde lo ejecuta en forma infinita, la unica manera que lo controla es el
nKey := Inkey(0)
::cOption := Chr( nKey )

pero si coloco el Key := Inkey(0)
cuando lo ejecuto solamente se hace ejecto cuando muevo el puntero de maus.
si lo quito Key := Inkey(0) funciona, el problema es que ejecuta el siglo de DO.

      nCol := cpos+1  //nCol := 1
      FOR nCont = 1 TO Len( ::acButtons )
       //msginfo(::acButtons[ nCont ])
         oThisButton := wvgPushButton():New()
         oThisButton:PointerFocus := .f.
         oThisButton:Caption := ::IconFromCapt( ::acButtons[ nCont ], @cComExec,  @cToolTip) //oThisButton:Caption := IconFromCaption( ::acButtons[ nCont ], @cToolTip )
         //oThisButton:Create( , , { -1, iif( nCol == 0, -0.1, -nCol ) }, { -3, -5 } )  // { -1, iif( nCol == 0, -0.1, -nCol ) }, { -3, -5 } )
         oThisButton:Create( , , { -(pos-0.8), iif( nCol == 0, -0.1, -nCol ) }, { -2, -4 } )
         oThisButton:ToolTipText := cToolTip 
        cComExec := { || iif(::aContl[1]=0,::reg_nav0001("S0")," ") } 
         oThisButton:Activate :=  cComExec   
           
         Aadd( ::aGuiButtons, oThisButton )
         nCol += 5
      NEXT
      ::GuiShow()
      RETURN NIL

METHOD GUISelect()
      LOCAL nKey
     
      nKey := Inkey(0) 
      ::cOption := Chr( nKey ) 
.......

      RETURN NIL

Ruben Dario
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 115
Data de registro: 14 Jun 2015 23:19
Cidade/Estado: Colombia
Curtiu: 3 vezes
Mens.Curtidas: 0 vez

Ayuda con wvgPushButton()

Mensagempor JoséQuintas » 29 Jan 2020 19:47

Ruben Dario escreveu:Si me funciona de esta manera ,
Hay un DO donde lo ejecuta en forma infinita, la unica manera que lo controla es el
nKey := Inkey(0)
::cOption := Chr( nKey )
pero si coloco el Key := Inkey(0)
cuando lo ejecuto solamente se hace ejecto cuando muevo el puntero de maus.
si lo quito Key := Inkey(0) funciona, el problema es que ejecuta el siglo de DO.


Talvez mais simples agrupar tudo na mesma maneira e usar Inkey(0) sempre.

DO WHILE .T.
   // tela/botões
   Inkey(0)
   DO CASE
   CASE nKey == KeyButtom
      IF ::aCont1[ 1 ] := 0
        ::Reg_Nav001( "SO" )
    ENDIF
   ENDCASE


Sem conhecer a rotina completa, fica difícil imaginar o que pode estar acontecendo.
Se puder fazer um fonte simples mostrando o problema, podemos verificar qual a melhor saída.

Importante:
Se configurar para o Inkey() detectar também movimento do mouse, isso atrapalha, e geralmente não precisa disso.

SET EVENTMASK TO INKEY_ALL - INKEY_MOVE
nKey := Inkey( 0, INKEY_ALL - INKEY_MOVE )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro