Página 1 de 1
Ayuda con wvgPushButton()
Enviado: 02 Jan 2020 17:40
por Ruben Dario
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.
Código: Selecionar todos
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") }
Ayuda con wvgPushButton()
Enviado: 02 Jan 2020 19:33
por JoséQuintas
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:
Código: Selecionar todos
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.
Ayuda con wvgPushButton()
Enviado: 02 Jan 2020 19:38
por JoséQuintas
Não se esqueça que pode usar o WITH OBJECT
Código: Selecionar todos
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 ::
Ayuda con wvgPushButton()
Enviado: 02 Jan 2020 19:43
por JoséQuintas
Só mais um detalhe:
Código: Selecionar todos
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.
Ayuda con wvgPushButton()
Enviado: 02 Jan 2020 23:07
por Ruben Dario
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") }
Ayuda con wvgPushButton()
Enviado: 03 Jan 2020 12:05
por JoséQuintas
Sem saber o que faz a rotina, ou o que tem na tela, fica impossível responder.
Ayuda con wvgPushButton()
Enviado: 11 Jan 2020 18:16
por Ruben Dario
Saludos al Forum
Como Ejecuto esta Instruccion, no me funciona
cComExec := 'iif(::aContl[1]=1,::reg_nav0001("S0")," ")'
oThisButton:Activate := { || cComExec }
Ayuda con wvgPushButton()
Enviado: 11 Jan 2020 19:20
por JoséQuintas
Ruben Dario escreveu:Como Ejecuto esta Instruccion, no me funciona
cComExec := 'iif(::aContl[1]=1,::reg_nav0001("S0")," ")'
oThisButton:Activate := { || cComExec }
Talvez assim:
Código: Selecionar todos
bCode := { || iif( ::aCont[ 1 ] == 1, ::reg_Nav0001( "SO" ), NIL ) }
OThisButton:Activate := bCode
Ayuda con wvgPushButton()
Enviado: 29 Jan 2020 19:38
por Ruben Dario
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.
Código: Selecionar todos
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
Ayuda con wvgPushButton()
Enviado: 29 Jan 2020 19:47
por JoséQuintas
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.
Código: Selecionar todos
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 )