I hope this can be useful for you. I've not used array to simulate a dbf seeking.
Best regards
Code: Select all
#include "hmg.ch"
FUNCTION main()
p000_FrmDefine()
ACTIVATE WINDOW ALL
RETURN NIL
/***********************************************************
* definizione main form
***********************************************************/
STATIC FUNCTION p000_FrmDefine()
LOCAL aGcol1 := { "TEXTBOX", "CHARACTER"}
LOCAL aGcol3 := { "TEXTBOX", "NUMERIC", "99,999,999" }
LOCAL aGr1Head := { "CusCode","CusDescription" }
LOCAL aGr1Widt := { 100, 200 }
LOCAL aGr1Cols := { aGcol1, aGcol1 }
LOCAL aGr1Just := { GRID_JTFY_LEFT, GRID_JTFY_LEFT }
LOCAL aGr2Head := { "CusCode", "InvCode","Amount" }
LOCAL aGr2Widt := { 100, 100, 200 }
LOCAL aGr2Cols := { aGcol1, aGcol1, aGcol3 }
LOCAL aGr2Just := { GRID_JTFY_LEFT, GRID_JTFY_LEFT, GRID_JTFY_LEFT }
LOCAL aGr3Head := { "CusCode", "InvCode", "Detail", "Amount" }
LOCAL aGr3Widt := { 100, 100, 100, 200 }
LOCAL aGr3Cols := { aGcol1, aGcol1, aGcol1, aGcol3 }
LOCAL aGr3Just := { GRID_JTFY_LEFT, GRID_JTFY_LEFT, GRID_JTFY_LEFT, GRID_JTFY_LEFT }
SET NAVIGATION EXTENDED
DEFINE WINDOW p000Frm ;
ROW 0 ;
COL 0 ;
WIDTH 860 ;
HEIGHT 645 ;
WINDOWTYPE MAIN ;
TITLE "3 grids" ;
ON INIT p000_OnInit()
DEFINE MAIN MENU
DEFINE POPUP '&File'
MENUITEM 'e&Xit' ACTION p000_Exit()
END POPUP
END MENU
DEFINE GRID grid1
ROW 10
COL 60
WIDTH 500
HEIGHT 100
ONDBLCLICK MsgInfo( "You can do something on Grid1" )
ONCHANGE LoadGrd2()
HEADERS aGr1Head
WIDTHS aGr1Widt
COLUMNCONTROLS aGr1Cols
JUSTIFY aGr1Just
END GRID
DEFINE GRID grid2
ROW 150
COL 60
WIDTH 500
HEIGHT 100
ONDBLCLICK MsgInfo( "You can do something on Grid2" )
ONCHANGE LoadGrd3()
HEADERS aGr2Head
WIDTHS aGr2Widt
COLUMNCONTROLS aGr2Cols
JUSTIFY aGr2Just
END GRID
DEFINE GRID grid3
ROW 300
COL 60
WIDTH 500
HEIGHT 100
ONDBLCLICK MsgInfo( "You can do something on Grid3" )
HEADERS aGr3Head
WIDTHS aGr3Widt
COLUMNCONTROLS aGr3Cols
JUSTIFY aGr3Just
END GRID
END WINDOW
RETURN NIL
/***********************************************************
* OnInit
***********************************************************/
STATIC FUNCTION p000_OnInit()
p000Frm.Center
LoadGrd1()
RETURN NIL
/***********************************************************
* exit
***********************************************************/
STATIC FUNCTION p000_Exit()
ReleaseAllWindows()
RETURN NIL
/***********************************************************
* Load Data grid1
***********************************************************/
STATIC FUNCTION LoadGrd1()
p000Frm.grid1.AddItem ( {"CUSID001", "Customer 001" } )
p000Frm.grid1.AddItem ( {"CUSID002", "Customer 002" } )
p000Frm.grid1.AddItem ( {"CUSID003", "Customer 003" } )
p000Frm.grid1.AddItem ( {"CUSID004", "Customer 004" } )
p000Frm.grid1.AddItem ( {"CUSID005", "Customer 005" } )
RETURN NIL
/***********************************************************
* Load Data grid2
***********************************************************/
STATIC FUNCTION LoadGrd2()
LOCAL aTemp := {}
p000Frm.grid2.DeleteAllItems
p000Frm.grid3.DeleteAllItems
aTemp := p000Frm.grid1.Item( p000Frm.grid1.Value )
IF aTemp[1] == "CUSID001"
p000Frm.grid2.AddItem ( {"CUSID001", "INVID011", 11 } )
p000Frm.grid2.AddItem ( {"CUSID001", "INVID012", 12 } )
ENDIF
IF aTemp[1] == "CUSID002"
p000Frm.grid2.AddItem ( {"CUSID002", "INVID023", 23 } )
ENDIF
IF aTemp[1] == "CUSID004"
p000Frm.grid2.AddItem ( {"CUSID004", "INVID044", 44 } )
p000Frm.grid2.AddItem ( {"CUSID004", "INVID045", 45 } )
ENDIF
RETURN NIL
/***********************************************************
* Load Data grid3
***********************************************************/
STATIC FUNCTION LoadGrd3()
LOCAL aTemp := {}
p000Frm.grid3.DeleteAllItems
aTemp := p000Frm.grid2.Item( p000Frm.grid2.Value )
IF aTemp[1] == "CUSID001" .AND. aTemp[2] == "INVID011"
p000Frm.grid3.AddItem ( {"CUSID001", "INVID011", "ITMID001", 1 } )
p000Frm.grid3.AddItem ( {"CUSID001", "INVID011", "ITMID002", 2 } )
p000Frm.grid3.AddItem ( {"CUSID001", "INVID011", "ITMID003", 3 } )
p000Frm.grid3.AddItem ( {"CUSID001", "INVID011", "ITMID004", 4 } )
p000Frm.grid3.AddItem ( {"CUSID001", "INVID011", "ITMID005", 5 } )
p000Frm.grid3.AddItem ( {"CUSID001", "INVID011", "ITMID006", 6 } )
ENDIF
IF aTemp[1] == "CUSID001" .AND. aTemp[2] == "INVID012"
p000Frm.grid3.AddItem ( {"CUSID001", "INVID012", "ITMID001", 1 } )
p000Frm.grid3.AddItem ( {"CUSID001", "INVID012", "ITMID002", 2 } )
p000Frm.grid3.AddItem ( {"CUSID001", "INVID012", "ITMID003", 3 } )
p000Frm.grid3.AddItem ( {"CUSID001", "INVID012", "ITMID004", 4 } )
p000Frm.grid3.AddItem ( {"CUSID001", "INVID012", "ITMID005", 5 } )
p000Frm.grid3.AddItem ( {"CUSID001", "INVID012", "ITMID006", 6 } )
ENDIF
IF aTemp[1] == "CUSID002" .AND. aTemp[2] == "INVID023"
p000Frm.grid3.AddItem ( {"CUSID002", "INVID023", "ITMID001", 1 } )
p000Frm.grid3.AddItem ( {"CUSID002", "INVID023", "ITMID002", 2 } )
p000Frm.grid3.AddItem ( {"CUSID002", "INVID023", "ITMID003", 3 } )
p000Frm.grid3.AddItem ( {"CUSID002", "INVID023", "ITMID004", 4 } )
p000Frm.grid3.AddItem ( {"CUSID002", "INVID023", "ITMID005", 5 } )
p000Frm.grid3.AddItem ( {"CUSID002", "INVID023", "ITMID006", 6 } )
ENDIF
IF aTemp[1] == "CUSID004" .AND. aTemp[2] == "INVID044"
p000Frm.grid3.AddItem ( {"CUSID004", "INVID044", "ITMID001", 1 } )
p000Frm.grid3.AddItem ( {"CUSID004", "INVID044", "ITMID002", 2 } )
p000Frm.grid3.AddItem ( {"CUSID004", "INVID044", "ITMID003", 3 } )
p000Frm.grid3.AddItem ( {"CUSID004", "INVID044", "ITMID004", 4 } )
p000Frm.grid3.AddItem ( {"CUSID004", "INVID044", "ITMID005", 5 } )
p000Frm.grid3.AddItem ( {"CUSID004", "INVID044", "ITMID006", 6 } )
ENDIF
IF aTemp[1] == "CUSID004" .AND. aTemp[2] == "INVID045"
p000Frm.grid3.AddItem ( {"CUSID004", "INVID045", "ITMID001", 1 } )
p000Frm.grid3.AddItem ( {"CUSID004", "INVID045", "ITMID002", 2 } )
p000Frm.grid3.AddItem ( {"CUSID004", "INVID045", "ITMID003", 3 } )
p000Frm.grid3.AddItem ( {"CUSID004", "INVID045", "ITMID004", 4 } )
p000Frm.grid3.AddItem ( {"CUSID004", "INVID045", "ITMID005", 5 } )
p000Frm.grid3.AddItem ( {"CUSID004", "INVID045", "ITMID006", 6 } )
ENDIF
RETURN NIL