Olá!
Para telas DOS, o Harbour tem disponíveis estes controles que talvez te interessem:
@...GET RADIOGROUP
Código: Selecionar todos
// The example demonstrates how radio button groups can be integrated
// in the Get list and are filled with radio buttons.
#include "Inkey.ch"
PROCEDURE Main
LOCAL aRadio1[3], aRadio2[4]
LOCAL nSpeed, cPages
LOCAL cColor1 := "W/B,W+/B,R/W+"
LOCAL cColor2 := "N/BG,N/BG,GR+/BG,GR+/BG,N/BG,W+/BG,GR+/BG"
SET EVENTMASK TO INKEY_ALL
SET COLOR TO N/BG
CLS
nSpeed := 1 //default to the first item.
aRadio1[ 1 ] := HbRadioButton():new( 4, 22, "&slow" )
aRadio1[ 2 ] := HbRadioButton():new( 5, 22, "&medium" )
aRadio1[ 3 ] := HbRadioButton():new( 6, 22, "&fast" )
AEval( aRadio1, {|o| o:colorSpec := cColor2 } )
cPages := "all"
aRadio2[ 1 ] := HbRadioButton():new( 10, 22, "&first page", "this" )
aRadio2[ 2 ] := HbRadioButton():new( 11, 22, "&this page" , "first")
aRadio2[ 3 ] := HbRadioButton():new( 12, 22, "&last page" , "last" )
aRadio2[ 4 ] := HbRadioButton():new( 13, 22, "&all pages" , "all" )
AEval( aRadio2, {|o| o:colorSpec := cColor2 } )
@ 3, 20, 7, 40 GET nSpeed ;
RADIOGROUP aRadio1 ;
CAPTION "&Speed" ;
COLOR cColor1
@ 9, 20, 14, 40 GET cPages ;
RADIOGROUP aRadio2 ;
CAPTION "&Pages" ;
COLOR cColor1
READ
? nSpeed, cPages
RETURN
@...GET CHECKBOX
Código: Selecionar todos
// The example displays two Gets as check boxes using
// different styles.
#include "inkey.ch"
PROCEDURE Main
LOCAL lVar1 := .F.
LOCAL lVar2 := .T.
CLS
SET EVENTMASK TO INKEY_ALL
@ 3, 3 GET lVar1 CHECKBOX ;
CAPTION "&Married " ;
STYLE "[x ]" ;
COLOR "N/BG,W+/BG,N/BG,GR+/BG"
@ 5, 3 GET lVar2 CHECKBOX ;
CAPTION "&Self employed" ;
STYLE "[o ]" ;
COLOR "N/BG,W+/BG,N/BG,GR+/BG"
READ
RETURN
Ambos suportam uso de mouse.