let myAPI! = BBjAPI()
SYSGUI = UNT
OPEN (SYSGUI) "X0"
let mySysGui! = myAPI!.getSysGui()
GOSUB CreateCalendar
GOSUB DisplayMonth
myVector! = myAPI!.makeVector()
FOR I = CurrentDay TO DaysInMonth
myVector!.addItem(STR(I))
NEXT I
Calendar!.setCellText(CurrRow,CurrCol,myVector!)
MainWindow!.setVisible(mySysGui!.TRUE)
CALLBACK(ON_CLOSE,DoAppClose,CalendarContext)
Calendar!.focus()
print "focused control ID:", MainWindow!.getFocusedControlID()
process_events
DoAppClose:
release
return
DisplayMonth:
let DayNum = 0
let FirstDayOfMonth = DayTable!.get(DATE(JUL(CurrentYear,CurrentMonth,1):"%Ds"))
let DaysInMonth = FNDaysInMonth(CurrentYear,CurrentMonth)
MonthVector!.clear()
if (CurrentDay>DaysInMonth+1) then
CurrentDay = DaysInMonth+1
endif
let CurrentJul = JUL(CurrentYear,CurrentMonth,CurrentDay)
FOR DayOfWeek = 0 TO 6
if (FirstDayOfMonth>DayOfWeek) then
let Item$ = STR(0:DayMask$)
else
let Item$ = STR(DayNum+1:DayMask$)
let DayNum = DayNum+1
endif
MonthVector!.addItem(Item$)
NEXT DayOfWeek
FOR Week = 1 TO 3
FOR DayOfWeek = 0 TO 6
let Item$ = STR(DayNum+1:DayMask$)
let DayNum = DayNum+1
MonthVector!.addItem(Item$)
NEXT DayOfWeek
NEXT Week
FOR week = 4 TO 5
FOR DayOfWeek = 0 TO 6
if (DayNum>DaysInMonth) then
let Item$ = STR(0:DayMask$)
else
let Item$ = STR(DayNum+1:DayMask$)
let DayNum = DayNum+1
endif
MonthVector!.addItem(Item$)
NEXT DayOfWeek
NEXT week
Calendar!.setCellText(MonthVector!)
let CurrRow = INT((FirstDayOfMonth+CurrentDay-1)/7)
let CurrCol = MOD(FirstDayOfMonth+CurrentDay-1,7)
Calendar!.setSelectedCell(CurrRow,CurrCol)
let CurrentMonthYear$ = DATE(CurrentJul:"%Ml %Y")
CurrDate!.setText(CurrentMonthYear$)
Calendar!.setCellText(5,5," To")
Calendar!.setCellText(5,6,"day ")
return
DEF FNDaysInMonth(fYear,fMonth)
let DaysInMonth = 30
if (fMonth<>12) then
let DaysInMonth = NUM(DATE(JUL(fYear,fMonth+1,1)-1:"%D"))-1
endif
return DaysInMonth
FNEND
CreateCalendar:
let MonthVector! = mySysGui!.makeVector()
let DayTable! = new java.util.Hashtable()
DIM DateInfo$:"Mask:C(32* = 0),SM[12]:C(3* = 0),M[12]:C(32* = 0),SD[7]:C(3* = 0),D[7]:C(32* = 0)"
let DateInfo$ = STBL("!DATE")
let dateMask$ = DateInfo.Mask$
let M = POS("%M"=dateMask$),dateMask$ = dateMask$(1,M+1)+"l"+dateMask$(M+3)
let M = POS("%Y"=dateMask$),dateMask$ = dateMask$(1,M+1)+dateMask$(M+3)
while POS("/"=dateMask$)
let M = POS("/"=dateMask$),dateMask$(M,1)=" "
wend
FOR X = 0 TO 6
let Item$ = DateInfo.SD$[x+1]
DayTable!.put(Item$,x)
NEXT X
let CurrentDate$ = DATE(CurrentJul:dateMask$)
let CurrentMonthYear$ = DATE(CurrentJul:"%Ml %Y")
let CurrentDay = NUM(DATE(CurrentJul:"%Dz"))
let CurrentMonth = NUM(DATE(CurrentJul:"%Mz"))
let CurrentYear = NUM(DATE(CurrentJul:"%Y"))
let TITLE$="BBjGrid"
let DayMask$="##B"
let CurrentJul = 0,CalX = 400,CalY = 400
let CalendarContext = mySysGui!.getAvailableContext()
mySysGui!.setContext(CalendarContext)
let MainWindow! = mySysGui!.addWindow(100,100,286,260,TITLE$,$00010013$)
let Calendar! = MainWindow!.addGrid(100,3,26,278,221)
Calendar!.setGridEditable(1)
blueColor! = mySysGui!.makeColor(mySysGui!.BLUE)
Calendar!.setColumnHeaderForeColor(blueColor!)
Calendar!.setNumRows(6)
Calendar!.setRowHeight(20)
Calendar!.setNumColumns(7)
Calendar!.setMaxColumns(255)
Calendar!.setHasColumnHeader(mySysGui!.TRUE)
Calendar!.setVerticalLinesVisible(mySysGui!.TRUE)
Calendar!.setHorizontalLinesVisible(mySysGui!.TRUE)
Calendar!.setClientEdge(mySysGui!.TRUE)
Calendar!.setSelectionMode(Calendar!.GRID_SELECT_CELL)
FOR COL = 0 TO 6
Calendar!.setColumnWidth(COL, 39)
Calendar!.setColumnAlignment(Col,Calendar!.GRID_ALIGN_RIGHT)
Calendar!.setColumnForeColor(COL, blueColor!)
NEXT COL
myVector! = mySysGui!.makeVector()
myVector!.addItem("S")
myVector!.addItem("M")
myVector!.addItem("T")
myVector!.addItem("W")
myVector!.addItem("T")
myVector!.addItem("F")
myVector!.addItem("S")
Calendar!.setColumnHeaderText(myVector!)
Calendar!.setColumnHeaderForeColor(blueColor!)
let CurrDate! = MainWindow!.addStaticText(101,45,3,90,20,"")
CurrDate!.setClientEdge(mySysGui!.TRUE)
CurrDate!.setForeColor(blueColor!)
return
|