como configurar foco no textbox?
Moderador: Moderadores
-
pena
- Usuário Nível 3

- Mensagens: 331
- Registrado em: 06 Jul 2004 18:08
- Localização: CACHOEIRA DO SUL-RS
como configurar foco no textbox?
Bom dia pessoal, seguinte, quando usamos o enter ou o tab para mudar de campo entre textbox a coisa flui normalmente, ou seja, vc inicializou uma variavel e disse que ela seria zero, no momento em que cai no textbox, ele tipo seleciona todo campo e vc digita qq numero que ira substituir o zero, porem se ir com o mouse ate o textbox, ele não seleciona todo conteudo, vc clica no textbox e fica o zero la, e quando vai digitar por exemplo o 1, ao sair do campo fica 10, como resolver isso?
var:= 0
DEFINE TEXTBOX T_tcredito
ROW 140
COL 595
WIDTH 120
HEIGHT 24
INPUTMASK "999,999.99"
NUMERIC .T.
VALUE var
END TEXTBOX
var:= 0
DEFINE TEXTBOX T_tcredito
ROW 140
COL 595
WIDTH 120
HEIGHT 24
INPUTMASK "999,999.99"
NUMERIC .T.
VALUE var
END TEXTBOX
como configurar foco no textbox?
:-O
Esse é um problema me parece ter sido herdado do excel ou coisa parecida, então se for apontar o mouse para um textbox oriento os clientes a selecionar o campo e NÃO clicar lá dentro em qualquer lugar, se selecionar e digitar fica valendo o que digitar se clicar o valor que estiver no campo ficará lá juntando ao que digitar fazenfo um 1 + 0 = 10 ok.
Hasa

