Imports System.Windows.Forms Public Class frmEditComposer Private mobjDetailComposer As New clsComposer Protected Overrides Sub LoadExistingItemsList() Dim lobjComposer As clsComposer Dim lobjComposers As System.Collections.Generic.List(Of clsComposer) SetUpExistingItemsHeaders() lobjComposers = clsComposer.GetAllComposers Me.ExistingItemsListSuspendLayout() For Each lobjComposer In lobjComposers Me.ExistingObjectsListItems.Add(ConvertComposerToListViewItem(lobjComposer)) Next Me.ExistingItemsListResumeLayout() End Sub Private Sub SetUpExistingItemsHeaders() Me.ExistingObjectsListColumns.Add("Composer Name", 800, HorizontalAlignment.Left) 'Me.ExistingObjectsListColumns.Add("Column2", 0, HorizontalAlignment.Left) 'Me.ExistingObjectsListColumns.Add("Column3", 200, HorizontalAlignment.Left) 'Set up sorting rules Dim lobjBaseEditFormColumnSortRules(0) As clsGridColumnSortRule lobjBaseEditFormColumnSortRules(0) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString) MyBaseEditFormColumnSortRules = lobjBaseEditFormColumnSortRules End Sub Protected Overrides Sub InitializeDetailControls() 'Load data to detail controls here at form load time txtComposerName.MaxLength = MyGlobals.COMPOSER_NAME_SIZE End Sub Protected Overrides Sub SetFocusToFirstDetailControlForEdit() txtComposerName.Focus() End Sub Protected Overrides Function DetailControlsHaveDifferentDataThanExistingData(ByVal lstvwExistingItem As System.Windows.Forms.ListViewItem) As Boolean Dim lobjSavedComposer As clsComposer Dim lblnReturnValue As Boolean = False lobjSavedComposer = CType(lstvwExistingItem.Tag, clsComposer) mobjDetailComposer.ComposerName = txtComposerName.Text If lobjSavedComposer.StateIsIdentical(mobjDetailComposer) Then Return False Else Return True End If End Function Protected Overrides Function DetailControlsHaveSignificantData() As Boolean If txtComposerName.Text.Trim.Length > 0 Then Return True End If Return False End Function Protected Overrides Sub EmptyOutDetailControls() txtComposerName.Text = "" mobjDetailComposer = New clsComposer End Sub Protected Overrides Function LoadExistingDataToDetailControls(ByVal lstvwExistingItem As System.Windows.Forms.ListViewItem) As Boolean Dim lobjComposer As clsComposer Dim lblnReturnValue As Boolean = False lobjComposer = CType(lstvwExistingItem.Tag, clsComposer) txtComposerName.Text = lobjComposer.ComposerName mobjDetailComposer = CType(lobjComposer.Clone(), clsComposer) Return True End Function Protected Overrides Function ConfirmOKToDeleteExistingItem(ByVal lstvwItemToDelete As System.Windows.Forms.ListViewItem) As Boolean Dim lobjComposer As clsComposer Dim lstrReferencedBy As String = "" lobjComposer = CType(lstvwItemToDelete.Tag, clsComposer) If Not lobjComposer.OKToDelete(lstrReferencedBy) Then MessageBox.Show("Can't delete composer: " + lobjComposer.ComposerName + ". Currently used by " + lstrReferencedBy + ".", "Unable to delete", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) Return False End If Dim ldrDialogResult As DialogResult = MessageBox.Show("Are you sure you want to delete composer: " + lobjComposer.ComposerName + "?", "Delete confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) If ldrDialogResult = System.Windows.Forms.DialogResult.No Then Return False End If Return True End Function Protected Overrides Function DeleteExistingItem(ByVal lstvwItemToDelete As System.Windows.Forms.ListViewItem) As Boolean Dim lobjComposer As clsComposer lobjComposer = CType(lstvwItemToDelete.Tag, clsComposer) Return lobjComposer.Delete() End Function Protected Overrides Function SaveNewItem() As Boolean Dim lstrErrorString As String = "" mobjDetailComposer.ComposerName = txtComposerName.Text If Not mobjDetailComposer.Validate(lstrErrorString) Then MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning) Return False End If If Not mobjDetailComposer.Save() Then Return False End If Me.ExistingObjectsListItems.Add(ConvertComposerToListViewItem(mobjDetailComposer)) Return True End Function Protected Overrides Sub UserRequestedToExit() Me.Close() End Sub Protected Overrides Sub EditOrAddStarting() CType(Me.ParentForm, frmMain).DisableMenus() End Sub Protected Overrides Sub EditOrAddCompleted() CType(Me.ParentForm, frmMain).EnableMenus() End Sub Private Function ConvertComposerToListViewItem(ByVal lobjComposer As clsComposer) As ListViewItem Dim lobjItem As ListViewItem lobjItem = New ListViewItem(lobjComposer.ComposerName) 'lobjItem.SubItems.Add("Item1Col2") 'lobjItem.SubItems.Add("Item1Col3") lobjItem.Tag = lobjComposer Return lobjItem End Function Protected Overrides Function SaveNewDataForExistingItem(ByVal lstvwExistingItem As System.Windows.Forms.ListViewItem) As Boolean Dim lstrErrorString As String = "" mobjDetailComposer.ComposerName = txtComposerName.Text If Not mobjDetailComposer.Validate(lstrErrorString) Then MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning) Return False End If If Not mobjDetailComposer.Save() Then Return False End If Me.ExistingObjectsListItems.Remove(lstvwExistingItem) Me.ExistingObjectsListItems.Add(ConvertComposerToListViewItem(mobjDetailComposer)) Return True End Function Private Sub txtComposerName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtComposerName.TextChanged MyBase.DetailDataHasChanged() End Sub End Class