Amiguinho
Voce esta acompanhando as aulas que estou postando?
Apesar de meu pequeno espaço de tempo livre vou divulgando as aulas conforme o que vou passando ao converter meu sistema.
Quanto a sua pergunta. Voce esta usando o WorkShop ou não.
Caso esteja será necessário apenas ordenar os controles pela opção
Options/Set Order.
O problema com o
ENTER ocorre quando montamos um DIALOGo e não REDEFINEmos os controles, sendo que o foco ficará sempre no ultimo controle posicionado no mesmo.
Ao redefinir os controles e zeras as variaveis o
ENTER funciona normalmente.
Caso não esteja usando WorkShop, use o parâmetro ON CHANGE e coloque o seguinte:
Código: Selecionar todos
... ON CHANGE (oGetAtual:LostFocus(oGetAtual),;
oGetProximo:SetFocus())
Ou seja, deve-se perder o foco do GET em que o cursor está e dizer qual o próximo GET que receberá o cursor.
Isto é muito util quando temos controles em várias abas de FOLDERs e queremos passar para a próxima aba sem usar o mouse.
Código: Selecionar todos
REDEFINE GET oGet16 VAR M->VARIAVEL PICTURE "@!" ID 118 ;
OF oFld:aDialogs[01] ;
ON CHANGE (oGetAtual:LostFocus(oGetAtual),;
oFld:SetOption(2),;
oGetProximo:SetFocus())
Neste caso o
oGetAtual esta posicionado na aba 1 do FOLDER oFld e
oGetProximo esta posicionado na aba 2.
Com o parâmetro ON CHANGE ao usar o
ENTER o foco de
oGetAtual é retirado, a função SetOption do objeto oFld recebe o parâmetro 2 que indica o numero da aba e então
oGetProximo recebe o foco.
Agora quando usamos COMBOBOXes nos DIALOGos não conseguimos dar
ENTER para o próximo controle pois no mesmo ON CHANGE não funciona, então usamos:
Código: Selecionar todos
REDEFINE COMBOBOX oCbx7 VAR M->AVALIACAO ;
ITEMS { "OTIMO", "BOM", "REGULAR", "RUIM", "PESSIMO" } ;
ID 213 OF oFld:aDialogs[02]
oCbx7:bKeyDown := {|nKey,nFlags|if(nKey==VK_RETURN,;
(oCbx7:LostFocus(oCbx7),oFld:SetOption(2),oGet214:SetFocus()),),nil}
Agora com estes dicas voce provavelmente terá mais trabalho.
@braços :?)