Files
harbour-core/harbour/tests/ac_test2.prg
Viktor Szakats b118ac7cdd 2012-04-19 02:23 UTC+0200 Viktor Szakats (harbour syenar.net)
* src/3rd/pcre/Makefile
    + enabled UTF8 support in PCRE (binary size overhead ~150KB)
    + enabled unicode properties support in PCRE (binary size overhead ~50KB)

  * src/rtl/hbregex.c
    + added commented logic to detect UTF8 support in PCRE
      and enable UTF8 mode when the HVM CP is also UTF8. Latter
      logic is missing yet and subject to review.

  * contrib/hbnetio/utils/hbnetio/netiosrv.prg
  * contrib/hbnetio/utils/hbnetio/netiocon.prg
  * contrib/hbnetio/utils/hbnetio/netiomgm.prg
  * contrib/hbrun/hbrun.prg
  * tests/ac_test.prg
  * tests/ac_test2.prg
  * tests/tstmacro.prg
  * tests/tstalias.prg
    * formatted using automatic tools
2012-04-19 00:26:16 +00:00

126 lines
2.8 KiB
Plaintext

/*
* $Id$
*/
/*
* Harbour Project source code:
* ACHOICE() test
*
* Copyright 2009 Vladislav Lavrecky <lavr / at / ldz.lv>
* www - http://harbour-project.org
*
*/
/*
* Menu Navigation - Right and Left arrows keys, ESC to exit
* After some Right or Left arrows preses
* in Harbour app all menu items are highlighted
* an no way to understand which element is current,
* with clipper app all is ok.
*/
#include "inkey.ch"
#include "achoice.ch"
FUNCTION main()
//NIL, empty, numeric, and "not handled" - items
//must be inaccesible and invisible
LOCAL aMenu1 := { " --Visky--", "", "not handled" }
LOCAL aMenu2 := { " --Vodka--", " --Water--", NIL, "not handled" }
LOCAL aMenu3 := { " --Grapa--", 33, "not handled" }
//for AC_NOITEM mode test
LOCAL aMenu4 := { "", "not handled" }
LOCAL lExit := .F.
LOCAL nCounter := 1
LOCAL nKeyPressed
//set to True for items (de)highlighting
//algoritm in clipper
PUBLIC lHiLiTest := .F.
SetColor( "W+/N, BG+/B, , , W/N" )
cls
@ 2, 1 SAY " --Visky-- --Vodka-- --Grapa--"
@ 3, 14 SAY "--Water--"
DO WHILE !lExit
DO CASE
CASE nCounter == 1
AChoice( 2, 1, 3, 11, aMenu1 )
CASE nCounter == 2
AChoice( 2, 13, 3, 23, aMenu2, .T. , "cUF" )
CASE nCounter == 3
AChoice( 2, 25, 3, 35, aMenu3, .T. )
CASE nCounter == 4
//User function cUF2() fill screen with exclamation marks
//in clipper it doe's not called in AC_NOITEM mode
AChoice( 2, 37, 3, 47, aMenu4, .T. , "cUF2" )
ENDCASE
nKeyPressed := LastKey()
IF nKeyPressed == K_ESC
lExit := .T.
ELSEIF nKeyPressed == K_RIGHT
nCounter := iif( nCounter == 4, 1, nCounter + 1 )
ELSEIF nKeyPressed == K_LEFT
nCounter := iif( nCounter == 1, 4, nCounter - 1 )
ENDIF
ENDDO
RETURN NIL
//Test for current and previous items
//highliting-dehighliting algoritm
FUNCTION cUF( nMode, nCurElement, nRowPos )
LOCAL nRetVal := AC_CONT
LOCAL nKey := LastKey()
IF lHiLiTest
DispBox( 0, 0, MaxRow(), MaxCol(), Replicate( "#", 9 ), "GR+/G" )
ENDIF
IF nMode == AC_NOITEM
nRetVal := AC_ABORT
ELSEIF nMode == AC_EXCEPT
DO CASE
CASE nKey == K_RETURN
nRetVal := AC_SELECT
OTHERWISE
nRetVal := AC_ABORT
ENDCASE
ENDIF
RETURN nRetVal
//test for AC_NOITEM mode
//Clipper in AC_NOITEM mode do not call User Function
FUNCTION cUF2( nMode, nCurElement, nRowPos )
LOCAL nRetVal := AC_CONT
LOCAL nKey := LastKey()
DispBox( 0, 0, MaxRow(), MaxCol(), Replicate( "!", 9 ), "GR+/G" )
IF nMode == AC_NOITEM
nRetVal := AC_ABORT
ELSEIF nMode == AC_EXCEPT
DO CASE
CASE nKey == K_RETURN
nRetVal := AC_SELECT
OTHERWISE
nRetVal := AC_ABORT
ENDCASE
ENDIF
RETURN nRetVal