Page 1 of 1

Foco en Get de un Folder

PostPosted: Tue Dec 11, 2007 6:42 pm
by MaxFW
Hola a todos y gracias de antemano!!
Defino un diálogo con 3 folders y necesito que al inicar, el foco esté en el 1er get del primer Folder. He probado de 100 maneras viendo ejemplos y consultas en el foro y no lo puedo solucionar. Algo estoy haciendo mal, no obstante todos los ejemplos que vi en \SAMPLES, ninguno tiene el foco en el primer objeto del Folder. Siempre hay que clickear con el mouse.
Adjunto código a ver si alguien me ayuda (FW 1.95,Clp 5.2 y Blinker 3.0):

local oDlg
local oFld
local hBorl:=LoadLibrary("MIBWCC.DLL")

local oCodP1, oRazPro1, oBusP1
local oBtnOK, oBtnCancel
local nCodP1:=0, nCodP2:=0, cRazPro1


DEFINE DIALOG oDlg RESOURCE "MARCO"

REDEFINE FOLDER oFld ID 1499 OF oDlg;
PROMPTS "Comprobantes","Valores","Comisión y Gastos";
DIALOGS "LIQUI1","LIQUI2","LIQUI3"

oFld:aEnable := { .t., .f., .f. }

REDEFINE GET oCodP1 VAR nCodP1 PICTURE "9999" ID LQ1_CODP OF oFld:aDialogs[1] UPDATE ;
VALID Eval (ValidaCodp)

REDEFINE GET oRazPro VAR cRazPro PICTURE "@K!" ID LQ1_RAZP OF oFld:aDialogs[1] ;
VALID Eval (ValidaRazP)

REDEFINE BUTTON oBusP ID LQ1_BUSP OF oFld:aDialogs[1] ;
ACTION Eval(ValidaBusP)

REDEFINE BUTTON oBtnCancel ID LQ3_CANCEL OF oDlg ACTION oDlg:End() CANCEL

REDEFINE BUTTON oBtnOK ID LQ3_OK OF oDlg ACTION ....

ACTIVATE DIALOG oDlg CENTERED ;
ON INIT (oFld:aDialogs[1]:bGotFocus:={ || oCodP1:SetFocus() } )


He probado con oFld:SetOption(1),oFld:nOption:=1,oCodP1:SetFocus(.T.), etc y nada funciona

Saludos y gracias!!

PostPosted: Tue Dec 11, 2007 6:56 pm
by Antonio Linares
Prueba así:
Code: Select all  Expand view
ACTIVATE DIALOG oDlg CENTERED ;
ON INIT ( oCodP1:SetFocus(), .F. )

Observa el uso de .F.

PostPosted: Tue Dec 11, 2007 7:20 pm
by MaxFW
Antonio, Funcionó OK!!
Te agradezco por las horas ahorradas!!
Sería factible saber que función cumple el .F. ese agregado?? No lo tenía entre mis recursos.....
Un abrazo!!
Max

PostPosted: Tue Dec 11, 2007 7:42 pm
by Antonio Linares
Max,

Es un comportamiento propio del mensaje WM_INITDIALOG de Windows documentado en su API :-)

>
Return Values

The dialog box procedure should return TRUE to direct Windows to set the keyboard focus to the control given by hwndFocus. Otherwise, it should return FALSE to prevent Windows from setting the default keyboard focus.
>