5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
|
||||||
1 | ||||||
Оптимизация кода - формы основанные на Template01.11.2010, 10:03. Показов 673. Ответов 4
Метки нет (Все метки)
Вопрос ко всем профи!
У меня есть много форм в программе, выпролняющие похожие функции (работа с БД). У всех есть тоже количество коммандных кнопок, объект ADODB.Recordset, и т.д. Количество же полей различно. Мне надоело делать copy-paste для всех форм, контролей и т.д. В С++ можно было бы создать базовый класс от которого все остальные наследовали бы одинаковые свойства и функции. Что можно сделать в VB чтобы получить подобный эффект ? Например для таких свойств и функций:
(надеюсь мой вопрос будет инересен все кто пишет на VB)
0
|
01.11.2010, 10:03 | |
Ответы с готовыми решениями:
4
Оптимизация методом Ньютона (нахождение точки минимума). Оптимизация кода Как добраться к Template из кода Оптимизация кода. Замер времени выполнения части кода. Ошибки: 1) use of class template requires template argument list 2) 'T' : undeclared identifier |
Comanche
|
|||||||||||
01.11.2010, 11:42 | 2 | ||||||||||
Можно создать 'форму-шаблон', назвав её, к примеру, frmTemplate.
Затем описАть формы следующим образом:
У форм (поскольку они являются классами) можно сделать Properties, через которые передавать нужные параметры, например - строку подключения:
|
Comanche
|
|
01.11.2010, 11:50 | 3 |
Кстати, если использовать 'ленточные' формы, то на форме-шаблоне можно разместить 1 ЭУ Label и 1 ЭУ TextBox, оба - с нулевыми индексами. И тогда динамически создавать (N - 1) пар этих контролов, если число полей выборки = N. Т.к. форма будет 'ленточной' (слева - заголовок поля в лейбле, правее заголовка - соотв. текстбокс), то можно (и нужно) формализовать процесс создания/удаления заданного количества пар контролов, описав у формы-шаблона методы Create и Remove (к примеру), которые помимо собственно создания/удаления пар будут также выполнять рутинную операцию правильного размещения пар на теле формы, с ресайзингом как контролов, так и самОй формы.
В итоге может получиться симпатичный 'конструктор' ) Ну а дополн. навороты и удобства - ограничены только твоим временем и фантазией... |
Comanche
|
||||||
01.11.2010, 21:00 | 4 | |||||
Вот пример, передающий 'основную идею'... но сначала - исходные условия:
1. В проект добавьте форму и модуль. Форму нужно обозвать frmTemplate. 2. В свойствах проекта поставьте 'Запуск с Sub Main'. 3. Подключите к проекту ссылку на MS ADO. 4. Расположите на форме два ЭУ: labFieldName(0) и txtFieldValue(0). Их свойства Left, Width и Height должны соответствовать желаемому расположению; свойство Top роли не играет. 5. Сохраните проект и положите в его папку какой-нибудь MDB-файлик; соотв-но подкорректируйте переменную mdbName в модуле, а также значение, задавемое свойству SqlString формы frmFirst. КОД ФОРМЫ:
|
Comanche
|
|
01.11.2010, 21:24 | 5 |
Примечание: правильнее было бы обойтись без текстбоксов - создавая элементы 'Edit' с помощью API CreateWindowEx. Больно уж жрут текстбоксы память... особенно когда их много на форме. Код от этого усложнится несильно; главное неудобство будет в отказе от событийных процедур, любезно предоставляемых бэйсиком, - заместо них придётся наваять собственные 'оконные' процедуры. Если это привычная для вас задача, то сделаете это быстро.
|
01.11.2010, 21:24 | |
01.11.2010, 21:24 | |
Помогаю со студенческими работами здесь
5
Template definition of non-template при использовании частичной спецификации шаблонов 'MyQueue' : use of class template requires template argument list В чем различие template <typename T> от template <class T> ? Ошибка компиляции: template-id does not match any template declaration Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |