Página 1 de 1

DIALOG

Enviado: 25 Nov 2008 11:36
por clebervn
Tenho um form DIALOG, como faço pra controlar as teclas pressionadas, por exemplo, teclo ESC num form e ele dar foco no primeiro campo, mas se estiver ja no primeiro campo ai sim fecha o form.

Re: DIALOG

Enviado: 25 Nov 2008 15:02
por esbasso
Não ha necessidade de controlar as teclas pressionadas. Para o FORM não fechar com ESC COLOCA NOEXITESC
pARA AVNÇAR OS CAMPOS COM ENTER COLOQUE CLIPPER

INIT DIALOG oform TITLE "Form1" ;
AT 272,89 SIZE 432,259 NOEXITESC ;
STYLE WS_POPUP+WS_CAPTION+DS_CENTER +WS_SYSMENU+WS_SIZEBOX

Re: DIALOG

Enviado: 25 Nov 2008 18:32
por Toledo
clebervn, compile este pequeno exemplo e veja se é isto que você quer.

Código: Selecionar todos

#include "windows.ch"
#include "guilib.ch"

Function Main
Private oDlg1, vGet1:=space(10), vGet2:=space(10)

INIT DIALOG oDlg1 CLIPPER NOEXITESC TITLE "Exemplo Dialog" AT 200,200 SIZE 300,160

SET KEY 0,27 TO SairDlg()

@ 10,10 Say "Campo 1" Size 90,22
@ 10,32 Get oGet1 VAR vGet1 ID 101 Picture "XXXXXXXXXX" Size 200,25 
@ 10,57 Say "Campo 2" Size 90,22
@ 10,79 Get oGet2 VAR vGet2 ID 102 Picture "XXXXXXXXXX" Size 200,25 

@  100,115 BUTTON "Sair" SIZE 100, 32 ON CLICK {|| EndDialog()}

ACTIVATE DIALOG oDlg1

Return Nil

Function SairDlg()
nID:=GetDlgCtrlId(GetFocus())
if nID=101         //se ID = primeiro GET
 EndDialog()       //Fecha Dialog
else
 oGet1:setfocus()  //vai para primeiro GET
endif
Return Nil
Abraços,