goForm = CREATEOBJECT("frmForm")
goForm.Visible = .T.
goForm.Show()
READ EVENTS
CLOSE ALL
CLEAR ALL
RETURN
**********
DEFINE CLASS frmForm as Form
AutoCenter = .T.
BorderStyle = 2
Width = 540
MinWidth = 540
MinButton = .F.
MaxButton = .F.
ShowTips = .T.
Themes = .F.
*!* Add the visual elements
ADD OBJECT lblCHKAll as Label WITH Left = 12, Top = 12, Caption = "All"
ADD OBJECT lblCHKGA as Label WITH Left = 102, Top = 12, Caption = "Grade A"
ADD OBJECT lblCHKGB as Label WITH Left = 192, Top = 12, Caption = "Grade B"
ADD OBJECT lblCHKGC as Label WITH Left = 282, Top = 12, Caption = "Grade C"
ADD OBJECT chkAll as CheckBox WITH Top = 36, Left = 12, AutoSize = .T., Value = .T., Caption = "All"
ADD OBJECT chkGrA as CheckBox WITH Top = 36, Left = 102, AutoSize = .T., Value = .F., Caption = "Grade A"
ADD OBJECT chkGrB as Checkbox WITH Top = 36, Left = 192, AutoSize = .T., Value = .F., Caption = "Grade B"
ADD OBJECT chkGrC as Checkbox WITH Top = 36, Left = 282, AutoSize = .T., Value = .F., Caption = "Grade C"
ADD OBJECT cmdFilter as CommandButton WITH ;
Left = 426, ;
Top = 12, ;
Height = 42, ;
BackColor = RGB(0, 255, 255), ;
Caption = "Show Selection"
ADD OBJECT grdSchool as Grid WITH ;
Left = 12, ;
Top = 60, ;
Width = ThisForm.Width - 24, ;
Height = ThisForm.Height - 84, ;
DeleteMark = .F., ;
Visible = .F.
*!* Now the procedures:
*!* Uncheck all other checkboxes if ALL is checked
PROCEDURE chkAll.Click()
FOR i = 1 TO ThisForm.ControlCount
IF AT(UPPER("chkGr"), ThisForm.Controls(i).Name) != 0
ThisForm.Controls(i).Value = .F.
ENDIF
ENDFOR
ENDPROC
*!* Uncheck the ALL checkbox if you check any other checkbox
PROCEDURE chkGrA.Click()
ThisForm.CheckBoxClick()
ENDPROC
PROCEDURE chkGrB.Click()
ThisForm.CheckBoxClick()
ENDPROC
PROCEDURE chkGrC.Click()
ThisForm.CheckBoxClick()
ENDPROC
*!* Filtering the data and showing the results
PROCEDURE cmdFilter.Click()
LOCAL lcFilter as Character
lcFilter = ""
IF ThisForm.chkAll.Value = .T.
SELECT * FROM csrSchool INTO CURSOR csrFilter
ELSE
IF ThisForm.chkGrA.Value = .T.
lcFilter = "csrSchool.cGrade = [A] OR "
ENDIF
IF ThisForm.chkGrB.Value = .T.
lcFilter = lcFilter + "csrSchool.cGrade = [B] OR "
ENDIF
IF ThisForm.chkGrC.Value = .T.
lcFilter = lcFilter + "csrSchool.cGrade = [C]"
ENDIF
IF RIGHT(lcFilter, 3) = "OR "
lcFilter = Substr(lcFilter, 1, Len(lcFilter) - 4)
ENDIF
IF EMPTY(lcFilter)
= MESSAGEBOX("Please check at least one option", 64, "Show selected data", 3000)
ELSE
SELECT * FROM csrSchool WHERE &lcFilter INTO CURSOR csrFilter
ENDIF
ENDIF
IF ALIAS() = UPPER("csrFilter")
WITH ThisForm.grdSchool
.BackColor = RGB(0, 255, 255)
.ColumnCount = -1
.RecordSource = "csrFilter"
.Visible = .T.
WITH .Column1
.Header1.Caption = "Name"
.Width = 90
ENDWITH
WITH .Column2
.Header1.Caption = "Grade"
.Width = 60
ENDWITH
ENDWITH
ENDIF
ENDPROC
PROCEDURE Load()
CREATE CURSOR csrSchool (cName C(10), cGrade C(1))
INSERT INTO csrSchool VALUES ("Mandy", "A")
INSERT INTO csrSchool VALUES ("Jeff", "B")
INSERT INTO csrSchool VALUES ("Chris", "C")
INSERT INTO csrSchool VALUES ("Sandy", "B")
INSERT INTO csrSchool VALUES ("Mickey", "C")
INSERT INTO csrSchool VALUES ("Paolo", "B")
INSERT INTO csrSchool VALUES ("Paula", "A")
LOCATE
ENDPROC
PROCEDURE Destroy()
ThisForm.Release()
CLEAR EVENTS
ENDPROC
PROCEDURE CheckBoxClick()
ThisForm.chkAll.Value = .F.
ENDPROC
ENDDEFINE
**********