Make a dialog never lost focus
-
- Posts: 16
- Joined: Mon Jan 13, 2014 8:37 pm
Make a dialog never lost focus
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 ?
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 ?
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Make a dialog never lost focus
You may try this:
oDlg:bLostFocus := { || oDlg:SetFocus() }
oDlg:bLostFocus := { || oDlg:SetFocus() }
-
- Posts: 16
- Joined: Mon Jan 13, 2014 8:37 pm
Re: Make a dialog never lost focus
I already tried. And it doesn't work.Antonio Linares wrote:You may try this:
oDlg:bLostFocus := { || oDlg:SetFocus() }
My app is running in tray, and when I get a command, the app show a dialog and this dialog cannot lost the focus.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Make a dialog never lost focus
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 ?
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 ?
-
- Posts: 16
- Joined: Mon Jan 13, 2014 8:37 pm
Re: Make a dialog never lost focus
How can I capture the mouse ??
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Make a dialog never lost focus
Francisco,
oDlg:Capture()
oDlg:Capture()
-
- Posts: 16
- Joined: Mon Jan 13, 2014 8:37 pm
Re: Make a dialog never lost focus
Don't work. Capture the mouse neither the STYLE DS_SYSMODALAntonio Linares wrote:Francisco,
oDlg:Capture()
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
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Make a dialog never lost focus
Francisco,
Why don't you want it to never loose focus ?
What is that usefull for ?
Why don't you want it to never loose focus ?
What is that usefull for ?
-
- Posts: 16
- Joined: Mon Jan 13, 2014 8:37 pm
Re: Make a dialog never lost focus
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?
Any other idea?
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Make a dialog never lost focus
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 ?
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 ?
-
- Posts: 16
- Joined: Mon Jan 13, 2014 8:37 pm
Re: Make a dialog never lost focus
![Image](http://i.imgur.com/Ez16dFm.jpg?1)
This is my app. The app run in tray, and in a command it opens a dialog.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Make a dialog never lost focus
Are you using STYLE DS_SYSMODAL to create it ?
-
- Posts: 16
- Joined: Mon Jan 13, 2014 8:37 pm
Re: Make a dialog never lost focus
Yes.Antonio Linares wrote:Are you using STYLE DS_SYSMODAL to create it ?
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.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Make a dialog never lost focus
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
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
-
- Posts: 16
- Joined: Mon Jan 13, 2014 8:37 pm
Re: Make a dialog never lost focus
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.
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.