Page 1 of 1
Setfocus problem
Posted:
Thu Apr 26, 2018 5:00 pm
by reds
On successful validation of the first GET I want to move to the second using SetFocus but it jumps to the Exit button instead.
(If I remove the second GET WHEN clause it will move to it but doesn't change to the gotfocus colours)
TIA
Peter
- Code: Select all Expand view
#include "FWCE.ch"
#include "vkey.ch"
STATIC oWnd,oFont[3]
STATIC oGetPass
***********************
FUNCTION Main()
DEFINE FONT oFont[1] NAME "Ariel" SIZE 4, 12 BOLD
DEFINE FONT oFont[2] NAME "Ariel" SIZE 12, 14 BOLD
DEFINE FONT oFont[3] NAME "Ariel" SIZE 16, 20 BOLD
DEFINE WINDOW oWnd
@ 4.75,5 BUTTON oExit PROMPT "Exit" OF owND SIZE 60, 30 FONT oFont[1] ACTION {|| oWnd:END()}
ACTIVATE WINDOW oWnd ON INIT UserLogin()
******************
FUNCTION UserLogin()
LOCAL oExit
LOCAL oDlg
LOCAL nEmploy := 0
PRIVATE lValidUser := lValidPass := .f.
PRIVATE nTries := 0
PRIVATE oGetEmploy
PRIVATE cNewpass := SPACE(10)
DEFINE DIALOG oDlg OF oWnd TITLE "Login" FROM 3, 3 TO 16, 27.5
@ .25,4 Say "Employee" COLOR CLR_RED,CLR_WHITE SIZE 60,8 // FONT oFont[2]
@ 1.25,.5 GET oGetEmploy VAR nEmploy PICT "999999999999999" OF oDlg SIZE 90,16 UPDATE ; //FONT oFont[2]
VALID {|| lValidUser := ValidUser(nEmploy,oDlg)}
oGetEmploy:bGotFocus := { || oGetEmploy:SetColor(CLR_RED,CLR_GRAY)}
oGetEmploy:bLostFocus := { || oGetEmploy:SetColor(CLR_HBLUE,CLR_WHITE)}
@ 3.1,4 Say "Password" COLOR CLR_RED,CLR_WHITE SIZE 60,8 //FONT oFont[2]
@ 4.5,.5 GET oGetPass VAR cNewPass PICT "XXXXXXXXXX" OF oDlg SIZE 90,16 WHEN lValidUser ; // FONT oFont[2]
VALID { || lvalidPass := ValidPass(cNewPass,oDlg) } UPDATE
oGetPass:bGotFocus := { || oGetPass:SetColor(CLR_RED,CLR_GRAY)}
oGetPass:bLostFocus := { || oGetPass:SetColor(CLR_HBLUE,CLR_WHITE)}
@ 4.75,5 BUTTON oExit PROMPT "Exit" OF oDlg SIZE 30, 10 ACTION {|| oWnd:END()} // FONT oFont[2]
ACTIVATE DIALOG oDlg VALID lValidPass
******************************
FUNCTION ValidUser(nUser,oDlg)
IF GetAsyncKey( VK_LBUTTON ) .OR. GetAsyncKey( VK_LBUTTON )
oWnd:End()
ENDIF
DO case
case nUser = 1
RETURN .f.
case nUser = 2
//(oGetPass:SetFocus(),.t.)
// oGetPass:Refresh()
//oGetPass:bLostFocus := { || oGetPass:SetColor(CLR_HBLUE,CLR_WHITE),SetFocus()}
oGetpass:SetFocus()
RETURN .t.
ENDCASE
RETURN .F.
*******************************
FUNCTION ValidPass(cNewPass,oDlg)
IF GetAsyncKey( VK_LBUTTON ) .OR. GetAsyncKey( VK_LBUTTON )
oWnd:End()
ENDIF
IF EMPTY(TRIM(cNewPass))
RETURN .F.
ENDIF
cDecrypt := "secret"
IF cDecrypt = TRIM(cNewpass)
lValidpass := .t.
oDlg:End()
ELSE
nTries++
IF nTries >= 3
oWnd:END()
ENDIF
cNewpass := SPACE(10)
odlg:update()
RETURN .F.
ENDIF
RETURN .t.
Re: Setfocus problem
Posted:
Thu Apr 26, 2018 5:29 pm
by Antonio Linares
Peter,
Please try with:
oGetEmploy:oJump := oGetPass
Re: Setfocus problem
Posted:
Fri Apr 27, 2018 9:33 am
by reds
Thanks Antonio
That did the trick
Regards
Peter
p.s. Where can I get a copy of builddll.bat ?
Re: Setfocus problem
Posted:
Fri Apr 27, 2018 11:47 am
by Antonio Linares
Peter,
We provide two batch files to create DLLs:
1. buildhd.bat for self contained DLLs (the Harbour virtual machine goes inside the DLL)
2. buildhdp.bat for pcode DLLs (the Harbour virtual machine goes inside the EXE that uses this DLL)
They should be at your samples folder
Re: Setfocus problem
Posted:
Mon Apr 30, 2018 1:07 pm
by reds
Antonio
I've rerun FWPPC.EXE (mod 09/10/2016) and extracted all the files , the only build batch file is buildce
On another subject is the Freeze option available on Listbox /TwBrowse as I'm getting an error
TIA
Peter
Re: Setfocus problem
Posted:
Tue May 01, 2018 8:05 am
by Antonio Linares
Peter,
buildhd.bat
- Code: Select all Expand view
@ECHO OFF
CLS
ECHO ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ECHO ³ FiveWin for Harbour 18.03 - Mar. 2018 Harbour development power ³Ü
ECHO ³ (c) FiveTech, 1993-2018 for Microsoft Windows 9x/NT/2000/ME/XP/Vista/7/8 ³Û
ECHO ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ
ECHO ÿ ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
if A%1 == A GOTO :SINTAX
if NOT EXIST %1.prg GOTO :NOEXIST
if "%FWDIR%" == "" set FWDIR=.\..
if "%HBDIR%" == "" set HBDIR=c:\harbour
rem if "%2" == "/b" set GT=gtwin
rem if not "%2" == "/b" set GT=gtgui
set GT=gtgui
ECHO Compiling...
set hdir=%HBDIR%
set hdirl=%hdir%\lib
set fwh=%FWDIR%
if exist c:\bcc7 set bcdir=c:\bcc7
if exist c:\bcc64 set bcdir=c:\bcc64
%hdir%\bin\harbour %1 /n /i..\include;%hdir%\include /w /p %2 %3 > clip.log 2> warnings.log
@type clip.log
@type warnings.log
IF ERRORLEVEL 1 PAUSE
IF ERRORLEVEL 1 GOTO EXIT
echo -O2 -I%hdir%\include %1.c > b32.bc
%bcdir%\bin\bcc32 -M -c @b32.bc
:ENDCOMPILE
IF EXIST %1.rc %bcdir%\bin\brc32 -r %1
echo c0d32.obj + > b32.bc
echo %1.obj, + >> b32.bc
echo %1.dll, + >> b32.bc
echo %1.map, + >> b32.bc
echo ..\lib\FiveH.lib ..\lib\FiveHC.lib + >> b32.bc
echo %hdirl%\hbwin.lib + >> b32.bc
echo %hdirl%\gtgui.lib + >> b32.bc
echo %hdirl%\hbrtl.lib + >> b32.bc
echo %hdirl%\hbvm.lib + >> b32.bc
echo %hdirl%\hblang.lib + >> b32.bc
echo %hdirl%\hbmacro.lib + >> b32.bc
echo %hdirl%\hbrdd.lib + >> b32.bc
echo %hdirl%\rddntx.lib + >> b32.bc
echo %hdirl%\rddcdx.lib + >> b32.bc
echo %hdirl%\rddfpt.lib + >> b32.bc
echo %hdirl%\hbsix.lib + >> b32.bc
echo %hdirl%\hbdebug.lib + >> b32.bc
echo %hdirl%\hbcommon.lib + >> b32.bc
echo %hdirl%\hbpp.lib + >> b32.bc
echo %hdirl%\hbcpage.lib + >> b32.bc
echo %hdirl%\hbcplr.lib + >> b32.bc
echo %hdirl%\hbct.lib + >> b32.bc
echo %hdirl%\hbpcre.lib + >> b32.bc
echo %hdirl%\xhb.lib + >> b32.bc
echo %hdirl%\hbziparc.lib + >> b32.bc
echo %hdirl%\hbmzip.lib + >> b32.bc
echo %hdirl%\hbzlib.lib + >> b32.bc
echo %hdirl%\minizip.lib + >> b32.bc
echo %hdirl%\png.lib + >> b32.bc
echo %hdirl%\hbusrrdd.lib + >> b32.bc
echo %hdirl%\hbtip.lib + >> b32.bc
rem Uncomment these two lines to use Advantage RDD
rem echo %hdir%\lib\b32\rddads.lib + >> b32.bc
rem echo ..\lib\Ace32.lib + >> b32.bc
echo %bcdir%\lib\cw32.lib + >> b32.bc
echo %bcdir%\lib\uuid.lib + >> b32.bc
echo %bcdir%\lib\import32.lib + >> b32.bc
echo %bcdir%\lib\ws2_32.lib + >> b32.bc
echo %bcdir%\lib\psdk\odbc32.lib + >> b32.bc
echo %bcdir%\lib\psdk\nddeapi.lib + >> b32.bc
echo %bcdir%\lib\psdk\iphlpapi.lib + >> b32.bc
echo %bcdir%\lib\psdk\msimg32.lib + >> b32.bc
echo %bcdir%\lib\psdk\psapi.lib + >> b32.bc
echo %bcdir%\lib\psdk\rasapi32.lib + >> b32.bc
echo %bcdir%\lib\psdk\gdiplus.lib + >> b32.bc
echo %bcdir%\lib\psdk\shell32.lib, >> b32.bc
IF EXIST %1.res echo %1.res >> b32.bc
%bcdir%\bin\ilink32 -Tpd @b32.bc
IF ERRORLEVEL 1 GOTO LINKERROR
ECHO * self contained DLL successfully built
GOTO EXIT
ECHO
rem delete temporary files
@del %1.c
@del %1.il?
:LINKERROR
ECHO * There are errors
GOTO EXIT
:SINTAX
ECHO SYNTAX: Build [Program] {-- No especifiques la extensi¢n PRG
ECHO {-- Don't specify .PRG extension
GOTO EXIT
:NOEXIST
ECHO The specified PRG %1 does not exist
:EXIT
buildhdp.bat
- Code: Select all Expand view
@ECHO OFF
CLS
ECHO ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ECHO ³ FiveWin for Harbour 18.03 - Mar. 2018 Harbour development power ³Ü
ECHO ³ (c) FiveTech, 1993-2018 for Microsoft Windows 9x/NT/2000/ME/XP/Vista/7/8 ³Û
ECHO ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ
ECHO ÿ ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
if A%1 == A GOTO :SINTAX
if NOT EXIST %1.prg GOTO :NOEXIST
ECHO Compiling...
set hdir=c:\harbour
set bcdir=c:\bcc7\bin
%hdir%\bin\harbour %1 /n -DHB_DYNLIB /i..\include;%hdir%\include /w /p %2 %3 > clip.log 2> warnings.log
@type clip.log
@type warnings.log
IF ERRORLEVEL 1 PAUSE
IF ERRORLEVEL 1 GOTO EXIT
echo -O2 -I%hdir%\include %1.c > b32.bc
%bcdir%\bcc32 -M -c @b32.bc
:ENDCOMPILE
IF EXIST %1.rc %bcdir%\brc32 -r %1
echo c0d32.obj + > b32.bc
echo %1.obj, + >> b32.bc
echo %1.dll, + >> b32.bc
echo %1.map, + >> b32.bc
echo %hdir%\lib\hbmaindllp.lib + >> b32.bc
echo %bcdir%\lib\import32.lib + >> b32.bc
echo %bcdir%\lib\cw32.lib, >> b32.bc
IF EXIST %1.res echo %1.res >> b32.bc
%bcdir%\ilink32 -Tpd -aa @b32.bc
IF ERRORLEVEL 1 GOTO LINKERROR
ECHO * pcode DLL successfully built
GOTO EXIT
ECHO
rem delete temporary files
rem @del %1.c
@del %1.il?
:LINKERROR
ECHO * There are errors
GOTO EXIT
:SINTAX
ECHO SYNTAX: Build [Program] {-- No especifiques la extensi¢n PRG
ECHO {-- Don't specify .PRG extension
GOTO EXIT
:NOEXIST
ECHO The specified PRG %1 does not exist
:EXIT
You can only use nFreeze with Class TXBrowse but I am not sure if it is fully operative in your version. Please try it, thanks
Re: Setfocus problem
Posted:
Thu May 03, 2018 1:54 pm
by reds
Antonio
Thanks for the batch files
TXbrowse gave me this
Peter
- Code: Select all Expand view
Compiling...
Harbour 3.4.0dev () (2014-09-28 23:40)
Copyright (c) 1999-2014, https://github.com/vszakats/harbour-core/
Lines 1742, Functions/Procedures 1
Generating C source output to 'XBRW.c'... Done.
XBRW.c
FiveCEC.lib(XBROWSEC.obj) : error LNK2005: HB_FUN_XBRWSCROLLROW already defined in FiveCE.lib(XBROWSE.obj)
FiveCE.lib(XBROWSE.obj) : error LNK2001: unresolved external symbol HB_FUN_PALBMPFREE
FiveCE.lib(TREES.obj) : error LNK2001: unresolved external symbol HB_FUN_PALBMPFREE
FiveCE.lib(XBROWSE.obj) : error LNK2001: unresolved external symbol HB_FUN_DBSKIPPER
XBRW.exe : fatal error LNK1120: 2 unresolved externals
* Linking errors *
Re: Setfocus problem
Posted:
Thu May 03, 2018 7:00 pm
by Antonio Linares
Peter,
Please remove the function XBRWSCROLLROW() from xbrowse.prg
and implement these functions:
function PalBmpFree( hBmp, hPal )
DeleteObject( hBmp )
DeleteObject( hPal )
return nil
function DbSkipper( n )
return __DbSkipper( n )
Re: Setfocus problem
Posted:
Fri May 18, 2018 12:27 pm
by reds
Antonio
So how do these changes get picked up?
Do I create a new Xbrowse obj and replace it in fivece.lib
Regards
Peter
p.s. sorry for late reply,I've been away
Re: Setfocus problem
Posted:
Sat May 19, 2018 7:56 am
by Antonio Linares
Peter,
Please add these changes in your main PRG and lets see if the unresolved externals get solved
Re: Setfocus problem
Posted:
Mon May 21, 2018 8:05 am
by reds
Antonio
Just getting
>> FiveCEC.lib(XBROWSEC.obj) : error LNK2005: HB_FUN_XBRWSCROLLROW already defined in FiveCE.lib(XBROWSE.obj)
I've also tried to use date picker and I'm getting this
>>FiveCE.lib(TDTPICKE.obj) : error LNK2001: unresolved external symbol HB_FUN_INITCOMMON
>>FiveCE.lib(TDTPICKE.obj) : error LNK2001: unresolved external symbol HB_FUN_GETDATEPICK
>>FiveCE.lib(TDTPICKE.obj) : error LNK2001: unresolved external symbol HB_FUN_SETDATEPICK
Regards
Peter