Page 1 of 4

OptionBox()

Posted: Tue Jun 28, 2016 5:44 pm
by Roberto Lopez
Hi All,

Some years ago, I've created a tiny function for my own use.

I'm not fully sure, but I guess I've not posted here yet.

This is called 'OptionBox' and its name is self-explanatory :)

Code: Select all

FUNCTION OPTIONBOX( cTitle , aOptions , nDefault )

PRIVATE nRet

	IF VALTYPE(nDefault) = 'U'
		nDefault := 1
	ENDIF

      	DEFINE WINDOW OPTIONBOX ;
		AT 0,0 ;
		WIDTH 275 HEIGHT 170 + ( 30 * ( LEN(aOptions) - 2 ) );
		TITLE cTitle  ;
		MODAL NOSIZE NOSYSMENU

		DEFINE FRAME Frame_1
			ROW	04
			COL	10
			WIDTH	250
			HEIGHT	80 + ( 30 * ( LEN(aOptions) - 2 ) )
			CAPTION ''
		END FRAME

		DEFINE RADIOGROUP Radio_1
			ROW	20
			COL	30
			WIDTH	230 
			HEIGHT	100 + ( 30 * ( LEN(aOptions) - 2 ) )
			OPTIONS	aOptions
			VALUE	nDefault
			ONCHANGE {|| nRet := THIS.VALUE }
		END RADIOGROUP

		DEFINE BUTTON OK
			ROW	100 + ( 30 * ( LEN(aOptions) - 2 ) )
			COL	30
			CAPTION	'Aceptar'
			ACTION	OPTIONBOX_OK()
		END BUTTON

		DEFINE BUTTON CANCEL
			ROW	100 + ( 30 * ( LEN(aOptions) - 2 ) )
			COL	140
			CAPTION	'Cancelar'
			ACTION	OPTIONBOX_CANCEL()
		END BUTTON

	END WINDOW

	CENTER WINDOW OPTIONBOX
	ACTIVATE WINDOW OPTIONBOX


RETURN nRet

PROCEDURE OPTIONBOX_OK
	nRet := OPTIONBOX.RADIO_1.VALUE
	THISWINDOW.RELEASE
RETURN

PROCEDURE OPTIONBOX_CANCEL
	nRet := 0
	THISWINDOW.RELEASE
RETURN
I hope it be useful for someone.

Re: OptionBox()

Posted: Tue Jun 28, 2016 6:22 pm
by Rathinagiri
Really simple and nice one Roberto.

Kindly accept my small modification to include the escape key functionality.

Code: Select all

FUNCTION OPTIONBOX( cTitle , aOptions , nDefault )

PRIVATE nRet

   IF VALTYPE(nDefault) = 'U'
      nDefault := 1
   ENDIF

         DEFINE WINDOW OPTIONBOX ;
      AT 0,0 ;
      WIDTH 275 HEIGHT 170 + ( 30 * ( LEN(aOptions) - 2 ) );
      TITLE cTitle  ;
      MODAL NOSIZE NOSYSMENU

      DEFINE FRAME Frame_1
         ROW   04
         COL   10
         WIDTH   250
         HEIGHT   80 + ( 30 * ( LEN(aOptions) - 2 ) )
         CAPTION ''
      END FRAME

      DEFINE RADIOGROUP Radio_1
         ROW   20
         COL   30
         WIDTH   230
         HEIGHT   100 + ( 30 * ( LEN(aOptions) - 2 ) )
         OPTIONS   aOptions
         VALUE   nDefault
         ONCHANGE {|| nRet := THIS.VALUE }
      END RADIOGROUP

      DEFINE BUTTON OK
         ROW   100 + ( 30 * ( LEN(aOptions) - 2 ) )
         COL   30
         CAPTION   'Aceptar'
         ACTION   OPTIONBOX_OK()
      END BUTTON

      DEFINE BUTTON CANCEL
         ROW   100 + ( 30 * ( LEN(aOptions) - 2 ) )
         COL   140
         CAPTION   'Cancelar'
         ACTION   OPTIONBOX_CANCEL()
      END BUTTON
      ON KEY ESCAPE ACTION OPTIONBOX_CANCEL()

   END WINDOW

   CENTER WINDOW OPTIONBOX
   ACTIVATE WINDOW OPTIONBOX


RETURN nRet

PROCEDURE OPTIONBOX_OK
   nRet := OPTIONBOX.RADIO_1.VALUE
   THISWINDOW.RELEASE
RETURN

PROCEDURE OPTIONBOX_CANCEL
   nRet := 0
   THISWINDOW.RELEASE
RETURN

Re: OptionBox()

Posted: Tue Jun 28, 2016 8:39 pm
by Steed
Thks

Re: OptionBox()

Posted: Tue Jun 28, 2016 10:31 pm
by danielmaximiliano
Gracias Roberto por compartir.....

siempre viene bien pequeñas cositas que agrandan y mejoran la APP

Re: OptionBox()

Posted: Wed Jun 29, 2016 1:02 am
by andyglezl
Gracias !

Re: OptionBox()

Posted: Wed Jun 29, 2016 1:25 am
by srvet_claudio
Very nice!

Re: OptionBox()

Posted: Wed Jun 29, 2016 4:29 am
by bpd2000
srvet_claudio wrote:Very nice!
+1

Re: OptionBox()

Posted: Wed Jun 29, 2016 7:32 am
by serge_girard
Very handy !
To be included in next vesion?

Serge

Re: OptionBox()

Posted: Wed Jun 29, 2016 8:45 am
by esgici
serge_girard wrote:Very handy !
To be included in next vesion?

Serge
+1

Re: OptionBox()

Posted: Wed Jun 29, 2016 8:51 am
by chrisjx2002
+1