OK - here is my first problem and i think it is just of case of me making it too complicated.
DatabaseTypes.bmx
Type TDatabaseTables
Global db:TDBConnection
Field query:TDatabaseQuery
Field record:TQueryRecord
Method Init()
If Not db Then
db = LoadDatabase("ODBC", "C2D_TaskListManager_v4", Null, Null, Null, Null, "C2DTaskListManager.dsn")
End If
' Check that the DB connection has been made
If Not db Then
Notify("Unable to Open the Database C2D_TaskListManager_v4.mdb from the FILEDSN C2DTaskListManager.dsn")
End
End If
' Check if the database has an error on opening
If db.hasError() Then
errorAndClose(db)
End If
End Method
Function errorAndClose(db:TDBConnection)
DebugLog(db.error().toString())
db.close()
End
End Function
End Type
Type TSelectorType Extends TDatabaseTables
Field SelectorTypeID:Int
Field SelectorTypeName:String
Global SelectorTypeList:TList
Method Create()
' Open the Database
Self.init
If db.isOpen() Then
' Get the data from the table
query = db.executeQuery("Select * from tblSelType")
' Loop through each record and add the values to the TList
For Local record:TQueryRecord = EachIn query
Local SelectorType:TSelectorType = New TSelectorType
SelectorType.SelectorTypeID = record.GetInt(0)
SelectorType.SelectorTypeName = record.GetString(1)
If Not SelectorTypeList Then SelectorTypeList = CreateList()
ListAddLast(SelectorTypeList,SelectorType)
Next
' Close the Database
db.close()
EndIf
EndMethod
End Type
Type TSelector Extends TDatabaseTables
Field SelectorID:Int
Field SelectorTypeID:Int
Field Name:String
Field Contact1:String
Field Phone1:String
Field Mobile1:String
Field Email1:String
Field Contact2:String
Field Phone2:String
Field Mobile2:String
Field Email2:String
Global SelectorList:TList
Method Create()
' Open the Database
Self.init
If db.isOpen() Then
' Get the data from the table
query = db.executeQuery("SELECT * FROM tblSelector")' WHERE SelTypeID = " + )
' Loop through each record and add the values to the TList
For Local record:TQueryRecord = EachIn query
Local Selector:TSelector = New TSelector
Selector.SelectorID = record.GetInt(0)
Selector.SelectorTypeID = record.GetInt(1)
Selector.Name = record.GetString(2)
Selector.Contact1 = record.GetString(3)
Selector.Phone1 = record.GetString(4)
Selector.Mobile1 = record.GetString(5)
Selector.Email1 = record.GetString(6)
Selector.Contact2 = record.GetString(7)
Selector.Phone2 = record.GetString(8)
Selector.Mobile2 = record.GetString(9)
Selector.Email2 = record.GetString(10)
If Not SelectorList Then SelectorList = CreateList()
ListAddLast(SelectorList,Selector)
Next
' Close the Database
db.close()
EndIf
EndMethod
End Type
C2DTaskListManager_v0.04.bmx
'
' BlitzMax code generated with wxCodeGen v0.91 : 16 Feb 2008 10:16:57
'
'
' PLEASE DO "NOT" EDIT THIS FILE!
'
SuperStrict
Framework wx.wxApp
Import wx.wxFrame
Import wx.wxListBox
Import wx.wxListCtrl
Import wx.wxPanel
Import wx.wxRadioBox
Import wx.wxStaticBitmap
Import wx.wxStatusBar
Import wx.wxTextCtrl
Import wx.wxWindow
Import BaH.DBODBC
Import brl.filesystem
Import brl.system
Include "DatabaseTypes.bmx"
New MyApp.run()
Type MyApp Extends wxApp
Method OnInit:Int()
wxInitAllImageHandlers()
wxImage.AddHandler( New wxXPMHandler ) ' for Mac/Win32 (it is default on Linux)
Local frame:MyFrameBase = MyFrameBase(New MyFrameBase.Create(, , "C2D TaskList Manager v0.02"))
frame.show()
SetTopWindow(frame)
Return True
End Method
End Type
Type MyFrameBase Extends wxFrame
Field m_panel:wxPanel
Field m_bitmapLeft:wxStaticBitmap
Field m_listBoxSelectorType:wxListBox
Field m_listCtrlDue:wxListCtrl
Field m_radioBoxDue:wxRadioBox
Field m_bitmapRight:wxStaticBitmap
Field m_listBoxSelector:wxListBox
Field m_listCtrlMainTask:wxListCtrl
Field m_listCtrlSubTask:wxListCtrl
Field m_textCtrlSubTaskNotes:wxTextCtrl
Field m_radioBoxShowTasks:wxRadioBox
Field m_radioBoxShowMainTasks:wxRadioBox
Field m_statusBar:wxStatusBar
Field iSelectorType:Int = 0
Method Create:MyFrameBase(parent:wxWindow = Null,id:Int = wxID_ANY, title:String = "C2D Task List Manager", x:Int = -1, y:Int = -1, w:Int = 860, h:Int = 600, style:Int = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL)
Return MyFrameBase(Super.Create(parent, id, title, x, y, w, h, style))
End Method
Method OnInit()
' SetExtraStyle(wxFRAME_EX_CONTEXTHELP)
SetMinSize(860,600)
SetMaxSize(1024,768)
Local bSizerFrame:wxBoxSizer
bSizerFrame = New wxBoxSizer.Create(wxVERTICAL)
bSizerFrame.SetMinSize(800,600)
m_panel = New wxPanel.Create(Self, wxID_ANY,,,,, wxTAB_TRAVERSAL)
Local bSizerPanel:wxBoxSizer
bSizerPanel = New wxBoxSizer.Create(wxVERTICAL)
Local bSizeTopPortion:wxBoxSizer
bSizeTopPortion = New wxBoxSizer.Create(wxHORIZONTAL)
' m_bitmapLeft = New wxStaticBitmap.Create(m_panel, wxID_ANY, wxBitmap.CreateFromFile("C:/C2D/BlitzBasic/C2DTaskListManager/Images/Dragon-Small.png", wxBITMAP_TYPE_ANY))
' bSizeTopPortion.Add(m_bitmapLeft, 0, wxALL, 5)
Rem
Local tblSelectorType:TSelectorType = New TSelectorType
tblSelectorType.Create()
Local counterSelectorTypeList:Int = CountList( tblSelectorType.SelectorTypeList:TList )
Local SelectorTypeListArray:String [counterSelectorTypeList]
For Local counter:Int = 0 To counterSelectorTypeList-1
SelectorTypeListArray[counter] = tblSelectorType.SelectorTypeList.(1).ValueAtIndex(counter)
Next
End Rem
' Local m_listBoxSelectorTypeChoices:String[] = SelectorTypeListArray[]
Local m_listBoxSelectorTypeChoices:String[] = [ "Companies", "Investigations", "Projects" ]
m_listBoxSelectorType = New wxListBox.Create(m_panel, wxID_ANY, m_listBoxSelectorTypeChoices,,,,, wxLB_HSCROLL|wxLB_SINGLE|wxLB_SORT)
bSizeTopPortion.Add(m_listBoxSelectorType, 0, wxALL, 5)
m_listCtrlDue = New wxListCtrl.Create(m_panel, wxID_ANY,,,,, wxLC_ICON)
bSizeTopPortion.Add(m_listCtrlDue, 1, wxALL|wxEXPAND, 5)
Local m_radioBoxDueChoices:String[] = [ "Over Due", "Due Today", "Due in Next 7 Days" ]
m_radioBoxDue = New wxRadioBox.Create(m_panel, wxID_ANY, "Due Date Options",,,,, m_radioBoxDueChoices, 1, wxRA_SPECIFY_COLS)
bSizeTopPortion.Add(m_radioBoxDue, 0, wxALL, 5)
' m_bitmapRight = New wxStaticBitmap.Create(m_panel, wxID_ANY, wxBitmap.CreateFromFile("C:/C2D/BlitzBasic/C2DTaskListManager/Images/Dragon-Small.png", wxBITMAP_TYPE_ANY))
' bSizeTopPortion.Add(m_bitmapRight, 0, wxALL, 5)
bSizerPanel.AddSizer(bSizeTopPortion, 0, wxEXPAND, 5)
Local bSizerMiddlePortion:wxBoxSizer
bSizerMiddlePortion = New wxBoxSizer.Create(wxHORIZONTAL)
m_listBoxSelector = New wxListBox.Create(m_panel, wxID_ANY, Null)
bSizerMiddlePortion.Add(m_listBoxSelector, 1, wxALL|wxEXPAND, 5)
Local bSizerTaskLists:wxBoxSizer
bSizerTaskLists = New wxBoxSizer.Create(wxVERTICAL)
m_listCtrlMainTask = New wxListCtrl.Create(m_panel, wxID_ANY,,,,, wxLC_ICON)
bSizerTaskLists.Add(m_listCtrlMainTask, 2, wxALL|wxEXPAND, 5)
m_listCtrlSubTask = New wxListCtrl.Create(m_panel, wxID_ANY,,,,, wxLC_ICON)
bSizerTaskLists.Add(m_listCtrlSubTask, 3, wxALL|wxEXPAND, 5)
m_textCtrlSubTaskNotes = New wxTextCtrl.Create(m_panel, wxID_ANY, "",,,,, wxTE_BESTWRAP|wxTE_LEFT|wxTE_MULTILINE|wxTE_NOHIDESEL)
m_textCtrlSubTaskNotes.SetMaxLength(1000)
bSizerTaskLists.Add(m_textCtrlSubTaskNotes, 1, wxALL|wxEXPAND, 5)
bSizerMiddlePortion.AddSizer(bSizerTaskLists, 3, wxEXPAND, 5)
bSizerPanel.AddSizer(bSizerMiddlePortion, 1, wxEXPAND, 5)
Local bSizerBottomPortion:wxBoxSizer
bSizerBottomPortion = New wxBoxSizer.Create(wxHORIZONTAL)
Local m_radioBoxShowTasksChoices:String[] = [ "Show My Tasks", "Show My Depts Tasks", "Show ALL Tasks" ]
m_radioBoxShowTasks = New wxRadioBox.Create(m_panel, wxID_ANY, "Show Team Member Main Tasks",,,,, m_radioBoxShowTasksChoices, 1, wxRA_SPECIFY_ROWS)
bSizerBottomPortion.Add(m_radioBoxShowTasks, 0, wxALL, 5)
Local m_radioBoxShowMainTasksChoices:String[] = [ "Active Tasks", "Completed Tasks", "Cancelled Tasks", "ALL Tasks" ]
m_radioBoxShowMainTasks = New wxRadioBox.Create(m_panel, wxID_ANY, "Filter Main Tasks",,,,, m_radioBoxShowMainTasksChoices, 1, wxRA_SPECIFY_ROWS)
bSizerBottomPortion.Add(m_radioBoxShowMainTasks, 0, wxALL, 5)
bSizerPanel.AddSizer(bSizerBottomPortion, 0, wxEXPAND, 5)
m_panel.SetSizer(bSizerPanel)
m_panel.Layout()
bSizerFrame.Add(m_panel, 1, wxALL|wxEXPAND, 5)
m_statusBar = Self.CreateStatusBar(3, 0|wxST_SIZEGRIP, wxID_ANY)
SetSizer(bSizerFrame)
Layout()
Center(wxBOTH)
m_listBoxSelectorType.ConnectAny(wxEVT_COMMAND_LISTBOX_SELECTED, _SelectoTyperClicked, Null, Self)
m_listBoxSelectorType.ConnectAny(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, _EditSelectorType, Null, Self)
m_listCtrlDue.ConnectAny(wxEVT_COMMAND_LIST_COL_CLICK, _DueListSort, Null, Self)
m_listCtrlDue.ConnectAny(wxEVT_COMMAND_LIST_DELETE_ITEM, _DueItemDeleted, Null, Self)
m_listCtrlDue.ConnectAny(wxEVT_COMMAND_LIST_ITEM_SELECTED, _DueItemSelected, Null, Self)
m_radioBoxDue.ConnectAny(wxEVT_COMMAND_RADIOBOX_SELECTED, _DueDateClicked, Null, Self)
m_listBoxSelector.ConnectAny(wxEVT_COMMAND_LISTBOX_SELECTED, _SelectorClicked, Null, Self)
m_listBoxSelector.ConnectAny(wxEVT_COMMAND_LISTBOX_DOUBLECLICKED, _EditSelector, Null, Self)
m_listCtrlMainTask.ConnectAny(wxEVT_COMMAND_LIST_COL_CLICK, _MainTaskSort, Null, Self)
m_listCtrlMainTask.ConnectAny(wxEVT_COMMAND_LIST_DELETE_ITEM, _MainTaskDeleted, Null, Self)
m_listCtrlMainTask.ConnectAny(wxEVT_COMMAND_LIST_ITEM_SELECTED, _MainTaskSelected, Null, Self)
m_listCtrlSubTask.ConnectAny(wxEVT_COMMAND_LIST_COL_CLICK, _SubTaskSort, Null, Self)
m_listCtrlSubTask.ConnectAny(wxEVT_COMMAND_LIST_DELETE_ITEM, _SubTaskDeleted, Null, Self)
m_listCtrlSubTask.ConnectAny(wxEVT_COMMAND_LIST_ITEM_SELECTED, _SubTaskHighlighted, Null, Self)
m_radioBoxShowTasks.ConnectAny(wxEVT_COMMAND_RADIOBOX_SELECTED, _TMTasksClicked, Null, Self)
m_radioBoxShowMainTasks.ConnectAny(wxEVT_COMMAND_RADIOBOX_SELECTED, _FilterMainTasksClicked, Null, Self)
End Method
Function _SelectoTyperClicked(event:wxEvent)
MyFrameBase(event.sink).SelectoTyperClicked(wxCommandEvent(event))
End Function
Method SelectoTyperClicked(event:wxCommandEvent)
DebugLog "Please override MyFrame.SelectoTyperClicked()"
event.Skip()
End Method
Function _EditSelectorType(event:wxEvent)
MyFrameBase(event.sink).EditSelectorType(wxCommandEvent(event))
End Function
Method EditSelectorType(event:wxCommandEvent)
DebugLog "Please override MyFrame.EditSelectorType()"
event.Skip()
End Method
Function _DueListSort(event:wxEvent)
MyFrameBase(event.sink).DueListSort(wxListEvent(event))
End Function
Method DueListSort(event:wxListEvent)
DebugLog "Please override MyFrame.DueListSort()"
event.Skip()
End Method
Function _DueItemDeleted(event:wxEvent)
MyFrameBase(event.sink).DueItemDeleted(wxListEvent(event))
End Function
Method DueItemDeleted(event:wxListEvent)
DebugLog "Please override MyFrame.DueItemDeleted()"
event.Skip()
End Method
Function _DueItemSelected(event:wxEvent)
MyFrameBase(event.sink).DueItemSelected(wxListEvent(event))
End Function
Method DueItemSelected(event:wxListEvent)
DebugLog "Please override MyFrame.DueItemSelected()"
event.Skip()
End Method
Function _DueDateClicked(event:wxEvent)
MyFrameBase(event.sink).DueDateClicked(wxCommandEvent(event))
End Function
Method DueDateClicked(event:wxCommandEvent)
DebugLog "Please override MyFrame.DueDateClicked()"
event.Skip()
End Method
Function _SelectorClicked(event:wxEvent)
MyFrameBase(event.sink).SelectorClicked(wxCommandEvent(event))
End Function
Method SelectorClicked(event:wxCommandEvent)
DebugLog "Please override MyFrame.SelectorClicked()"
event.Skip()
End Method
Function _EditSelector(event:wxEvent)
MyFrameBase(event.sink).EditSelector(wxCommandEvent(event))
End Function
Method EditSelector(event:wxCommandEvent)
DebugLog "Please override MyFrame.EditSelector()"
event.Skip()
End Method
Function _MainTaskSort(event:wxEvent)
MyFrameBase(event.sink).MainTaskSort(wxListEvent(event))
End Function
Method MainTaskSort(event:wxListEvent)
DebugLog "Please override MyFrame.MainTaskSort()"
event.Skip()
End Method
Function _MainTaskDeleted(event:wxEvent)
MyFrameBase(event.sink).MainTaskDeleted(wxListEvent(event))
End Function
Method MainTaskDeleted(event:wxListEvent)
DebugLog "Please override MyFrame.MainTaskDeleted()"
event.Skip()
End Method
Function _MainTaskSelected(event:wxEvent)
MyFrameBase(event.sink).MainTaskSelected(wxListEvent(event))
End Function
Method MainTaskSelected(event:wxListEvent)
DebugLog "Please override MyFrame.MainTaskSelected()"
event.Skip()
End Method
Function _SubTaskSort(event:wxEvent)
MyFrameBase(event.sink).SubTaskSort(wxListEvent(event))
End Function
Method SubTaskSort(event:wxListEvent)
DebugLog "Please override MyFrame.SubTaskSort()"
event.Skip()
End Method
Function _SubTaskDeleted(event:wxEvent)
MyFrameBase(event.sink).SubTaskDeleted(wxListEvent(event))
End Function
Method SubTaskDeleted(event:wxListEvent)
DebugLog "Please override MyFrame.SubTaskDeleted()"
event.Skip()
End Method
Function _SubTaskHighlighted(event:wxEvent)
MyFrameBase(event.sink).SubTaskHighlighted(wxListEvent(event))
End Function
Method SubTaskHighlighted(event:wxListEvent)
DebugLog "Please override MyFrame.SubTaskHighlighted()"
event.Skip()
End Method
Function _TMTasksClicked(event:wxEvent)
MyFrameBase(event.sink).TMTasksClicked(wxCommandEvent(event))
End Function
Method TMTasksClicked(event:wxCommandEvent)
DebugLog "Please override MyFrame.TMTasksClicked()"
event.Skip()
End Method
Function _FilterMainTasksClicked(event:wxEvent)
MyFrameBase(event.sink).FilterMainTasksClicked(wxCommandEvent(event))
End Function
Method FilterMainTasksClicked(event:wxCommandEvent)
DebugLog "Please override MyFrame.FilterMainTasksClicked()"
event.Skip()
End Method
End Type
Currently i have the list for the top left being hard coded as Company/Project/Investigation but these values need to come from the database.
I am reading the values in from the table (TSelectorType) and putting them in a list. Why - because all the example i have seen do this.
What i need to do now is get the second field (SelectorTypeName) ready to be used by the ListBox in the main program.
So i need to get the values into an array for the line:
Local m_listBoxSelectorTypeChoices:String[] = [ "Companies", "Investigations", "Projects" ]
I am obviously doing this wrong. I also think i am trying to do too many steps to achieve this.
Maybe i don't need to use the table types to get the values. I was using this format because it made the readability easy plus i could add methods for Add/Edit/Delete/Save.
Once i have this first list being populated by the table data i can finish the other listboxes and listcontrols with no difficulty.
I would appreciate some help.
Cheers
Glenn