Flexgrid Version .5 alpha
Posted: Thu Jan 29, 2004 7:21 am
Code updated for 5.20+
ok here is my yet again updated attempt. ive removed the lockcolumn size, and added HIGHLIGHTING of events, saving and opening flexgrid files, and the saving of notes typed in the "notes" box. NOTE NOTE::: in order to get the info window to pop up you have to RIGHT CLICK on the listicon gadget. cant seem to separate left click and left double click with this code. copy and paste the code and give it a go. it works on XP. i know the code isnt the most optimized, but it seems to work really well. comments and additions are welcome. i hope you guys can really use this.
have fun and hit me up with some tips and suggestions or additions
ok here is my yet again updated attempt. ive removed the lockcolumn size, and added HIGHLIGHTING of events, saving and opening flexgrid files, and the saving of notes typed in the "notes" box. NOTE NOTE::: in order to get the info window to pop up you have to RIGHT CLICK on the listicon gadget. cant seem to separate left click and left double click with this code. copy and paste the code and give it a go. it works on XP. i know the code isnt the most optimized, but it seems to work really well. comments and additions are welcome. i hope you guys can really use this.
Code: Select all
; PureBasic Visual Designer v3.81 BETA build 1302
Global listiconnumber,clickedlisticon,currentitemselection,eventname$,totaleventitems
;- Window Constants
Enumeration
#Window_0
#Window_1
EndEnumeration
;- Gadget Constants
Enumeration
#Button_0
#Button_1
#Combo_0
#Combo_1
#Text_0
#Text_1
#String_0
#Text_3
#Editor_0
#Text_5
#ScrollArea_1
EndEnumeration
Global Dim flexgriddata1.s(48)
Global Dim flexgriddata2.s(48)
Global Dim flexgriddata3.s(48)
Global Dim flexgriddata4.s(48)
Global Dim flexgriddata5.s(48)
Global Dim flexgriddata6.s(48)
Global Dim flexgriddata7.s(48)
Global Dim notesdata1.s(48)
Global Dim notesdata2.s(48)
Global Dim notesdata3.s(48)
Global Dim notesdata4.s(48)
Global Dim notesdata5.s(48)
Global Dim notesdata6.s(48)
Global Dim notesdata7.s(48)
Procedure Flexgridgadget(scrollareanumber,flexgridx,flexgridy,flexgridwidth,flexgridheight,scrollwidth,scrollheight)
ScrollAreaGadget(scrollareanumber, flexgridx, flexgridy, flexgridwidth, flexgridheight, scrollwidth, scrollheight, 10)
listiconnumber=scrollareanumber
ListIconGadget(listiconnumber+1, 40, 30, 110, 700, "Sunday", 105, #PB_ListIcon_MultiSelect | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
ListIconGadget(listiconnumber+2, 150, 30, 110, 700, "Monday", 105, #PB_ListIcon_MultiSelect | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
ListIconGadget(listiconnumber+3, 260, 30, 110, 700, "Tuesday", 105, #PB_ListIcon_MultiSelect | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
ListIconGadget(listiconnumber+4, 370, 30, 110, 700, "Wednesday", 105, #PB_ListIcon_MultiSelect | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
ListIconGadget(listiconnumber+5, 480, 30, 110, 700, "Thursday", 105, #PB_ListIcon_MultiSelect | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
ListIconGadget(listiconnumber+6, 590, 30, 110, 700, "Friday", 105, #PB_ListIcon_MultiSelect | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
ListIconGadget(listiconnumber+7, 700, 30, 110, 700, "Saturday", 105, #PB_ListIcon_MultiSelect | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
;add text boxes EVERY OTHER ITEM that mark the hours
starttimehour=5
textgadgetnumber=listiconnumber+7
y=25 ;start at height=25
For a=listiconnumber+7 To listiconnumber+30
y=y+28 ;this value works best to line up boxes with listicon rows
textgadgetnumber=textgadgetnumber+1 ;add one to the previous gadget number
starttimehour=starttimehour+1 ;add one to the previous hour
If starttimehour>=0 And starttimehour<=11
ampm$="am"
ElseIf starttimehour>=12 And starttimehour<=23
ampm$="pm"
EndIf
If starttimehour=24 ;when we get to midnight, we start all over
starttimehour=starttimehour-24
ampm$="am"
TextGadget(textgadgetnumber,0,y,40,13,Str(starttimehour)+":00"+ampm$)
Else
TextGadget(textgadgetnumber,0,y,40,13,Str(starttimehour)+":00"+ampm$)
EndIf
Next
For a= listiconnumber+1 To listiconnumber+7 ;now we add empty spaces to the listicons
For b=0 To 47
AddGadgetItem(a,b,"")
Next
Next
EndProcedure
Procedure Open_Window_0()
If OpenWindow(#Window_0, 0, 0, 830, 609, "PB FlexGrid",
#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
Flexgridgadget(#ScrollArea_1,0, 10, 830, 590, 850, 750)
CreateMenu(0, WindowID(#Window_0)) ; here the menu creating starts....
MenuTitle("File")
MenuItem(1, "Open")
MenuItem(2, "Save")
MenuItem(3, "Save as")
MenuItem(4, "Print")
EndIf
EndProcedure
Procedure Open_Window_1() ;this is the information window
If OpenWindow(#Window_1, 237, 162, 458, 293, "Enter Information",
#PB_Window_SizeGadget | #PB_Window_ScreenCentered)
ButtonGadget(#Button_0, 110, 250, 90, 30, "Enter")
ButtonGadget(#Button_1, 240, 250, 90, 30, "Cancel")
ComboBoxGadget(#Combo_0, 170, 20, 100, 350)
ComboBoxGadget(#Combo_1, 170, 60, 100, 350)
TextGadget(#Text_0, 70, 20, 70, 20, "Start:", #PB_Text_Center)
TextGadget(#Text_1, 70, 60, 70, 20, "Stop:", #PB_Text_Center)
StringGadget(#String_0, 110, 100, 310, 20, "")
TextGadget(#Text_3, 40, 100, 70, 20, "Event:", #PB_Text_Center)
EditorGadget(#Editor_0, 110, 130, 310, 110)
TextGadget(#Text_5, 40, 170, 70, 20, "Notes:", #PB_Text_Center)
hour=5 ;here we add all the times to the comboboxes
d=-2
For a=0 To 23
d=d+2
hour=hour+1
If hour>=0 And hour<=11
ampm$="am"
ElseIf hour>=12 And hour<=23
ampm$="pm"
EndIf
If hour=24
hour=hour-24
ampm$="am"
AddGadgetItem(#Combo_0,d,Str(hour)+":00"+ampm$)
AddGadgetItem(#Combo_0,d+1,Str(hour)+":30"+ampm$)
Else
AddGadgetItem(#Combo_0,d,Str(hour)+":00"+ampm$)
AddGadgetItem(#Combo_0,d+1,Str(hour)+":30"+ampm$)
EndIf
Next
hour=5 ;here we add all the times to the comboboxes
d=-2
For a=0 To 23
d=d+2
hour=hour+1
If hour>=0 And hour<=11
ampm$="am"
ElseIf hour>=12 And hour<=23
ampm$="pm"
EndIf
If hour=24
hour=hour-24
ampm$="am"
AddGadgetItem(#Combo_1,d,Str(hour)+":00"+ampm$)
AddGadgetItem(#Combo_1,d+1,Str(hour)+":30"+ampm$)
Else
AddGadgetItem(#Combo_1,d,Str(hour)+":00"+ampm$)
AddGadgetItem(#Combo_1,d+1,Str(hour)+":30"+ampm$)
EndIf
Next
EndIf
EndProcedure
Procedure writeINI(section.s,key.s,value.s,inifile.s)
result=WritePrivateProfileString_(section,key,value,inifile)
ProcedureReturn result
EndProcedure
Procedure.s readINI(section.s,key.s,empty.s,inifile.s)
result.s=Space(255)
GetPrivateProfileString_(section,key,empty,@result,255,inifile)
ProcedureReturn result
EndProcedure
Procedure saveflexgrid()
For a=0 To 47
flexgriddata1(a)=GetGadgetItemText(listiconnumber+1,a,0)
Next
For a=0 To 47
flexgriddata2(a)=GetGadgetItemText(listiconnumber+2,a,0)
Next
For a=0 To 47
flexgriddata3(a)=GetGadgetItemText(listiconnumber+3,a,0)
Next
For a=0 To 47
flexgriddata4(a)=GetGadgetItemText(listiconnumber+4,a,0)
Next
For a=0 To 47
flexgriddata5(a)=GetGadgetItemText(listiconnumber+5,a,0)
Next
For a=0 To 47
flexgriddata6(a)=GetGadgetItemText(listiconnumber+6,a,0)
Next
For a=0 To 47
flexgriddata7(a)=GetGadgetItemText(listiconnumber+7,a,0)
Next
filename$=SaveFileRequester("Choose A Flexgrid File To Save","","Flexgrid|*.fgf",0)
filepart$=GetExtensionPart(filename$)
If filepart$="fgf"
mainfile$=filename$
Else
mainfile$=filename$ + ".fgf"
EndIf
For a=0 To 47
writeINI("Sunday",Str(a),flexgriddata1(a),mainfile$)
writeINI("Sunday","Notes"+Str(a),notesdata1(a),mainfile$)
Next
For a=0 To 47
writeINI("Monday",Str(a),flexgriddata2(a),mainfile$)
writeINI("Monday","Notes"+Str(a),notesdata2(a),mainfile$)
Next
For a=0 To 47
writeINI("Tuesday",Str(a),flexgriddata3(a),mainfile$)
writeINI("Tuesday","Notes"+Str(a),notesdata3(a),mainfile$)
Next
For a=0 To 47
writeINI("Wednesday",Str(a),flexgriddata4(a),mainfile$)
writeINI("Wednesday","Notes"+Str(a),notesdata4(a),mainfile$)
Next
For a=0 To 47
writeINI("Thursday",Str(a),flexgriddata5(a),mainfile$)
writeINI("Thursday","Notes"+Str(a),notesdata5(a),mainfile$)
Next
For a=0 To 47
writeINI("Friday",Str(a),flexgriddata6(a),mainfile$)
writeINI("Friday","Notes"+Str(a),notesdata6(a),mainfile$)
Next
For a=0 To 47
writeINI("Saturday",Str(a),flexgriddata7(a),mainfile$)
writeINI("Saturday","Notes"+Str(a),notesdata7(a),mainfile$)
Next
EndProcedure
Procedure openflexgrid()
mainfile$=OpenFileRequester("Please Choose A Flexgrid To Open","","Flexgrid|*.fgf",0)
If mainfile$=""
Else
For a=0 To 47
sunday$=readINI("Sunday",Str(a),"",mainfile$)
notesdata1(a)=readINI("Sunday","Notes"+Str(a),"",mainfile$)
SetGadgetItemText(listiconnumber+1,a,sunday$,0)
Next
For a=0 To 47
Monday$=readINI("Monday",Str(a),"",mainfile$)
notesdata2(a)=readINI("Monday","Notes"+Str(a),"",mainfile$)
SetGadgetItemText(listiconnumber+2,a,Monday$,0)
Next
For a=0 To 47
Tuesday$=readINI("Tuesday",Str(a),"",mainfile$)
notesdata3(a)=readINI("Tuesday","Notes"+Str(a),"",mainfile$)
SetGadgetItemText(listiconnumber+3,a,Tuesday$,0)
Next
For a=0 To 47
Wednesday$=readINI("Wednesday",Str(a),"",mainfile$)
notesdata4(a)=readINI("Wednesday","Notes"+Str(a),"",mainfile$)
SetGadgetItemText(listiconnumber+4,a,Wednesday$,0)
Next
For a=0 To 47
Thursday$=readINI("Thursday",Str(a),"",mainfile$)
notesdata5(a)=readINI("Thursday","Notes"+Str(a),"",mainfile$)
SetGadgetItemText(listiconnumber+5,a,Thursday$,0)
Next
For a=0 To 47
Friday$=readINI("Friday",Str(a),"",mainfile$)
notesdata6(a)=readINI("Friday","Notes"+Str(a),"",mainfile$)
SetGadgetItemText(listiconnumber+6,a,Friday$,0)
Next
For a=0 To 47
Saturday$=readINI("Saturday",Str(a),"",mainfile$)
notesdata7(a)=readINI("Saturday","Notes"+Str(a),"",mainfile$)
SetGadgetItemText(listiconnumber+7,a,Saturday$,0)
Next
EndIf
EndProcedure
;-Main Program
Open_Window_0();open our window
;-Event Loop
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
eventtype=EventType()
Select EventType()
Case #PB_EventType_LeftClick
GadgetID = EventGadget()
If GadgetID>=listiconnumber+1 And GadgetID<=listiconnumber+7
clickedlisticon=GadgetID
currentitemselection=GetGadgetState(clickedlisticon)
currentevent$=GetGadgetItemText(clickedlisticon,currentitemselection,0)
g=currentitemselection
If currentevent$<>"|||||||||||||||||||||||||||||||||||||||||||||||" And currentevent$<>""
Repeat
g=g+1
currentevent$=GetGadgetItemText(clickedlisticon,g,0)
If currentevent$<> "|||||||||||||||||||||||||||||||||||||||||||||||"
Break
EndIf
SetGadgetItemState(clickedlisticon,g,1)
Until currentevent$<> "|||||||||||||||||||||||||||||||||||||||||||||||"
ElseIf currentevent$="|||||||||||||||||||||||||||||||||||||||||||||||"
g=currentitemselection
Repeat
g=g+1
currentevent$=GetGadgetItemText(clickedlisticon,g,0)
If currentevent$= "|||||||||||||||||||||||||||||||||||||||||||||||"
SetGadgetItemState(clickedlisticon,g,1)
EndIf
Until currentevent$<>"|||||||||||||||||||||||||||||||||||||||||||||||"
g=currentitemselection
Repeat
g=g-1
currentevent$=GetGadgetItemText(clickedlisticon,g,0)
If currentevent$= "|||||||||||||||||||||||||||||||||||||||||||||||"
SetGadgetItemState(clickedlisticon,g,1)
EndIf
Until currentevent$<>"|||||||||||||||||||||||||||||||||||||||||||||||"
SetGadgetItemState(clickedlisticon,g,1)
EndIf
EndIf
Select GadgetID
Case #Button_1
EnableWindow_(WindowID(#Window_0),#True)
HideWindow(#Window_1,1)
Case #Button_0
timeresult=GetGadgetState(#Combo_0)
timeresult1=GetGadgetState(#Combo_1)
totaltime=timeresult1-timeresult
If totaltime<0
MessageRequester("Error","You Specified A Time Range That Goes Backwards",#PB_MessageRequester_Ok)
Else
EnableWindow_(WindowID(#Window_0),#True)
eventname$=GetGadgetText(#String_0)
If eventname$=""
Else
SetGadgetItemText(clickedlisticon,currentitemselection,eventname$,0)
For f=currentitemselection+1 To currentitemselection+totaltime
SetGadgetItemText(clickedlisticon,f,"|||||||||||||||||||||||||||||||||||||||||||||||",0)
Next
If totaltime<>totaleventitems
itemstoclear=totaleventitems-totaltime
For s=currentitemselection+totaltime+1 To currentitemselection+totaltime+1+itemstoclear
SetGadgetItemText(clickedlisticon,s,"",0)
Next
ElseIf eventname$=""
For s=currentitemselection To totaleventitems
SetGadgetItemText(clickedlisticon,s,"",0)
Next
EndIf
EndIf
If clickedlisticon=listiconnumber+1
notesdata1(currentitemselection)=GetGadgetText(#Editor_0)
ElseIf clickedlisticon=listiconnumber+2
notesdata2(currentitemselection)=GetGadgetText(#Editor_0)
ElseIf clickedlisticon=listiconnumber+3
notesdata3(currentitemselection)=GetGadgetText(#Editor_0)
ElseIf clickedlisticon=listiconnumber+4
notesdata4(currentitemselection)=GetGadgetText(#Editor_0)
ElseIf clickedlisticon=listiconnumber+5
notesdata5(currentitemselection)=GetGadgetText(#Editor_0)
ElseIf clickedlisticon=listiconnumber+6
notesdata6(currentitemselection)=GetGadgetText(#Editor_0)
ElseIf clickedlisticon=listiconnumber+7
notesdata7(currentitemselection)=GetGadgetText(#Editor_0)
EndIf
HideWindow(#Window_1,1)
EndIf
EndSelect
Case #PB_EventType_RightClick
GadgetID = EventGadget()
If GadgetID>=listiconnumber+1 And GadgetID<=listiconnumber+7
clickedlisticon=GadgetID
currentitemselection=GetGadgetState(clickedlisticon)
currentevent$=GetGadgetItemText(clickedlisticon,currentitemselection,0)
g=currentitemselection
totaleventitems=1
Repeat
g=g+1
result$=GetGadgetItemText(clickedlisticon,g,0)
If result$="|||||||||||||||||||||||||||||||||||||||||||||||"
totaleventitems=totaleventitems+1
ElseIf result$=""
Break
EndIf
Until result$<>"|||||||||||||||||||||||||||||||||||||||||||||||"
If currentevent$="|||||||||||||||||||||||||||||||||||||||||||||||"
Else
Open_Window_1()
SetGadgetState(#Combo_0,currentitemselection)
SetGadgetState(#Combo_1,currentitemselection+totaleventitems-1)
SetGadgetText(#String_0,currentevent$)
If clickedlisticon=listiconnumber+1
SetGadgetText(#Editor_0,notesdata1(currentitemselection))
ElseIf clickedlisticon=listiconnumber+2
SetGadgetText(#Editor_0,notesdata2(currentitemselection))
ElseIf clickedlisticon=listiconnumber+3
SetGadgetText(#Editor_0,notesdata3(currentitemselection))
ElseIf clickedlisticon=listiconnumber+4
SetGadgetText(#Editor_0,notesdata4(currentitemselection))
ElseIf clickedlisticon=listiconnumber+5
SetGadgetText(#Editor_0,notesdata5(currentitemselection))
ElseIf clickedlisticon=listiconnumber+6
SetGadgetText(#Editor_0,notesdata6(currentitemselection))
ElseIf clickedlisticon=listiconnumber+7
SetGadgetText(#Editor_0,notesdata7(currentitemselection))
EndIf
EnableWindow_(WindowID(#Window_0),#False);user double clicks, and presto--info window pops up
EndIf
EndIf
EndSelect
Case #PB_Event_Menu
eventmenu=EventMenu()
Select eventmenu
Case 2
saveflexgrid()
Case 1
openflexgrid()
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow