Оптимизация кода - формы основанные на Template - VB
Формулировка задачи:
Вопрос ко всем профи!
У меня есть много форм в программе, выпролняющие похожие функции (работа с БД). У всех есть тоже количество коммандных кнопок, объект ADODB.Recordset, и т.д.
Количество же полей различно.
Мне надоело делать copy-paste для всех форм, контролей и т.д.
В С++ можно было бы создать базовый класс от которого все остальные наследовали бы одинаковые свойства и функции.
Что можно сделать в VB чтобы получить подобный эффект ?
Например для таких свойств и функций:
Спасибо всем, кто откликнится.
(надеюсь мой вопрос будет инересен все кто пишет на VB)
Решение задачи: «Оптимизация кода - формы основанные на Template»
textual
Листинг программы
Private mConn As ADODB.Connection Private mRst As ADODB.Recordset ' ------------------------------------------------------- Private m_FieldsNumber As Integer Private m_ConnString As String Private m_SqlString As String Public Property Get FieldsNumber() As Integer FieldsNumber = m_FieldsNumber End Property Public Property Get ConnString() As String ConnString = m_ConnString End Property Public Property Let ConnString(ByVal NewData As String) m_ConnString = NewData End Property Public Property Get SqlString() As String SqlString = m_SqlString End Property Public Property Let SqlString(ByVal NewData As String) m_SqlString = NewData End Property Public Function Connect() As Boolean Set mConn = New ADODB.Connection On Error GoTo ErrorHandler mConn.Open m_ConnString Set mRst = New ADODB.Recordset With mRst .CacheSize = 50 .CursorLocation = adUseClient .CursorType = adOpenStatic .LockType = adLockReadOnly .ActiveConnection = mConn .Open m_SqlString End With ' Если мы здесь - рекордсет удался! If Not CreateFields Then Connect = False Exit Function End If Connect = True Exit Function ErrorHandler: Connect = False End Function Public Function Disconnect() As Boolean If mRst.State = adStateOpen Then mRst.Close Set mRst = Nothing If mConn.State = adStateOpen Then mConn.Close Set mConn = Nothing End Function Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Call Disconnect End Sub Private Function CreateFields() As Boolean ' определяет число полей в рекордсете и создаёт для них пары 'label <-> textbox' Dim fd As ADODB.Field On Error GoTo ErrorHandler labFieldName(0).Visible = False txtFieldValue(0).Visible = False m_FieldsNumber = 0 For Each fd In mRst.Fields m_FieldsNumber = m_FieldsNumber + 1 Load labFieldName(m_FieldsNumber) With labFieldName(m_FieldsNumber) .Caption = fd.Name .Visible = True .Top = 400 * (m_FieldsNumber - 1) + 100 End With Load txtFieldValue(m_FieldsNumber) With txtFieldValue(m_FieldsNumber) .Text = fd.Value .Visible = True .Top = 400 * (m_FieldsNumber - 1) + 100 End With Next fd Me.Height = m_FieldsNumber * 400 + 600 Me.Caption = 'Пример ленточной формы' CreateFields = True Exit Function ErrorHandler: CreateFields = False End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д