Esse é um problema me parece ter sido herdado do excel ou coisa parecida, então se for apontar o mouse para um textbox oriento os clientes a selecionar o campo e NÃO clicar lá dentro em qualquer lugar, se selecionar e digitar fica valendo o que digitar se clicar o valor que estiver no campo ficará lá juntando ao que digitar fazenfo um 1 + 0 = 10 ok.
Hasa
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
como configurar foco no textbox?
Pois é... esse efeito que causa ao clicar dentro do TEXT_BOX dependendo a posição, pode gerar um resultado indesejável. Quando isso acontecia num GET no Clipper era fácil manipular o objeto, eu as vezes dava um KEYBOARD CHR(25) que simula um Ctrl Y (apaga conteúdo) e posicionava-me no primeiro lugar do GET COM OUTRO KEYBOARD CHR(1) que aciona a tecla Home. Tentei fazer esta simulação chamando uma função própria através do GETFOCUS e acionando KEYBOARD mas nenhuma tecla foi produzida. Talvez algo possa ser feito em C como neste exemplo que serve pra ler o teclado mas teria quer ser para enviar uma tecla como se fosse pressionado (um SET).
Código: Selecionar todos
****************************************************************************
* PROGRAMA: READ THE KEYBOARD
* LENGUAJE: HARBOUR-MINIGUI 3.0.29
* FECHA: 13 ABRIL 2010
* AUTOR: CLAUDIO SOTO
* PAIS: URUGUAY
* E-MAIL: srvet@adinet.com.uy
****************************************************************************
#include "minigui.ch"
FUNCTION MAIN
foco := ""
DEFINE WINDOW frmMain ;
AT 0,0 ;
WIDTH 400 ;
HEIGHT 400 ;
TITLE "VENTANA A" ;
MAIN;
ON GOTFOCUS {|| foco := "A"}
@ 10 , 10 LABEL Label_1 VALUE "PRESIONE: A, B, C, Z o alguna otra tecla" AUTOSIZE
* MUY IMPORTANTE *********************************
INSTALL_READ_KEYBOARD () // <=== Instala el manejador del teclado, esto solo lo que
// hace es almacenar en una varibale la tecla presionada
// y GET_LAST_VK() devuelve el valor de dicha variable.
DEFINE TIMER timer_1 INTERVAL 100 ACTION _EvalKeyPress( ) // <== Esto es lo que llama la funcion que procesa las teclas
**************************************************
END WINDOW
frmMain.CENTER
frmMain.ACTIVATE
RETURN
PROCEDURE _EvalKeyPress( )
LOCAL nKeyPress := GET_LAST_VK( )
If ( nKeyPress >= 65 .AND. nKeyPress <= 90 )
* MUY IMPORTANTE *********************************************
PAUSE_READ_VK (.T.) // pausa la lectura del teclado para procesar la tecla presionada
frmMain.Timer_1.Enabled := .F.
**************************************************************
DO CASE
CASE nKeyPress = 65
frmMain.setfocus
CASE nKeyPress = 66
Ventana2 ()
CASE nKeyPress = 67
Ventana3 ()
CASE nKeyPress = 90
MsgBox ("El Foco lo tiene la ventana: "+ foco)
OTHERWISE
MsgBox( "La tecla oprimida se encuentra en el rango","Test..." )
ENDCASE
* MUY IMPORTANTE **************************************************
frmMain.Timer_1.Enabled := .T.
PAUSE_READ_VK (.F.) // restablece la lectura del teclado luego de la pausa
*******************************************************************
Endif
RETURN
Procedure Ventana2
if IsWindowDefined (Vent2) = .F.
DEFINE WINDOW Vent2 ;
AT 0,0 ;
WIDTH 400 ;
HEIGHT 400 ;
TITLE "VENTANA B" ;
CHILD;
ON GOTFOCUS {|| foco := "B"}
END WINDOW
* MUY IMPORTANTE **** SIEMPRE ANTES DEL ACTIVE WINDOW*********
frmMain.Timer_1.Enabled := .T.
PAUSE_READ_VK (.F.) // restablece la lectura del teclado
**************************************************************
vent2.ACTIVATE
ELSE
vent2.setfocus
ENDIF
Return
Procedure Ventana3
if IsWindowDefined (Vent3) = .F.
DEFINE WINDOW Vent3 ;
AT 100,100 ;
WIDTH 400 ;
HEIGHT 400 ;
TITLE "VENTANA C" ;
CHILD;
ON GOTFOCUS {|| foco := "C"}
END WINDOW
* MUY IMPORTANTE **** SIEMPRE ANTES DEL ACTIVE WINDOW*********
frmMain.Timer_1.Enabled := .T.
PAUSE_READ_VK (.F.) // restablece la lectura del teclado
**************************************************************
vent3.ACTIVATE
ELSE
vent3.setfocus
ENDIF
Return
*#########################################################################################################################
* FUNCIONES EN C
*#########################################################################################################################
#pragma begindump
#include <windows.h>
#include "hbapi.h"
BOOL flag_hhk = FALSE;
BOOL PAUSE_hhk = FALSE;
HHOOK hhk = NULL;
long VK_PRESIONADO = 0;
LONG VK_lParam = 0;
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode < 0)
return CallNextHookEx(hhk, nCode, wParam, lParam);
if (PAUSE_hhk == FALSE)
{ VK_PRESIONADO = (long) wParam;
VK_lParam = (LONG) lParam;
}
else
{ VK_PRESIONADO = 0;
VK_lParam = 0;
}
return CallNextHookEx(hhk, nCode, wParam, lParam);
}
HB_FUNC (GET_STATE_VK_SHIFT)
{
if (GetKeyState(VK_SHIFT) & 0x8000)
hb_retl (TRUE);
else
hb_retl (FALSE);
}
HB_FUNC (GET_STATE_VK_CONTROL)
{
if (GetKeyState(VK_CONTROL) & 0x8000)
hb_retl (TRUE);
else
hb_retl (FALSE);
}
HB_FUNC (GET_STATE_VK_ALT)
{
if (GetKeyState(VK_MENU) & 0x8000)
hb_retl (TRUE);
else
hb_retl (FALSE);
}
HB_FUNC (GET_LAST_VK)
{ if (flag_hhk == TRUE)
hb_retnl (VK_PRESIONADO);
else
hb_retnl (0);
}
HB_FUNC (GET_LAST_VK_NAME)
{ CHAR cadena [128];
if (flag_hhk == TRUE)
{ GetKeyNameText (VK_lParam, (LPTSTR) &cadena, 128);
hb_retc (cadena);
}
else
hb_retc ("");
}
HB_FUNC (PAUSE_READ_VK)
{ if (hb_pcount () == 1 && hb_parinfo (1) == HB_IT_LOGICAL)
{ if (hb_parl (1) == TRUE)
{ VK_PRESIONADO = 0;
VK_lParam = 0;
}
PAUSE_hhk = hb_parl (1);
}
}
HB_FUNC (INSTALL_READ_KEYBOARD)
{ if (flag_hhk == FALSE)
{ hhk = SetWindowsHookEx (WH_KEYBOARD, KeyboardProc, (HINSTANCE) NULL, GetCurrentThreadId());
if (hhk == NULL)
hb_retl (FALSE);
else
{ flag_hhk = TRUE;
hb_retl (TRUE);
}
}
else
hb_retl (TRUE);
}
HB_FUNC (UNINSTALL_READ_KEYBOARD)
{ if (flag_hhk == TRUE)
{ if (UnhookWindowsHookEx (hhk) == TRUE)
{ flag_hhk = FALSE;
hb_retl (TRUE);
}
else
hb_retl (FALSE);
}
else
hb_retl (TRUE);
}
#pragma enddumpUm clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
como configurar foco no textbox?
:-O
É verdade, agora vamos aguardar tem feras no forum que até podem fazer isso, eu infelizmente não tenho conhecimento para tanto, ok
:%
Hasa
É verdade, agora vamos aguardar tem feras no forum que até podem fazer isso, eu infelizmente não tenho conhecimento para tanto, ok
:%
Hasa
como configurar foco no textbox?
Olá,
Teste isso:
Teste isso:
Código: Selecionar todos
var:= 0
DEFINE TEXTBOX T_tcredito
ROW 140
COL 595
WIDTH 120
HEIGHT 24
INPUTMASK "999,999.99"
NUMERIC .T.
VALUE var
ON GOTFOCUS {||LimparCampo()}
END TEXTBOX
FUNCTION LimparCampo
nHandle := GetControlHandle( 'Text_1', 'test' )
CLEAR_TEXT( nHandle )
RETURN Nil
#pragma BEGINDUMP
#include <windows.h>
#include "hbapi.h"
/*
Clear_Text( nHandle )
*/
HB_FUNC( CLEAR_TEXT )
{
SetFocus( (HWND) hb_parnl( 1 ) );
SendMessage( ( HWND ) hb_parnl( 1 ), WM_CLEAR, 0 , 0 );
}
/*
Paste_Text( nHandle )
Paste text from the clipboard into the window
*/
HB_FUNC( PASTE_TEXT )
{
SetFocus( ( HWND ) hb_parnl( 1 ) );
SendMessage( ( HWND ) hb_parnl( 1 ), WM_PASTE, 0 , 0 );
}
#pragma ENDDUMP►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
como configurar foco no textbox?
Yeahhh ! Obrigado Simões ! Essa pode ser uma boa idéia, claro que a função pode ser melhorada, imaginemos que ao clicar novamente no Text_Box tenha apagado o seu conteúdo anterior e deseja sair sem alterar, podendo restaurar seu valor ao pressionar ESC para sair do focus. Compilei o seu exemplo e deixei a função mais flexivel assim serveria para outros campos.
Ficou legal e parabéns colega pela sua idéia.
Código: Selecionar todos
#include <hmg.ch>
Function Main
var1:= 0 ; var2:= 0
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 640 ;
HEIGHT 480 ;
TITLE 'Hello World!' ;
MAIN
DEFINE TEXTBOX Text_1
ROW 140
COL 195
WIDTH 120
HEIGHT 24
INPUTMASK "999,999.99"
NUMERIC .T.
VALUE var1
ON GOTFOCUS {||LimparCampo()}
END TEXTBOX
DEFINE TEXTBOX Text_2
ROW 240
COL 195
WIDTH 120
HEIGHT 24
INPUTMASK "999,999.99"
NUMERIC .T.
VALUE var2
ON GOTFOCUS {||LimparCampo()}
END TEXTBOX
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
Return Nil
FUNCTION LimparCampo()
nHandle := GetControlHandle( This.Name,ThisWindow.Name )
CLEAR_TEXT( nHandle )
RETURN Nil
#pragma BEGINDUMP
#include <windows.h>
#include "hbapi.h"
/*
Clear_Text( nHandle )
*/
HB_FUNC( CLEAR_TEXT )
{
SetFocus( (HWND) hb_parnl( 1 ) );
SendMessage( ( HWND ) hb_parnl( 1 ), WM_CLEAR, 0 , 0 );
}
/*
Paste_Text( nHandle )
Paste text from the clipboard into the window
*/
HB_FUNC( PASTE_TEXT )
{
SetFocus( ( HWND ) hb_parnl( 1 ) );
SendMessage( ( HWND ) hb_parnl( 1 ), WM_PASTE, 0 , 0 );
}
#pragma ENDDUMPUm clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
como configurar foco no textbox?
Pensando bem... isto iria demandar um monte de código e não sei se iria ficar bem isso. De todas formas, temos que deixar de lado o antigo conceito comportamental, pois as aplicações GUI não ficam monitorando as teclas pressionadas como era feito no Clipper, então o usuário também terá que fazer a sua parte e aceitar um novo conceito.Eu escreveu:Text_Box tenha apagado o seu conteúdo anterior e deseja sair sem alterar, podendo restaurar seu valor ao pressionar ESC para sair do focus
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
como configurar foco no textbox?
O código pode ser melhorado.
Código: Selecionar todos
Function Main
PRIVATE nLastValue:=0, nVar1:=0, nVar2:=0
DEFINE WINDOW Form_1 ;
AT 0,0 ;
WIDTH 640 ;
HEIGHT 480 ;
TITLE 'Hello World!' ;
MAIN
DEFINE TEXTBOX Text_1
ROW 140
COL 195
WIDTH 120
HEIGHT 24
INPUTMASK "999,999.99"
NUMERIC .T.
VALUE nVar1
ON GOTFOCUS {||LimparCampo()}
ON LOSTFOCUS {||nVar1:=This.Value}
END TEXTBOX
DEFINE TEXTBOX Text_2
ROW 240
COL 195
WIDTH 120
HEIGHT 24
INPUTMASK "999,999.99"
NUMERIC .T.
VALUE nVar2
ON GOTFOCUS {||LimparCampo()}
ON LOSTFOCUS {||nVar2:=This.Value}
END TEXTBOX
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
Return Nil
FUNCTION UndoCampo(cCampo,cJanela)
IF cCampo = "Text_1"
Form_1.Text_1.Value:=nVar1
Form_1.Text_1.SetFocus
ELSE
Form_1.Text_2.Value:=nVar2
Form_1.Text_2.SetFocus
ENDIF
RETURN .T.
FUNCTION LimparCampo
Local cFrmName:=thiswindow.name, cObjName:=This.Name
nHandle:=GetControlHandle( This.Name,ThisWindow.Name )
CLEAR_TEXT( nHandle )
ON KEY ESCAPE OF &cFrmName ACTION UndoCampo(cObjName,cFrmName)
RETURN Nil
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
como configurar foco no textbox?
Ficou jóia ! Parabéns !
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
