Page 1 of 2
Make a dialog never lost focus
Posted: Thu Jul 31, 2014 5:52 pm
by Francisco Valério
Hey
I need to make a dialog that never lost focus, if I click out the dialog, I need the dialog got focus again.
How can I do this ?
Re: Make a dialog never lost focus
Posted: Thu Jul 31, 2014 6:29 pm
by Antonio Linares
You may try this:
oDlg:bLostFocus := { || oDlg:SetFocus() }
Re: Make a dialog never lost focus
Posted: Thu Jul 31, 2014 7:22 pm
by Francisco Valério
Antonio Linares wrote:You may try this:
oDlg:bLostFocus := { || oDlg:SetFocus() }
I already tried. And it doesn't work.
My app is running in tray, and when I get a command, the app show a dialog and this dialog cannot lost the focus.
Re: Make a dialog never lost focus
Posted: Fri Aug 01, 2014 1:09 am
by Antonio Linares
A possible solution is to use the dialog style DS_SYSMODAL:
DEFINE DIALOG oDlg STYLE DS_SYSMODAL
http://msdn.microsoft.com/en-us/library ... s.85).aspx
Though as the Microsoft docs specify, the user may select another window.
Have you considered to disable all other running apps windows ? Another choice is to capture the mouse.
What controls do you have on such dialog ?
Re: Make a dialog never lost focus
Posted: Fri Aug 01, 2014 2:02 pm
by Francisco Valério
How can I capture the mouse ??
Re: Make a dialog never lost focus
Posted: Fri Aug 01, 2014 2:53 pm
by Antonio Linares
Francisco,
oDlg:Capture()
Re: Make a dialog never lost focus
Posted: Fri Aug 01, 2014 8:05 pm
by Francisco Valério
Antonio Linares wrote:Francisco,
oDlg:Capture()
Don't work. Capture the mouse neither the STYLE DS_SYSMODAL
Here is my code. It's a normal dialog and I need that the dialog never lost focus.
Code: Select all
function SelecionaFormaDePagamento( )
local oFonte, oFonte2, oDialog, oLabel, nFormaSelecionada, hButton := HB_Hash()
Define Font oFonte Name 'Arial' Size -0,20 bold
Define Font oFonte2 Name 'Arial Black' Size -0,22// bold
Define dialog oDialog resource "SELECIONADEBCRE" title "Gerenciador TEF -- PAGAMENTO" font oFonte
oDialog:lTransparent := !IsAppThemed()
redefine say oLabel id 5001 of oDialog color CLR_HRED ,CLR_WHITE font oFonte2
redefine buttonbmp hButton['CartaoDebito' ] bitmap "CARTAO" id 6001 of oDialog action( nFormaSelecionada := CARTAO_DEBITO_A_VISTA , oDialog:End() ) textright
redefine buttonbmp hButton['CartaoCredito'] bitmap "CARTAO" id 6002 of oDialog action( AcaoBotaoCredito( @nFormaSelecionada, oDialog ) ) textright
redefine buttonbmp hButton['Encerrar' ] bitmap "M_EXIT" id 6003 of oDialog action( oDialog:End() ) textright
oDialog:lHelpIcon := .f.
oDialog:bKeyDown := {| nKey | FuncaoTeclas( nKey, hButton ) }
activate dialog oDialog centered on init ( OnInit( oLabel, oDialog ) )
oFonte:End()
oFonte2:End()
return nFormaSelecionada
/******************************************************************************/
static procedure OnInit( oLabel, oDialog )
oLabel:SetText(CRLF+'Escolha a opcao desejada.')
oLabel:lTransparent := .f.
oLabel:SetColor( CLR_HRED ,CLR_WHITE )
ForcaJanelaAparecer( oDialog )
oDialog:Capture()
return
/******************************************************************************/
static procedure AcaoBotaoCredito( nFormaSelecionada, oDialog )
if SelecionaCreditoAVistaOuPrazo( @nFormaSelecionada )
oDialog:End()
endif
return
/******************************************************************************/
static procedure FuncaoTeclas( nKey, hButton )
if nKey == 49
hButton['CartaoDebito' ]:Click()
elseif nKey == 50
hButton['CartaoCredito']:Click()
elseif nKey == VK_F11
hButton['Encerrar' ]:Click()
endif
return
Re: Make a dialog never lost focus
Posted: Fri Aug 01, 2014 9:12 pm
by Antonio Linares
Francisco,
Why don't you want it to never loose focus ?
What is that usefull for ?
Re: Make a dialog never lost focus
Posted: Mon Aug 04, 2014 2:23 pm
by Francisco Valério
It's an app business rule. The app is a payment system that works with credit card, and when I request to pay with the card, no other app can take the focus. So I need the dialog never lost focus.
Any other idea?
Re: Make a dialog never lost focus
Posted: Mon Aug 04, 2014 2:31 pm
by Antonio Linares
Francisco,
I can not understand why STYLE DS_SYSMODAL does not work for you
Are you able to click on other apps meanwhile it is shown ?
Re: Make a dialog never lost focus
Posted: Mon Aug 04, 2014 4:59 pm
by Francisco Valério
This is my app. The app run in tray, and in a command it opens a dialog.
Re: Make a dialog never lost focus
Posted: Mon Aug 04, 2014 5:10 pm
by Antonio Linares
Are you using STYLE DS_SYSMODAL to create it ?
Re: Make a dialog never lost focus
Posted: Mon Aug 04, 2014 5:27 pm
by Francisco Valério
Antonio Linares wrote:Are you using STYLE DS_SYSMODAL to create it ?
Yes.
I only change:
Define dialog oDialog resource "SELECIONADEBCRE" title "Gerenciador TEF -- PAGAMENTO" font oFonte
to
Define dialog oDialog resource "SELECIONADEBCRE" title "Gerenciador TEF -- PAGAMENTO" font oFonte STYLE DS_SYSMODAL
Is it right? But it don't work too.
Re: Make a dialog never lost focus
Posted: Mon Aug 04, 2014 5:41 pm
by Antonio Linares
Ok, I think I know how you may do it:
You may need to "cover" the entire desktop with a transparent dialog and then on top of it, place yours.
Today I am tired (I have been working many hours). I may help you later on or tomorrow, thanks
Re: Make a dialog never lost focus
Posted: Tue Aug 05, 2014 4:52 pm
by Francisco Valério
But will it work when the user press ALT+TAB ?
I'm working in another features in my app. Later I'll come back to the focus problem. But if you think in any solucion please tell me.