clear
** END HEADER -- do not remove this line
//
// Generated on 2022-01-04
//
parameter bModal
local f
f = new date_picker_gridForm()
if (bModal)
f.mdi = false // ensure not MDI
f.readModal()
else
f.open()
endif
class date_picker_gridForm of FORM
with (this)
onOpen = class::FORM_ONOPEN
metric = 6 // Pixels
height = 411.0
left = 270.0
top = 42.0
width = 619.0
text = ""
endwith
this.DBASESAMPLES1 = new DATABASE(this)
with (this.DBASESAMPLES1)
left = 46.0
width = 78.0
height = 37.0
databaseName = "DBASESAMPLES"
active = true
endwith
this.ORDERS1 = new QUERY(this)
with (this.ORDERS1)
width = 45.0
height = 37.0
database = form.dbasesamples1
sql = "select * from ORDERS.DBF"
active = true
endwith
with (this.ORDERS1.rowset)
onNavigate = class::ROWSET_ONNAVIGATE
endwith
this.GRID1 = new GRID(this)
with (this.GRID1)
dataLink = form.orders1.rowset
columns["COLUMN1"] = new GRIDCOLUMN(form.GRID1)
with (columns["COLUMN1"])
dataLink = form.orders1.rowset.fields["orderid"]
editorType = 1 // EntryField
width = 110.0
endwith
columns["COLUMN2"] = new GRIDCOLUMN(form.GRID1)
with (columns["COLUMN2"])
dataLink = form.orders1.rowset.fields["customerid"]
editorType = 3 // SpinBox
width = 130.0
endwith
columns["COLUMN3"] = new GRIDCOLUMN(form.GRID1)
with (columns["COLUMN3"])
dataLink = form.orders1.rowset.fields["orderdate"]
editorType = 3 // SpinBox
width = 120.0
endwith
columns["COLUMN4"] = new GRIDCOLUMN(form.GRID1)
with (columns["COLUMN4"])
dataLink = form.orders1.rowset.fields["employeeid"]
editorType = 3 // SpinBox
width = 130.0
endwith
columns["COLUMN5"] = new GRIDCOLUMN(form.GRID1)
with (columns["COLUMN5"])
dataLink = form.orders1.rowset.fields["shipdate"]
editorType = 3 // SpinBox
width = 120.0
endwith
with (columns["COLUMN1"].headingControl)
value = "OrderID"
endwith
with (columns["COLUMN2"].editorControl)
rangeMax = 100
rangeMin = 1
endwith
with (columns["COLUMN2"].headingControl)
value = "CustomerID"
endwith
with (columns["COLUMN3"].editorControl)
onLeftDblClick = class::EDITORCONTROL_ONLEFTDBLCLICK
rangeMax = {2001-03-10}
rangeMin = {2000-11-30}
endwith
with (columns["COLUMN3"].headingControl)
value = "OrderDate"
endwith
with (columns["COLUMN4"].editorControl)
rangeMax = 100
rangeMin = 1
endwith
with (columns["COLUMN4"].headingControl)
value = "EmployeeID"
endwith
with (columns["COLUMN5"].editorControl)
onLeftDblClick = class::EDITORCONTROL_ONLEFTDBLCLICK1
rangeMax = {2001-02-05}
rangeMin = {2000-10-28}
endwith
with (columns["COLUMN5"].headingControl)
value = "ShipDate"
endwith
headingHeight = 22.0
cellHeight = 22.0
height = 212.0
left = 35.0
top = 160.0
width = 516.0
endwith
this.DATETIMEPICKER1 = new DATETIMEPICKER(this)
with (this.DATETIMEPICKER1)
visible = false
height = 22.0
left = 173.0
top = 1.0
width = 122.0
dataLink = form.orders1.rowset.fields["orderdate"]
format = 2 // Short Date with Century
endwith
with (this.DATETIMEPICKER1.dropDown)
showTodayDate = false
endwith
this.TEXT1 = new TEXT(this)
with (this.TEXT1)
height = 22.0
left = 79.0
top = 48.0
width = 593.0
text = "Click on cell in a date column then Left Double Click on the celll to show Date Picker"
endwith
this.DATETIMEPICKER2 = new DATETIMEPICKER(this)
with (this.DATETIMEPICKER2)
visible = false
height = 22.0
left = 314.0
top = 1.0
width = 122.0
dataLink = form.orders1.rowset.fields["shipdate"]
format = 2 // Short Date with Century
endwith
with (this.DATETIMEPICKER2.dropDown)
showTodayDate = false
endwith
this.RADIOBUTTON1 = new RADIOBUTTON(this)
with (this.RADIOBUTTON1)
height = 24.0
left = 35.0
top = 83.0
width = 420.0
text = "DateTimePicker calendar opens automatically."
group = true
value = true
endwith
this.RADIOBUTTON2 = new RADIOBUTTON(this)
with (this.RADIOBUTTON2)
height = 24.0
left = 35.0
top = 112.0
width = 420.0
text = "User to open DateTimePicker calendar manually."
endwith
this.rowset = this.orders1.rowset
function editorControl_onLeftDblClick(flags, col, row)
getcursorpos(form.point) //form.point is position on screen
cmd = 'nCol_width = form.grid1.columns["column'+form.grid1.currentcolumn+'"].width'
&cmd
form.datetimepicker1.width = nCol_width //set dattimepicker width to match width of selected date column
nX_org_scr = form.point.getx(form.point,0) //save screen coordinates for initial leftDblClick in date column
nY_org_scr = form.point.gety(form.point,4) // "
screentoclient(form.hwnd,form.point) //form.point is now position in form
nX_org_frm = form.point.getx(form.point,0) //save form coordinates for initial leftDblClick in date column
nY_org_frm = form.point.gety(form.point,4) // "
form.colpoint.setx(form.grid1.left+30,0) // set position in 1st coloumn on same row. skip indicator column
form.colpoint.sety(ny_org_frm)
clienttoscreen(form.hwnd,form.colpoint) //convert colpoint from form position to screen position
nX_colpt = form.colpoint.getx(form.colpoint,0) //get screen coordinates for mouseclick
ny_colpt = form.colpoint.gety(form.colpoint,4)
form.rmMouse.screenLeftClick(nX_colpt,nY_colpt ) //click in left column in same row
nCol = form.grid1.currentcolumn //save column number of 1st column displayed
setcursorpos(nX_org_scr,nY_org_scr) //set cursor back to where leftDblClick was made in date column
form.rmMouse.screenLeftClick(nX_Org_scr,nY_org_scr ) //click in left column in same row
nLeft = 25 //width of indicator column
for n = nCol to form.grid1.currentcolumn - 1
cmd = 'form.grid1.columns["column'+n+'"].width'
nLeft += &cmd
next
form.datetimepicker1.left = nLeft + form.grid1.left
nRows = int((form.point.gety(form.point,4)-form.grid1.top)/(form.grid1.cellheight+1))
nTop = form.grid1.top
nFudge = 2
form.datetimepicker1.top = nTop+nFudge+((form.grid1.cellheight+1)*nrows)
form.datetimepicker1.visible = true
//datetimepicker1 moved over selected cell and made visible
if form.radiobutton1.value = true
//set up form.colpoint to be over the datetimepicker drop-down button.
//coordinates are set up using form values. These coordinates then need
//to be converted to the screen values which are required for setcursorpos()
//and rmMouse.screenLeftClick()
screentoclient(form.hwnd,form.colpoint)
form.colpoint.setx(form.datetimepicker1.left+form.datetimepicker1.width-5) //set x coordinate almost to right hand end
//nY is still pointing to the selected row.
clienttoscreen(form.hwnd,form.colpoint)
nX_drop_scr = form.colpoint.getx(form.colpoint,0) //save screen coordinates for initial leftDblClick in date column
nY_drop_scr = form.colpoint.gety(form.colpoint,4) // "
setcursorpos(nX_drop_scr,nY_drop_scr)
form.rmMouse.screenLeftClick(nX_drop_scr,nY_drop_scr )
endif
return
function editorControl_onLeftDblClick1(flags, col, row)
getcursorpos(form.point) //form.point is position on screen
cmd = 'nCol_width = form.grid1.columns["column'+form.grid1.currentcolumn+'"].width'
&cmd
form.datetimepicker2.width = nCol_width //set dattimepicker width to match width of selected date column
nX_org_scr = form.point.getx(form.point,0) //save screen coordinates for initial leftDblClick in date column
nY_org_scr = form.point.gety(form.point,4) // "
screentoclient(form.hwnd,form.point) //form.point is now position in form
nX_org_frm = form.point.getx(form.point,0) //save form coordinates for initial leftDblClick in date column
nY_org_frm = form.point.gety(form.point,4) // "
form.colpoint.setx(form.grid1.left+30,0) // set position in 1st coloumn on same row. skip indicator column
form.colpoint.sety(ny_org_frm)
clienttoscreen(form.hwnd,form.colpoint) //convert colpoint from form position to screen position
nX_colpt = form.colpoint.getx(form.colpoint,0) //get screen coordinates for mouseclick
ny_colpt = form.colpoint.gety(form.colpoint,4)
form.rmMouse.screenLeftClick(nX_colpt,nY_colpt ) //click in left column in same row
nCol = form.grid1.currentcolumn //save column number of 1st column displayed
setcursorpos(nX_org_scr,nY_org_scr) //set cursor back to where leftDblClick was made in date column
form.rmMouse.screenLeftClick(nX_Org_scr,nY_org_scr ) //click in left column in same row
nLeft = 25 //width of indicator column
for n = nCol to form.grid1.currentcolumn - 1
cmd = 'form.grid1.columns["column'+n+'"].width'
nLeft += &cmd
next
form.datetimepicker2.left = nLeft + form.grid1.left
nRows = int((form.point.gety(form.point,4)-form.grid1.top)/(form.grid1.cellheight+1))
nTop = form.grid1.top
nFudge = 2
form.datetimepicker2.top = nTop+nFudge+((form.grid1.cellheight+1)*nrows)
form.datetimepicker2.visible = true
//datetimepicker2 moved over selected cell and made visible
if form.radiobutton1.value = true
//set up form.colpoint to be over the datetimepicker drop-down button.
//coordinates are set up using form values. These coordinates then need
//to be converted to the screen values which are required for setcursorpos()
//and rmMouse.screenLeftClick()
screentoclient(form.hwnd,form.colpoint)
form.colpoint.setx(form.datetimepicker2.left+form.datetimepicker2.width-5) //set x coordinate almost to right hand end
//nY is still pointing to the selected row.
clienttoscreen(form.hwnd,form.colpoint)
nX_drop_scr = form.colpoint.getx(form.colpoint,0) //save screen coordinates for initial leftDblClick in date column
nY_drop_scr = form.colpoint.gety(form.colpoint,4) // "
setcursorpos(nX_drop_scr,nY_drop_scr)
form.rmMouse.screenLeftClick(nX_drop_scr,nY_drop_scr )
endif return
function rowset_onNavigate(type, nRows)
this.parent.parent.datetimepicker1.visible = false
this.parent.parent.datetimepicker2.visible = false
return
function form_onOpen
set procedure to :duflp:rmMouseevents.cc
form.rmMouse = new rmMouseevents(form)
if type("GetCursorPos") # "FP"
extern CLOGICAL GetCursorPos(CPTR) user32
endif
if type("SetCursorPos") # "FP"
extern CLOGICAL SetCursorPos(CINT,CINT) user32
endif
if type("ScreenToClient") # "FP"
extern clogical ScreenToClient(chandle,cptr) user32
endif
if type("ClientToScreen") # "FP"
extern clogical ClientToScreen(chandle,cptr) user32
endif
form.point = new point()
form.colpoint = new point()
return
endclass
Warning: Unknown: write failed: No space left on device (28) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct () in Unknown on line 0