How to Simulate a Spinner Control for Character Values (139308)



The information in this article applies to:

  • Microsoft Visual FoxPro for Windows 3.0

This article was previously published under Q139308

SUMMARY

The current Spinner control only displays numeric Values. This article shows by example how to simulate a character- or text-based Spinner control. The examples show continuous looping of the values to be displayed. As an example, when decrementing from the letter A, the letter Z is displayed rather than not allowing the Spinner value to move beyond what would normally be a stop point.

MORE INFORMATION

Code Sample

*Start of Program **************************

frmSpinners = CREATEOBJECT("frmTextSpinner")
frmSpinners.show
READ EVENTS

DEFINE CLASS frmTextSpinner AS Form

     Top      = 42
     Left     = 36
     Height   = 90
     Width    = 182
     DoCreate = .T.
     Caption  = "Text Spinners"
     Name     = "Form1"

     ADD OBJECT spnSpinner1 AS Spinner WITH ;
          Alignment        = 1, ;
          BackColor        = RGB(192,192,192), ;
          ForeColor        = RGB(192,192,192), ;
          Height           = 25, ;
          Left             = 143, ;
          Margin           = 0, ;
          SpecialEffect    = 1, ;
          SpinnerHighValue = 91.00, ;
          SpinnerLowValue = 64.00, ;
          Top             = 8, ;
          Width           = 15, ;
          Value           = 65.00, ;
          Name            = "spnSpinner1"

     ADD OBJECT txtText1 AS Textbox WITH ;
          BorderStyle = 1, ;
          Value       = "A", ;
          Height      = 25, ;
          Left        = 120, ;
          Top         = 8, ;
          Width       = 23, ;
          Name        = "txtText1"

     ADD OBJECT spnSpinner2 AS Spinner WITH ;
          Alignment        = 1, ;
          BackColor        = RGB(192,192,192), ;
          ForeColor        = RGB(192,192,192), ;
          Height           = 25, ;
          Left             = 46, ;
          Margin           = 0, ;
          SpecialEffect    = 1, ;
          SpinnerHighValue = 91.00, ;
          SpinnerLowValue  = 64.00, ;
          Top              = 8, ;
          Width            = 15, ;
          Value            = 65.00, ;
          Name             = "spnSpinner2"

     ADD OBJECT Label1 AS Label WITH ;
          Alignment   = 2, ;
          BorderStyle = 1, ;
          Caption     = "A", ;
          Height      = 25, ;
          Left        = 24, ;
          Top         = 8, ;
          Width       = 23, ;
          Name        = "Label1"

     ADD OBJECT spnSpinner3 AS Spinner WITH ;
          Alignment        = 1, ;
          BackColor        = RGB(192,192,192), ;
          ForeColor        = RGB(192,192,192), ;
          Height           = 25, ;
          Left             = 142, ;
          Margin           = 0, ;
          SpecialEffect    = 1, ;
          SpinnerHighValue =   8.00, ;
          SpinnerLowValue  =   0.00, ;
          Top   = 49, ;
          Width = 15, ;
          Value = 1.0, ;
          Name  = "spnSpinner3"

     ADD OBJECT Label2 AS Label WITH ;
          BorderStyle = 1, ;
          Caption     = "Monday", ;
          Height      = 25, ;
          Left        = 23, ;
          Top         = 49, ;
          Width       = 120, ;
          Name        = "Label2"

     PROCEDURE spnSpinner1.InteractiveChange
          DO CASE
               CASE This.Value=91
                    This.Value=65 && Goes a "A" from "Z"
               CASE This.Value=64
                    This.Value=90 && Goes a "Z" from "A"
          ENDCASE

          ThisForm.txtText1.Value=CHR(This.Value)
          ThisForm.txtText1.SetFocus
     ENDPROC

     PROCEDURE spnSpinner2.InteractiveChange
          DO CASE
               CASE This.Value=91
                    This.Value=65 && Goes a "A" from "Z"
               CASE This.Value=64
                    This.Value=90 && Goes a "Z" from "A"
          ENDCASE

          ThisForm.Label1.Caption=CHR(This.Value)
     ENDPROC

     PROCEDURE spnSpinner3.InteractiveChange
          IF This.Value=8
               This.Value=1 && Goes from "Sunday" to "Monday"
          ENDIF
          IF This.Value=0
               This.Value=7 && Goes from "Monday" to "Sunday"
          ENDIF

          DO CASE
          CASE This.Value = 1
               ThisForm.Label2.Caption="Monday"
          CASE This.Value = 2
               ThisForm.Label2.Caption="Tuesday"
          CASE This.Value = 3
               ThisForm.Label2.Caption="Wednesday"
          CASE This.Value = 4
               ThisForm.Label2.Caption="Thursday"
          CASE This.Value = 5
               ThisForm.Label2.Caption="Friday"
          CASE This.Value = 6
               ThisForm.Label2.Caption="Saturday"
          CASE This.Value = 7
               ThisForm.Label2.Caption="Sunday"
          ENDCASE
     ENDPROC
ENDDEFINE
*End of Program **************************************
				

Modification Type:MajorLast Reviewed:2/11/2000
Keywords:kbcode KB139308