I got around stopping dblclick on cell 2 with the following which now all works.
There may be some here to help someone else.
Code: Select all
#include "HMG.CH"
# define blue (0,128,255)
FUNCTION main()
PRIVATE acell, GL:= 0
OPNFLS()
DEFINE WINDOW Form_1 ;
AT 10,0 ;
WIDTH 1000 HEIGHT 900 ;
TITLE 'HMG Grid Demo' ;
Modal
DEFINE BUTTON button_1
ROW 800
COL 490
WIDTH 120
HEIGHT 30
CAPTION "SAVE && EXIT"
ACTION Form_1.Release
END BUTTON
DEFINE GRID Grid_2
ROW 60
COL 20 //140
WIDTH 490 //1100
HEIGHT 325 // 310 //370
BACKCOLOR { 180, 180, 200}
FONTCOLOR { 0, 0, 0 }
HEADERS {'Item','Qty','Description','Sellprice','Total'}
WIDTHS {100,70,100,90,100 }
COLUMNCONTROLS { {'TEXTBOX','CHARACTER','!!!!!!!!!!!!!!!'},{'TEXTBOX','NUMERIC','9999.99'},;
{'TEXTBOX','CHARACTER','!!!!!!!!!!!!!!!'},;
{'TEXTBOX','NUMERIC','9999999.99'},{'TEXTBOX','NUMERIC','9999999.99'}}
ROWSOURCE "PITEM"
COLUMNFIELDS { 'ITEM' , 'QTY','DESC', 'PRICE','VAL(STR(QTY*PRICE,10,2))'}
JUSTIFY { GRID_JTFY_LEFT,GRID_JTFY_RIGHT,GRID_JTFY_LEFT, GRID_JTFY_RIGHT,GRID_JTFY_RIGHT }
COLUMNWHEN { { || .F. },{ || iIf(HMG_GetLastVirtualKeyDown() == 13, .T., .F.)}, { || .T. },{ || .T. },{ || .F. }}
ONHEADCLICK { {|| msgbox(item) }, {|| chinv() },{ || '' }, {|| '' }, { || ''} }
VALUE {1,1}
CELLNAVIGATION .F.
ONCHANGE { || {CH4()}}
ALLOWEDIT .T.
LOCKCOLUMNS 5
* ALLOWDELETE .T.
END GRID
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
RETURN
FUNCTION CH4
Local aCell , AcellValue, Change:=0 //********************** BEFORE EVERY RETURN NEEDS A HMG_CleanLastVirtualKeyDown()
PRIVATE OQty:= 0, Nqty:= 0, Inum := '', Qd:= 0
aCell:= Form_1.Grid_2.value
IF aCell[2] = 2 .AND. HMG_GetLastVirtualKeyDown() == 13
select pitem
Go Form_1.Grid_2.Recno //sets the pinv_it file to grid
INum := ALLTRIM(ITEM)
select inv
seek INum
if found()
if rlock()
else
select pitem
msginfo('Inventory Item in Use ** Try Later')
HMG_CleanLastVirtualKeyDown()
Form_1.Grid_2.ClearBuffer
Form_1.Grid_2.value:=aCell
return
endif
endif
select pitem
OQty := VAL(ALLTRIM(STR(PITEM->QTY,10,2)))
Nqty := Form_1.Grid_2.CellEx (aCell[1] , aCell[2])
Qd := val(alltrim(str(oQty,10,1)))-val(alltrim(str(nQty,10,2)))
if rlock()
replace qty with Nqty
else
msginfo('Can Not Lock Item')
HMG_CleanLastVirtualKeyDown()
select inv
unlock
select pitem
Form_1.Grid_2.ClearBuffer
Form_1.Grid_2.value:=aCell
return
endif
***************** Inventory Update
select Inv
replace qty with qty + Qd
unlock
select pitem
Form_1.Grid_2.value:=aCell
Form_1.Grid_2.Refresh
ELSE
HMG_CleanLastVirtualKeyDown()
RETURN
ENDIF
HMG_CleanLastVirtualKeyDown()
RETURN
Function chinv
go form_1.grid_2.recno
select inv
seek pitem->item
msgbox(num1 + " On Hand "+ALLTRIM(str(INV->qty))+ " "+PITEM->ITEM)
select pitem
return
FUNCTION CLOSEFLS
CLOSE PITEM
CLOSE INV
CLEAR ALL
RETURN
FUNCTION OPNFLS
LOCAL CF, indcode := 65, IND:= '', KY := 'R'
if ! file('inv.dbf')
CF := {}
aADD(CF,{'NUM1' ,'C' , 15,0})
aADD(CF,{'DESC' ,'C' , 15,0})
aADD(CF,{'PRICE' ,'N' ,10,2 })
aADD(CF,{'QTY' ,'N' ,10,0 })
DBCREATE( 'INV.DBF',CF )
USE
USE INV EXCLUSIVE NEW
DO WHILE RECNO()< 5
* IND := 'CHR('+ALLTRIM(STR(INDCODE))+')'
INV->( DBAPPEND())
INV->( FIELDPUT(1, 'P'+ALLTRIM(STR(100000+RECNO())) ))
INV->( FIELDPUT(2, 'PARTS'))
INV->( FIELDPUT(3, 24.95 - (RECNO()*3)))
INDCODE:=INDCODE+1
LOOP
ENDDO
INDEX ON NUM1 TO NUM1
REPLACE ALL QTY WITH 1
USE
ENDIF
SELECT 0
USE INV NEW SHARED
INDEX ON NUM1 TO NUM1
SET INDEX TO NUM1
GO 3
*RLOCK()
*INDEX ON ITEM TO ITEM
*NORD := INDEXORD()
if ! file('pitem.dbf')
CF := {}
aADD(CF,{'NUM1' ,'C' , 15,0})
aADD(CF,{'DESC' ,'C' , 15,0})
aADD(CF,{'PRICE' ,'N' ,10,2})
aADD(CF,{'QTY' ,'N' ,10,2})
aADD(CF,{'DESC' ,'C' , 15,0})
aADD(CF,{'ITEM' ,'C' , 15,0})
DBCREATE( 'PITEM.DBF',CF )
USE
USE PITEM EXCLUSIVE NEW
APPEND FROM INV
REPLACE ALL ITEM WITH NUM1
REPLACE ALL QTY WITH 1
INDEX ON ITEM TO NUM1
USE
ENDIF
SELECT 0
USE PITEM SHARED
* SET INDEX TO ITEM
INDEX ON ITEM TO ITEM
RETURN