
I include comments from the egrid help file and sample code.
Thanks in advanced.
Code: Select all
;******************************************************************************************
;'egrid5' editable grid control. By Stephen Rodriguez.
;******************************************************************************************
; DEMONSTRATION PROGRAM 5.
;******************************************************************************************
;This demo program sets up a simple egrid and shows how to use a CellCallback function
;to reinstate the selection box after a column resize.
;The same method can be used to reinstate the selection box after a column drag or a resize column by the user..
;******************************************************************************************
;*****************************************FONT DATA****************************************
Enumeration
#head1
#head2
#main
EndEnumeration
LoadFont(#main, "Arial", 9)
;SetGadgetFont(#PB_Default,FontID(#main))
;******************************************************************************************
Procedure.l MyCellCallBack(egrid, uMsg, *cellinfo.egridCellInfo)
Protected result
Static oldcol, oldrow
Select uMsg
Case #egrid_LosingFocus
If *cellinfo\row<>-1
oldcol=*cellinfo\column
oldrow=*cellinfo\row
EndIf
egrid_SetCellSelection(1, -1, 0,0, 0) ;Remove the selection.
Case #egrid_UserResizeColumn
Debug "#egrid_UserResizeColumn"
; *** FROM HELP FILE ***
; #egrid_UserResizeColumn
; Signifies that the user is attempting To resize a column in an egrid (either by clicking-And-dragging Or by double-clicking the header etc.)
; This message is only sent If the underlying egrid has the resizecolumns creation flag set To #egrid_ResizeColumnTrue.
;
; Returning #True allows the column To be resized.
; Returning #False prohibits the column from being resized
Case #egrid_RegainFocus
If *cellinfo\param=#egrid_ResizeColumn Or *cellinfo\param=#egrid_DragColumn
egrid_SelectCell(1, oldcol, oldrow, 0)
; egrid_SetCellSelection(1, oldcol,oldrow,1,1)
EndIf
Default
result = #True ;This accounts for all messages we have decided not to process.
EndSelect
ProcedureReturn result
EndProcedure
;******************************************************************************************
;*************************************WINDOW + GADGET LIST*********************************
If OpenWindow(0,0,0,640,300,"egrid4 demo 5.",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
;******************************************************************************************
;********************************************EGRID*****************************************
;Create an egrid with resizable columns.
egrid_CreateGrid(1, WindowWidth(0)/4, WindowHeight(0)/8, WindowWidth(0)/2, WindowHeight(0)/2,28,#egrid_HeaderDragDrop|#egrid_GridLines, #egrid_ResizeColumnsTrue)
;******************************************************************************************
egrid_CreateCellCallback(1, @MyCellCallBack())
egrid_SetHeaderHeight(1, 26)
egrid_SetOption(1, #egrid_HeaderBorderColour, #Red)
egrid_SetOption(1, #egrid_SelectionBorderColour, #Blue)
egrid_SetOption(1, #egrid_SelectionBorderWidth, 2)
;********************************************TEXT GADGET***********************************
;***************************************ADD COLUMNS AND ROWS TO EGRID**********************************
egrid_AddColumn(1,0,"",60)
For b=1 To 4 ;50 columns.
egrid_AddColumn(1,b,"Col " + Str(b-1),60)
Next
egrid_AddRows(1,-1, 100) ;Add 100 rows.
For b=0 To 99
egrid_SetCellText(1, 0,b, "Row "+Str(b))
Next
;*****************************************EVENT LOOP***************************************
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
Select EventGadget()
EndSelect
EndSelect
Until EventID = #PB_Event_CloseWindow
EndIf
End