Imports System.Windows.Forms Public Class BaseQueryForm Inherits Windows.Forms.Form Private mintCurrentQueryBySortColumn As Integer Private mintCurrentReportSortColumn As Integer Private mobjQueryFormQueryByItemColumnSortRules() As clsGridColumnSortRule Private mobjQueryFormReportItemColumnSortRules() As clsGridColumnSortRule #Region " Windows Form Designer generated code " Public Sub New() MyBase.New() 'This call is required by the Windows Form Designer. InitializeComponent() 'Add any initialization after the InitializeComponent() call End Sub 'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub 'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer 'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Private WithEvents btnExit As Windows.Forms.Button Protected WithEvents fraReport As Windows.Forms.GroupBox Private WithEvents lvwReportItemsList As Windows.Forms.ListView Friend WithEvents fraQueryBy As Windows.Forms.GroupBox Private WithEvents lvwQueryByItemsList As Windows.Forms.ListView Friend WithEvents fraOtherQueryParms As Windows.Forms.GroupBox Private Sub InitializeComponent() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(BaseQueryForm)) Me.btnExit = New Windows.Forms.Button Me.fraReport = New Windows.Forms.GroupBox Me.lvwReportItemsList = New Windows.Forms.ListView Me.fraQueryBy = New Windows.Forms.GroupBox Me.lvwQueryByItemsList = New Windows.Forms.ListView Me.fraOtherQueryParms = New Windows.Forms.GroupBox Me.fraReport.SuspendLayout() Me.fraQueryBy.SuspendLayout() Me.SuspendLayout() ' 'btnExit ' Me.btnExit.Anchor = CType((Windows.Forms.AnchorStyles.Top Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles) Me.btnExit.Location = New System.Drawing.Point(976, 16) Me.btnExit.Name = "btnExit" Me.btnExit.Size = New System.Drawing.Size(96, 24) Me.btnExit.TabIndex = 2 Me.btnExit.Text = "E&xit" ' 'fraReport ' Me.fraReport.Anchor = CType(((Windows.Forms.AnchorStyles.Bottom Or Windows.Forms.AnchorStyles.Left) _ Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles) Me.fraReport.Controls.Add(Me.lvwReportItemsList) Me.fraReport.Location = New System.Drawing.Point(10, 320) Me.fraReport.Name = "fraReport" Me.fraReport.Size = New System.Drawing.Size(1064, 272) Me.fraReport.TabIndex = 1 Me.fraReport.TabStop = False Me.fraReport.Text = "Add..." ' 'lvwReportItemsList ' Me.lvwReportItemsList.Anchor = CType((((Windows.Forms.AnchorStyles.Top Or Windows.Forms.AnchorStyles.Bottom) _ Or Windows.Forms.AnchorStyles.Left) _ Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles) Me.lvwReportItemsList.FullRowSelect = True Me.lvwReportItemsList.GridLines = True Me.lvwReportItemsList.HideSelection = False Me.lvwReportItemsList.Location = New System.Drawing.Point(8, 16) Me.lvwReportItemsList.MultiSelect = False Me.lvwReportItemsList.Name = "lvwReportItemsList" Me.lvwReportItemsList.Size = New System.Drawing.Size(960, 312) Me.lvwReportItemsList.TabIndex = 0 Me.lvwReportItemsList.UseCompatibleStateImageBehavior = False Me.lvwReportItemsList.View = Windows.Forms.View.Details ' 'fraQueryBy ' Me.fraQueryBy.Anchor = CType(((Windows.Forms.AnchorStyles.Bottom Or Windows.Forms.AnchorStyles.Left) _ Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles) Me.fraQueryBy.Controls.Add(Me.lvwQueryByItemsList) Me.fraQueryBy.Controls.Add(Me.fraOtherQueryParms) Me.fraQueryBy.Location = New System.Drawing.Point(10, 10) Me.fraQueryBy.Name = "fraQueryBy" Me.fraQueryBy.Size = New System.Drawing.Size(958, 302) Me.fraQueryBy.TabIndex = 0 Me.fraQueryBy.TabStop = False Me.fraQueryBy.Text = "Query By" ' 'lvwQueryByItemsList ' Me.lvwQueryByItemsList.Anchor = CType((((Windows.Forms.AnchorStyles.Top Or Windows.Forms.AnchorStyles.Bottom) _ Or Windows.Forms.AnchorStyles.Left) _ Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles) Me.lvwQueryByItemsList.FullRowSelect = True Me.lvwQueryByItemsList.GridLines = True Me.lvwQueryByItemsList.HideSelection = False Me.lvwQueryByItemsList.Location = New System.Drawing.Point(8, 16) Me.lvwQueryByItemsList.MultiSelect = False Me.lvwQueryByItemsList.Name = "lvwQueryByItemsList" Me.lvwQueryByItemsList.Size = New System.Drawing.Size(944, 200) Me.lvwQueryByItemsList.TabIndex = 0 Me.lvwQueryByItemsList.UseCompatibleStateImageBehavior = False Me.lvwQueryByItemsList.View = Windows.Forms.View.Details ' 'fraOtherQueryParms ' Me.fraOtherQueryParms.Anchor = CType(((Windows.Forms.AnchorStyles.Bottom Or Windows.Forms.AnchorStyles.Left) _ Or Windows.Forms.AnchorStyles.Right), Windows.Forms.AnchorStyles) Me.fraOtherQueryParms.Location = New System.Drawing.Point(8, 216) Me.fraOtherQueryParms.Name = "fraOtherQueryParms" Me.fraOtherQueryParms.Size = New System.Drawing.Size(944, 75) Me.fraOtherQueryParms.TabIndex = 1 Me.fraOtherQueryParms.TabStop = False ' 'BaseQueryForm ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(1080, 598) Me.Controls.Add(Me.fraQueryBy) Me.Controls.Add(Me.fraReport) Me.Controls.Add(Me.btnExit) Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon) Me.MinimumSize = New System.Drawing.Size(848, 568) Me.Name = "BaseQueryForm" Me.Text = "BaseQueryForm" Me.fraReport.ResumeLayout(False) Me.fraQueryBy.ResumeLayout(False) Me.ResumeLayout(False) End Sub #End Region Private Sub BaseQueryForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load If Me.DesignMode Then MessageBox.Show("The BaseQueryForm class must be inherited, and contains methods that must be overridden." + vbCrLf + "They have been declared in the base class and will throw NotImplementedException at runtime if not overridden.") End If lvwQueryByItemsList.Sorting = SortOrder.None lvwReportItemsList.Sorting = SortOrder.None LoadQueryByItemsList() InitializeReportControls() Dim lobjQueryByColumnClickEventArgs As New Windows.Forms.ColumnClickEventArgs(0) lvwQueryByItemsList_ColumnClick(Me, lobjQueryByColumnClickEventArgs) Dim lobjReportColumnClickEventArgs As New Windows.Forms.ColumnClickEventArgs(0) lvwReportItemsList_ColumnClick(Me, lobjReportColumnClickEventArgs) fraQueryBy.Height() = fraReport.Top - fraQueryBy.Top - 10 If fraOtherQueryParms.Controls.Count > 0 Then fraOtherQueryParms.Visible = False lvwQueryByItemsList.Height = fraQueryBy.Height - 10 Else lvwQueryByItemsList.Height = fraOtherQueryParms.Top - 10 End If lvwReportItemsList.Height = fraReport.Height - 10 End Sub Protected Overridable Sub LoadQueryByItemsList() If Not Me.DesignMode Then Throw New NotImplementedException End If End Sub Protected Overridable Sub InitializeReportControls() If Not Me.DesignMode Then Throw New NotImplementedException End If End Sub Protected Overridable Function ReportOnQueryByItem(ByVal lstvwQueryByItem As ListViewItem) As Boolean If Not Me.DesignMode Then Throw New NotImplementedException End If End Function Protected Overridable Function UserWantsDetailOnResult(ByVal lstvwResultItem As ListViewItem) As Boolean If Not Me.DesignMode Then Throw New NotImplementedException End If End Function Protected Overridable Sub UserRequestedToExit() If Not Me.DesignMode Then Throw New NotImplementedException End If End Sub Protected ReadOnly Property QueryByListItems() As ListView.ListViewItemCollection Get Return lvwQueryByItemsList.Items End Get End Property Protected ReadOnly Property QueryByListColumns() As ListView.ColumnHeaderCollection Get Return lvwQueryByItemsList.Columns End Get End Property Protected Property MyBaseQueryFormQueryByColumnSortRules() As clsGridColumnSortRule() Get Return mobjQueryFormQueryByItemColumnSortRules End Get Set(ByVal iValue As clsGridColumnSortRule()) mobjQueryFormQueryByItemColumnSortRules = iValue End Set End Property Protected ReadOnly Property ReportListItems() As ListView.ListViewItemCollection Get Return lvwReportItemsList.Items End Get End Property Protected ReadOnly Property ReportListColumns() As ListView.ColumnHeaderCollection Get Return lvwReportItemsList.Columns End Get End Property Protected Property MyBaseQueryFormReportColumnSortRules() As clsGridColumnSortRule() Get Return mobjQueryFormReportItemColumnSortRules End Get Set(ByVal iValue As clsGridColumnSortRule()) mobjQueryFormReportItemColumnSortRules = iValue End Set End Property Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click UserRequestedToExit() End Sub Private Sub lvwQueryByItemsList_ColumnClick(ByVal sender As System.Object, ByVal e As Windows.Forms.ColumnClickEventArgs) mintCurrentQueryBySortColumn = e.Column lvwQueryByItemsList.ListViewItemSorter = New clsGridSorter(e.Column, mobjQueryFormQueryByItemColumnSortRules) End Sub Private Sub lvwQueryByItemsList_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) DoReportClick() End Sub Private Sub lvwReportItemsList_ColumnClick(ByVal sender As System.Object, ByVal e As Windows.Forms.ColumnClickEventArgs) Handles lvwReportItemsList.ColumnClick mintCurrentReportSortColumn = e.Column lvwReportItemsList.ListViewItemSorter = New clsGridSorter(e.Column, mobjQueryFormReportItemColumnSortRules) End Sub Private Sub lvwReportItemsList_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles lvwReportItemsList.DoubleClick DoUserWantsDetailOnResult() End Sub Private Sub DoReportClick() If lvwQueryByItemsList.SelectedItems.Count = 0 Then MessageBox.Show("Must select an item to query by", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If ReportOnQueryByItem(lvwQueryByItemsList.SelectedItems(0)) 'Check if there are results - if so show them ' - if not hide them If lvwReportItemsList.Items.Count = 0 Then lvwReportItemsList.Visible = False Else lvwReportItemsList.Visible = True End If End Sub Private Sub DoUserWantsDetailOnResult() If lvwReportItemsList.SelectedItems.Count = 0 Then MessageBox.Show("Must select an item to show details results for", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error) Exit Sub End If UserWantsDetailOnResult(lvwReportItemsList.SelectedItems(0)) End Sub End Class