Página 1 de 1

SetFocus nao obdece num form novo

Enviado: 11 Dez 2016 12:54
por rubens
Bom dia...

Estou com um problema, talvez seja algum erro de conceito, mas vamos lá..
Em outa ocasião eu cheguei a postar alguma coisa mas preciso entender o que ocorre senão vou ficar perdendo tempo com isso..

Quando vou abrir/ativar um novo form e quero que o foco seja posicionado em determinado Text.
Já tentei
Incluir.Text_2.SetFocus
DoMethod( "Incluir","Text_2",'SetFocus")
e nada ele sempre ativa o form no primeiro objeto no meu caso no Text_1
Se uso qualquer um desses no Evento on Init do form, abre belezinha.
O que pode ser? O que tá faltando?

A Função é essa:

Código: Selecionar todos

   ********************************************************************************  
/*  
 * Incluir/Alterar Produtos na comprar por xml  
 * 06/12/2016 - 16:35:45  
 */  
Static Function Incluir()  

	Private lIncluir := Empty( Icomt->CodGru_)
	Private cTitulo 
  
	Load Window FORMS\PRODUTOS_INCLUIR as Incluir
	
	If lIncluir
	
		cTitulo 	:= 'Inclusao de produtos'
		nMargem_ := Pers->Margem
		nUnidade := 1  // UN-UNIDADE
		nGrupo	:= 1  // Diversos
		SetProperty( 'Incluir','Label_5','Value','Inclusão')		
	
	Else
	
		cTitulo 	:= 'Alteração de produtos'
		nMargem_ :=  CalcPor( Icomt->Prvenda_, Icomt->Valor_ )
		SetProperty( 'Incluir','Label_5','Value','Alteração')
		
		DbSelectArea( 'un')
		DbGoTop()
		If DbSeek( Icomt->Und_ )
			nUnidade := Un->( RecNo() )
		Else
			nUnidade := 1
		EndIf
	
	   DbSelectArea('gru')
	   DbGoTop()
		If DbSeek( Icomt->CodGru_ )	
			nGrupo := Gru->( RecNo() )
		Else
			nGrupo := 1
		EndIf
			
	Endif
	
	SetProperty( 'Incluir','Text_2' 		,'Value', Icomt->Nompro_)
	SetProperty( 'Incluir','Text_6' 		,'Value', Icomt->Qtde_  )
	SetProperty( 'Incluir','Text_7' 		,'Value', Icomt->Valor_ )
	SetProperty( 'Incluir','Text_8' 		,'Value', nMargem_ 		)
	SetProperty( 'Incluir','Text_9' 		,'Value', Icomt->Prvenda_ )
	SetProperty( 'Incluir','Combo_1'		,'Value', nUnidade		)	
	SetProperty( 'Incluir','Combo_2'		,'Value', nGrupo 			)	
	SetProperty( 'Incluir','CBExMudar'	,'Value', 2 				)	
	SetProperty( 'Incluir','CBExObs'		,'Value', 2 				)	
	
	Incluir.Col := 200
	Incluir.Text_2.SetFocus
	Incluir.Center
	Incluir.Activate

Return nil 
Todos os outro comandos funcionam, mas o Incluir.Text_2.SetFocus, nem com reza... Antes do Incluir.Text_2.SetFocus eu coloquei também um Incluir.Col := 200 para mudar a posição inicial da Janela que também só funciona se colocar no oninit.

O Formulário que está sendo carregado é esse:

Código: Selecionar todos

*HMGS-MINIGUI-IDE Two-Way Form Designer Generated Code
*OPEN SOURCE PROJECT 2005-2016 Walter Formigoni http://sourceforge.net/projects/hmgs-minigui/

DEFINE WINDOW TEMPLATE AT 265 , 539 WIDTH 651 HEIGHT 455 VIRTUAL WIDTH NIL VIRTUAL HEIGHT NIL TITLE cTitulo ICON NIL MODAL NOSIZE CURSOR NIL ON INIT NIL ON RELEASE NIL ON INTERACTIVECLOSE NIL ON MOUSECLICK NIL ON MOUSEDRAG NIL ON MOUSEMOVE NIL ON MOVE NIL ON DROPFILES NIL ON SIZE NIL ON PAINT NIL BACKCOLOR NIL ON GOTFOCUS NIL ON LOSTFOCUS NIL ON SCROLLUP NIL ON SCROLLDOWN NIL ON SCROLLLEFT NIL ON SCROLLRIGHT NIL ON HSCROLLBOX NIL ON VSCROLLBOX NIL

     DEFINE LABEL Label_5
            ROW    30
            COL    400
            WIDTH  284
            HEIGHT 61
            VALUE ""
            FONTNAME "Arial"
            FONTSIZE 28
            TOOLTIP ""
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            HELPID NIL
            VISIBLE .T.
            TRANSPARENT .T.
            ACTION NIL
            ONMOUSEHOVER NIL
            ONMOUSELEAVE NIL
            AUTOSIZE .T.
            BACKCOLOR NIL
            FONTCOLOR {255,0,0}
     END LABEL  

     DEFINE LABEL Label_1
            ROW    10
            COL    12
            WIDTH  125
            HEIGHT 24
            VALUE "Código"
            FONTNAME "Arial"
            FONTSIZE 14
            TOOLTIP ""
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            HELPID NIL
            VISIBLE .T.
            TRANSPARENT .F.
            ACTION NIL
            ONMOUSEHOVER NIL
            ONMOUSELEAVE NIL
            AUTOSIZE .F.
            BACKCOLOR NIL
            FONTCOLOR {0,0,255}
     END LABEL  

     DEFINE TEXTBOX Text_1
            ROW    41
            COL    12
            WIDTH  220
            HEIGHT 31
            FONTNAME 'Arial'
            FONTSIZE 20
            TOOLTIP "Deixe em branco para código próprio"
            ONCHANGE NIL
            ONGOTFOCUS NIL
            ONLOSTFOCUS NIL
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            ONENTER NIL
            HELPID NIL
            TABSTOP .T.
            VISIBLE .T.
            READONLY .T.
            RIGHTALIGN .F.
            UPPERCASE .T.
            MAXLENGTH 13
            BACKCOLOR {{255,255,255},{128,255,255},{128,255,255}}
            FONTCOLOR {0,0,255}
            INPUTMASK NIL
            FORMAT NIL
            VALUE ""
     END TEXTBOX 

     DEFINE TEXTBOX Text_2
            ROW    110
            COL    10
            WIDTH  612
            HEIGHT 24
            FONTNAME 'Arial'
            FONTSIZE 14
            TOOLTIP ""
            ONCHANGE NIL
            ONGOTFOCUS NIL
            ONLOSTFOCUS NIL
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            ONENTER NIL
            HELPID NIL
            TABSTOP .T.
            VISIBLE .T.
            READONLY .F.
            RIGHTALIGN .F.
            UPPERCASE .T.
            MAXLENGTH 50
            BACKCOLOR {{255,255,255},{0,0,255},{128,255,255}}
            FONTCOLOR {0,0,255}
            INPUTMASK NIL
            FORMAT NIL
            VALUE ""
     END TEXTBOX 

     DEFINE COMBOBOX Combo_1
            ROW    151
            COL    100
            WIDTH  116
            HEIGHT 250
            ITEMS {''}
            VALUE 1
            FONTNAME 'Arial'
            FONTSIZE 14
            TOOLTIP ''
            ONCHANGE NIL
            ONGOTFOCUS NIL
            ONLOSTFOCUS NIL
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            HELPID NIL
            TABSTOP .T.
            VISIBLE .T.
            SORT .F.
            ONENTER NIL
            ONDISPLAYCHANGE NIL
            DISPLAYEDIT .F.
            ITEMSOURCE UN->DESC
            VALUESOURCE UN->CODUN
            FONTCOLOR {0,0,255}
     END COMBOBOX  

     DEFINE LABEL Label_2
            ROW    80
            COL    12
            WIDTH  125
            HEIGHT 24
            VALUE "Descrição"
            FONTNAME "Arial"
            FONTSIZE 14
            TOOLTIP ""
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            HELPID NIL
            VISIBLE .T.
            TRANSPARENT .F.
            ACTION NIL
            ONMOUSEHOVER NIL
            ONMOUSELEAVE NIL
            AUTOSIZE .F.
            BACKCOLOR NIL
            FONTCOLOR {0,0,255}
     END LABEL  

     DEFINE LABEL Label_3
            ROW    151
            COL    10
            WIDTH  60
            HEIGHT 24
            VALUE "Unidade"
            FONTNAME "Arial"
            FONTSIZE 14
            TOOLTIP ""
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            HELPID NIL
            VISIBLE .T.
            TRANSPARENT .F.
            ACTION NIL
            ONMOUSEHOVER NIL
            ONMOUSELEAVE NIL
            AUTOSIZE .T.
            BACKCOLOR NIL
            FONTCOLOR {0,0,255}
     END LABEL  

     DEFINE LABEL Label_7
            ROW    200
            COL    10
            WIDTH  121
            HEIGHT 24
            VALUE "Quantidade"
            FONTNAME "Arial"
            FONTSIZE 14
            TOOLTIP ""
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            HELPID NIL
            VISIBLE .T.
            TRANSPARENT .F.
            ACTION NIL
            ONMOUSEHOVER NIL
            ONMOUSELEAVE NIL
            AUTOSIZE .F.
            BACKCOLOR NIL
            FONTCOLOR {0,0,255}
     END LABEL  

     DEFINE LABEL Label_8
            ROW    200
            COL    170
            WIDTH  118
            HEIGHT 24
            VALUE "Preço Custo"
            FONTNAME "Arial"
            FONTSIZE 14
            TOOLTIP ""
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            HELPID NIL
            VISIBLE .T.
            TRANSPARENT .F.
            ACTION NIL
            ONMOUSEHOVER NIL
            ONMOUSELEAVE NIL
            AUTOSIZE .F.
            BACKCOLOR NIL
            FONTCOLOR {0,0,255}
            RIGHTALIGN .T.
     END LABEL  

     DEFINE LABEL Label_9
            ROW    200
            COL    310
            WIDTH  147
            HEIGHT 24
            VALUE "Margem Lucro"
            FONTNAME "Arial"
            FONTSIZE 14
            TOOLTIP ""
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            HELPID NIL
            VISIBLE .T.
            TRANSPARENT .F.
            ACTION NIL
            ONMOUSEHOVER NIL
            ONMOUSELEAVE NIL
            AUTOSIZE .F.
            BACKCOLOR NIL
            FONTCOLOR {0,0,255}
     END LABEL  

     DEFINE LABEL Label_10
            ROW    200
            COL    500
            WIDTH  118
            HEIGHT 24
            VALUE "Preço Venda"
            FONTNAME "Arial"
            FONTSIZE 14
            TOOLTIP ""
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            HELPID NIL
            VISIBLE .T.
            TRANSPARENT .F.
            ACTION NIL
            ONMOUSEHOVER NIL
            ONMOUSELEAVE NIL
            AUTOSIZE .F.
            BACKCOLOR NIL
            FONTCOLOR {0,0,255}
            RIGHTALIGN .T.
     END LABEL  

     DEFINE LABEL Label_12
            ROW    270
            COL    500
            WIDTH  112
            HEIGHT 24
            VALUE "Obs Venda"
            FONTNAME "Arial"
            FONTSIZE 14
            TOOLTIP ""
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            HELPID NIL
            VISIBLE .T.
            TRANSPARENT .F.
            ACTION NIL
            ONMOUSEHOVER NIL
            ONMOUSELEAVE NIL
            AUTOSIZE .F.
            BACKCOLOR NIL
            FONTCOLOR {0,0,255}
            RIGHTALIGN .T.
     END LABEL  

     DEFINE TEXTBOX Text_6
            ROW    230
            COL    10
            WIDTH  120
            HEIGHT 24
            FONTNAME 'Arial'
            FONTSIZE 14
            TOOLTIP ""
            ONCHANGE NIL
            ONGOTFOCUS NIL
            ONLOSTFOCUS NIL
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            ONENTER Muda_Qtde( This.Value )
            HELPID NIL
            TABSTOP .T.
            VISIBLE .T.
            READONLY .F.
            RIGHTALIGN .F.
            BACKCOLOR {{255,255,255},{0,0,255},{128,255,255}}
            FONTCOLOR {0,0,255}
            INPUTMASK "9999.999"
            FORMAT NIL
            NUMERIC  .T.
            VALUE NIL
     END TEXTBOX 

     DEFINE TEXTBOX Text_7
            ROW    230
            COL    170
            WIDTH  120
            HEIGHT 24
            FONTNAME 'Arial'
            FONTSIZE 14
            TOOLTIP ""
            ONCHANGE NIL
            ONGOTFOCUS NIL
            ONLOSTFOCUS NIL
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            ONENTER NIL
            HELPID NIL
            TABSTOP .T.
            VISIBLE .T.
            READONLY .F.
            RIGHTALIGN .F.
            BACKCOLOR {{255,255,255},{0,0,255},{128,255,255}}
            FONTCOLOR {0,0,255}
            INPUTMASK "99,999.99"
            FORMAT "E"
            NUMERIC  .T.
            VALUE NIL
     END TEXTBOX 

     DEFINE TEXTBOX Text_8
            ROW    230
            COL    330
            WIDTH  120
            HEIGHT 24
            FONTNAME 'Arial'
            FONTSIZE 14
            TOOLTIP ""
            ONCHANGE NIL
            ONGOTFOCUS NIL
            ONLOSTFOCUS NIL
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            ONENTER Muda_Prvenda( This.Value )
            HELPID NIL
            TABSTOP .T.
            VISIBLE .T.
            READONLY .F.
            RIGHTALIGN .F.
            BACKCOLOR {{255,255,255},{0,0,255},{128,255,255}}
            FONTCOLOR {0,0,255}
            INPUTMASK "99,999.99"
            FORMAT "E"
            NUMERIC  .T.
            VALUE NIL
     END TEXTBOX 

     DEFINE TEXTBOX Text_9
            ROW    230
            COL    500
            WIDTH  120
            HEIGHT 24
            FONTNAME 'Arial'
            FONTSIZE 14
            TOOLTIP ""
            ONCHANGE NIL
            ONGOTFOCUS NIL
            ONLOSTFOCUS NIL
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            ONENTER Muda_Margem( This.Value )
            HELPID NIL
            TABSTOP .T.
            VISIBLE .T.
            READONLY .F.
            RIGHTALIGN .F.
            BACKCOLOR {{255,255,255},{0,0,255},{128,255,255}}
            FONTCOLOR {0,0,255}
            INPUTMASK "99,999.99"
            FORMAT "E"
            NUMERIC  .T.
            VALUE NIL
     END TEXTBOX 

     DEFINE COMBOBOX Combo_2
            ROW    300
            COL    10
            WIDTH  261
            HEIGHT 100
            ITEMS {''}
            VALUE 1
            FONTNAME 'Arial'
            FONTSIZE 14
            TOOLTIP ''
            ONCHANGE NIL
            ONGOTFOCUS NIL
            ONLOSTFOCUS NIL
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            HELPID NIL
            TABSTOP .T.
            VISIBLE .T.
            SORT .F.
            ONENTER NIL
            ONDISPLAYCHANGE NIL
            DISPLAYEDIT .F.
            ITEMSOURCE GRU->NOMGRU_
            FONTCOLOR {0,0,255}
     END COMBOBOX  

     DEFINE LABEL Label_13
            ROW    270
            COL    10
            WIDTH  125
            HEIGHT 24
            VALUE "Grupo"
            FONTNAME "Arial"
            FONTSIZE 14
            TOOLTIP ""
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            HELPID NIL
            VISIBLE .T.
            TRANSPARENT .F.
            ACTION NIL
            ONMOUSEHOVER NIL
            ONMOUSELEAVE NIL
            AUTOSIZE .F.
            BACKCOLOR NIL
            FONTCOLOR {0,0,255}
     END LABEL  

     DEFINE COMBOBOXEX CBExMudar
            ROW    300
            COL    330
            WIDTH  120
            HEIGHT 150
            ITEMS {'SIM','NÃO'}
            VALUE 2
            FONTNAME 'Arial'
            FONTSIZE 14
            FONTBOLD .T.
            TOOLTIP ''
            FONTCOLOR {0,0,255}
            GRIPPERTEXT ''
     END COMBOBOXEX  

     DEFINE COMBOBOXEX CBExObs
            ROW    300
            COL    500
            WIDTH  120
            HEIGHT 150
            ITEMS {'SIM','NÃO'}
            VALUE 2
            FONTNAME 'Arial'
            FONTSIZE 14
            FONTBOLD .T.
            TOOLTIP ''
            FONTCOLOR {0,0,255}
            GRIPPERTEXT ''
     END COMBOBOXEX  

     DEFINE BUTTONEX BtSalvar
            ROW    351
            COL    370
            WIDTH  122
            HEIGHT 53
            CAPTION "&Salvar"
            PICTURE "imagens\img_inclui.bmp"
            ICON NIL
            ACTION Salvar()
            FONTNAME 'Arial'
            FONTSIZE 12
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            FONTCOLOR NIL
            VERTICAL .F.
            LEFTTEXT .F.
            UPPERTEXT .F.
            ADJUST .F.
            TOOLTIP ''
            BACKCOLOR NIL
            NOHOTLIGHT .F.
            FLAT .F.
            NOTRANSPARENT .F.
            NOXPSTYLE .F.
            ONGOTFOCUS NIL
            ONLOSTFOCUS NIL
            TABSTOP .T.
            HANDCURSOR .F.
            HELPID NIL
            VISIBLE .T.
            DEFAULT .F.
     END BUTTONEX  

     DEFINE LABEL Label_4
            ROW    270
            COL    280
            WIDTH  112
            HEIGHT 24
            VALUE "Muda Preco na Venda"
            FONTNAME "Arial"
            FONTSIZE 14
            TOOLTIP ""
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            HELPID NIL
            VISIBLE .T.
            TRANSPARENT .F.
            ACTION NIL
            ONMOUSEHOVER NIL
            ONMOUSELEAVE NIL
            AUTOSIZE .T.
            BACKCOLOR NIL
            FONTCOLOR {0,0,255}
            RIGHTALIGN .T.
     END LABEL  

     DEFINE BUTTONEX BtSair
            ROW    351
            COL    500
            WIDTH  122
            HEIGHT 53
            CAPTION "&Sair"
            PICTURE "imagens\img_sair.bmp"
            ICON NIL
            ACTION ThisWindow.Release
            FONTNAME 'Arial'
            FONTSIZE 12
            FONTBOLD .T.
            FONTITALIC .F.
            FONTUNDERLINE .F.
            FONTSTRIKEOUT .F.
            FONTCOLOR NIL
            VERTICAL .F.
            LEFTTEXT .F.
            UPPERTEXT .F.
            ADJUST .F.
            TOOLTIP ''
            BACKCOLOR NIL
            NOHOTLIGHT .F.
            FLAT .F.
            NOTRANSPARENT .F.
            NOXPSTYLE .F.
            ONGOTFOCUS NIL
            ONLOSTFOCUS NIL
            TABSTOP .T.
            HANDCURSOR .F.
            HELPID NIL
            VISIBLE .T.
            DEFAULT .F.
     END BUTTONEX  

END WINDOW

Verifiquei se o Text_1 tem alguma validação para obrigar o foco para ele na inicialização mas não tem...
dessa forma tenho que colocar um monte de comandos no oninit.
Alguma dica/sugestão para eu investigar aqui.

Obrigado
Rubens

SetFocus nao obdece num form novo

Enviado: 11 Dez 2016 13:41
por Pablo César
Já experimentou colocar após o Incluir.Activate ?

O Activate fica num looping para exibir a primeira tela. Talvez seja questão de colocar numa função de INIT do primeira tela. Mas tenta a anterior.

SetFocus nao obdece num form novo

Enviado: 11 Dez 2016 22:29
por Toledo
Pablo César escreveu:Já experimentou colocar após o Incluir.Activate ?
Todos os comandos que estiver depois de Incluir.Activate só será executado quando o form incluir for encerrado.

Neste caso, a única saída é usar o ON INIT mesmo.

Abraços,

SetFocus nao obdece num form novo

Enviado: 12 Dez 2016 07:55
por Pablo César
Toledo escreveu:Todos os comandos que estiver depois de Incluir. Activate só será executado quando o form incluir for encerrado.
Tens razão Toledo e eu ainda disse sobre o looping...

Rubens, acho que você poderia:

1. Faz uma função para o Init. Assim todos os comando não ficam amontoados na definição do Window.
2. Mude a sequência. Isso pode ser feito pela IDE. Coloque Text_2 antes do Text_1.
3. Você poderia também tentar colocar no ONGOTFOCUS do Text_1 uma função que:
a. Verifique a condição (não sei se é esta) se Incluir ou Alterar. Conforme for, faz focus com o Text_2 e depois da validação (ONENTER ou ONLOSTFOCUS) você remove o chamado da função no ONGOTFOCUS do Text_1 com SetProperty("Incluir","Text_1","ONGOTFOCUS",NIL). Mas esta ultima opção vai dar trabalho, porque após a inclusão ou alteração de registro o ONGOTFOCUS tem que retornar com o cahamdo de função.

SetFocus nao obdece num form novo

Enviado: 12 Dez 2016 09:22
por rubens
Bom dia...

Coloquei uma resposta aqui ontem, na realidade acho que coloquei, devo ter só visualizado ela...

Eu tô usando modal, pelos testes a conclusão que cheguei é que a partir do terceiro form modal deixa de obedecer o setfocus e o que é mandando iniciar fora do on init. Tipo se a declaração é direta na definição do form roda beleza, mas se coloca uma função, dentro da função desconhece os objetos.
Se coloco
define window iniciar ... oninit iniciar.text_2.setfocus
funciona em qualquer quantidade de forms.
Se coloco
define window iniciar ... oninit foca()
----------------------------------------------
function foca()
iniciar.text_2.setfocus
return nil

Ele dá erro de que o objeto setfocus não foi definido no form
Isso a partir do terceiro formulário.

Não sei se é um bug ou erro de conceito ou uma limitação da minigui.
Até o segundo form beleza, a partir do segundo não obedece mais.

Obrigado
Rubens