>>PUBLIC oform1 >> >>oform1=NEWOBJECT("form1") >>oform1.Show >>RETURN >> >> >>************************************************** >> >>DEFINE CLASS form1 AS form >> Top = 0 >> Left = 0 >> Height = 323 >> Width = 337 >> DoCreate = .T. >> ShowTips = .T. >> Caption = " Grid with Tooltip" >> browser = .NULL. >> columnbold = "" >> nrow = 0 >> ncol = 0 >> ncol2 = 0 >> nrow2 = 0 >> nrec = 0 >> ctooltip = "" >> lEditMode = .T. >> Name = "Form1" >> >> ADD OBJECT grid1 AS grid WITH ; >> ColumnCount = 3, HeaderHeight = 35, ; >> Left = 0, Top = 0, ; >> Height = 323, Width = 318, ; >> Panel = 1, RowHeight = 24, ; >> RecordSource = "test_data", ; >> TabIndex = 11, ; >> Name = "Grid1", ; >> Column1.ControlSource = "test_data.usercode", ; >> Column1.Width = 59, ; >> Column1.Visible = .T., ; >> Column1.Name = "Column1", ; >> Column2.ControlSource = "test_data.prod_code", ; >> Column2.Width = 87, ; >> Column2.Visible = .T., ; >> Column2.Name = "Column2", ; >> Column3.ControlSource = "test_data.prod_name", ; >> Column3.Width = 126, ; >> Column3.Name = "Column3" >> >> PROCEDURE Resize >> This.grid1.Height = This.Height >> This.grid1.Width = This.Width >> ENDPROC >> >> PROCEDURE Unload >> Close databases all >> Wait clear >> ENDPROC >> >> PROCEDURE Init >> >> ENDPROC >> >> PROCEDURE Load >> Create cursor Test_Data ; >> (UserCode C(3), UserName C(15), Prod_Code C(3), Prod_Name C(15), Prod_Info C(15)) >> Insert into Test_Data Values ; >> ('001', 'My Name', '001', 'Product #1', 'InfoTip #1') >> Insert into Test_Data Values ; >> ('002', 'Your Name', '002', 'Product #2', 'InfoTip #2') >> Insert into Test_Data Values ; >> ('003', 'His Name', '003', 'Product #3', 'InfoTip #3') >> Insert into Test_Data Values ; >> ('004', 'Her Name', '004', 'Product #4', 'InfoTip #4') >> Insert into Test_Data Values ; >> ('005', 'Whatever', '005', 'Product #5', 'InfoTip #5') >> Insert into Test_Data Values ; >> ('006', 'Blah!', '006', 'Product #6', 'InfoTip #6') >> Go top >> ENDPROC >> >> >> PROCEDURE grid1.Init >> With This >> .Column1.Header1.Caption = "User" >> .Column2.Header1.Caption = "Product Code" >> .Column3.Header1.Caption = "Product Name" >> .Column1.RemoveObject('Text1') >> .Column2.RemoveObject('Text1') >> .Column3.RemoveObject('Text1') >> .Column1.AddObject('Text1', 'GridText') >> .Column2.AddObject('Text1', 'GridText') >> .Column3.AddObject('Text1', 'GridText') >> >> .SetAll('Alignment', 2, 'Header') >> .SetAll('DynamicBackColor', ; >> 'iif(ThisForm.nRec == recno(), RGB(0,0,160), ' + ; >> 'This.BackColor)', 'Column') >> .SetAll('DynamicForeColor', ; >> 'iif(ThisForm.nRec == recno(), RGB(255,255,0), ' + ; >> 'This.ForeColor)', 'Column') >> EndWith >> ThisForm.Height = This.Height >> ThisForm.Width = This.Width >> ENDPROC >> >> PROCEDURE grid1.MouseMove >> LPARAMETERS nButton, nShift, nXCoord, nYCoord >> Local lnWhere, lnRelRow, lnRelCol, lnX, lcColumn >> Store 0 to lnWhere, lnRelRow, lnRelCol >> >> This.GridHitTest(nXCoord, nYCoord, @lnWhere, @lnRelRow, @lnRelCol) >> With ThisForm >> If .lEditMode >> This.ToolTipText = '' >> If ((lnRelRow != .nrow) or (lnRelCol != .ncol) or ; >> empty(.ctooltip)) and (lnWhere == 3) and ; >> between(lnRelCol, 1, This.ColumnCount) >> >> .nrow = lnRelRow >> .ncol = lnRelCol >> .LockScreen = .T. >> This.ActivateCell(lnRelRow, lnRelCol) >> Go recno() >> .nrec = recno() >> Do case >> Case (lnRelCol == 1) >> .ctooltip = ' ' + alltrim(UserName) + ' ' >> Case between(lnRelCol, 2, 3) >> .ctooltip = ' ' + alltrim(Prod_Info) + ' ' >> EndCase >> This.Columns[lnRelCol].Text1.ToolTipText = .ctooltip >> This.Refresh() >> .LockScreen = .F. >> NoDefault >> endif >> else >> If ((lnRelRow != .nrow2) or (lnRelCol != .ncol2)) and ; >> (lnWhere = 3) and between(lnRelCol, 1, This.ColumnCount) >> >> .nrow2 = lnRelRow >> .ncol2 = lnRelCol >> lnRec = recno() >> .LockScreen = .T. >> This.ActivateCell(lnRelRow, lnRelCol) >> Go recno() >> .nrec = recno() >> This.ActivateCell(.nrow, .ncol) >> This.Refresh() >> .LockScreen = .F. >> NoDefault >> endif >> >> endif >> EndWith >> ENDPROC >> >> PROCEDURE grid1.Column1.MouseMove >> LPARAMETERS nButton, nShift, nXCoord, nYCoord >> This.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) >> ENDPROC >> >> PROCEDURE grid1.Column2.MouseMove >> LPARAMETERS nButton, nShift, nXCoord, nYCoord >> This.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) >> ENDPROC >> >> PROCEDURE grid1.Column3.MouseMove >> LPARAMETERS nButton, nShift, nXCoord, nYCoord >> This.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) >> ENDPROC >>ENDDEFINE >> >>************************************************** >> >>DEFINE CLASS GridText AS textbox >> Height = 23 >> Width = 100 >> Name = "Text" >> Visible = .T. >> BorderStyle = 1 >> Margin = 2 >> >> PROCEDURE Click >> With ThisForm >> If .lEditMode >> Keyboard '{Home}' clear >> .lEditMode = .F. >> else >> .nrow = .nrow2 >> .ncol = .ncol2 >> endif >> .nrec = recno() >> EndWith >> ENDPROC >> >> PROCEDURE MouseMove >> LPARAMETERS nButton, nShift, nXCoord, nYCoord >> This.Parent.MouseMove(nButton, nShift, nXCoord, nYCoord) >> ENDPROC >> >> PROCEDURE KeyPress >> LPARAMETERS nKeyCode, nShiftAltCtrl >> ThisForm.lEditMode = .F. >> ENDPROC >> >> PROCEDURE LostFocus >> If inlist(lastkey(), 5, 9, 13, 15, 24, 27) >> ThisForm.lEditMode = .T. >> endif >> ENDPROC >>ENDDEFINE >>