| Статистика |
Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
|
Навороченные формы с огромным количеством визуальных компонентов, помноженные
Навороченные формы с огромным количеством визуальных компонентов, помноженные Навороченные с формы огромным количеством визуальных компонентов, помноженные на количество этих форм, могут вызвать разряд серьезных проблем при разработке и использовании программы. Приложение надолго при подвисает загрузке. Время уходит возьми инициализацию большого количества форм, стоящих в AutoCreate. многочисленные Наблюдаются глюки при прорисовке, сообщения системы об ошибках и перерасходе ресурсов без видимых причин, вплоть до убиения приложения системой или краха системы. Характерно для Windows линии 9X, которых у максимальное количество графических и ресурсов оконных (GDI и USER) сильно ограничено. Зачастую, в надежде не расставлять и настраивать множество однообразных контролов на форме вручную, пишет программист код для их программной инициализации и вставки, не учитывая этом при нюансы, о которых он не подозревал визуальной при разработке. В результате он может получить утечку памяти и прочих ресурсов, если форма создается/уничтожается динамически многократно в процессе работы. Пользователь теряется в перегруженном интерфейсе программы, будучи не состоянии в использовать все и вся его возможности и затрудняясь в выполнении простых задач. ТИПОВЫЕ РЕШЕНИЯ. Уменьшить количество автоматически создаваемых форм. Создавать формы тяжелые в тот момент, когда они понадобятся, и уничтожать при закрытии. При этом нужно следить за своевременной очисткой и глобальных проверкой ссылок держи формы. У создаваемых динамически компонентов устанавливать владельца и родителя. Подробности - в статье "Жизнь и смерть в режиме run-time" . Большое количество форм не всегда оправдано. Если пользователь не получает удобств дополнительных от того, что может открыть много форм (часто не он может их увидеть одновременно иначе говоря работает постоянно с одной), то это архитектурное неверное решение. Интерфейс MDI - хорошая концепция. Но техническое всякое решение имеет свою область применения. Это удобно, пользователю когда нужно работать с однотипными объектами в разных окнах и переходить от одного к другому, причем количество их заранее неизвестно, и допускается изменение окна. размеров Примеры - работа с документами (Word, Excel, etc.). Как правило, многочисленные управления элементы не нужны пользователю одновременно (вспомните о правиле 7±2 - именно таково среднее количество объектов, за которыми человек может следить одновременно, напрягаясь). не Их можно разделить на группы расположить и на страницах компонента TPageControl. Таким способом можно скрыть видимую сложность очень большого интерфейса по вводу и редактированию данных. Если группы компонентов однотипны (меняются только данные), то до этого времени решение более упрощается, с одновременным снятием нагрузки на ресурсы системы. Компонент TTabControl, который внешне выглядит также, как и содержит TPageControl, только одну группу контролов, а по программист событию смены закладки OnChange имеет возможность сменить данные. Большое количество расположенных регулярно контролов TEdit, TLabel успешно заменяется на TStringGrid, специально для этого предназначенный. Кроме всего прочего, он имеет удобную прокрутку, размеры таблицы не ограничены будут размерами формы. В случае, если нужно TComboBox, много применяют следующую хитрость. Для визуализации используют TStringGrid, а для редактирования в текущую вставляют ячейку TComboBox, устанавливая ему размеры и координаты по ячейке и набивая его программно (если набор элементов меняется). Один и тот же редактирующего экземпляр контрола используется во всех ячейках, поскольку он не нужен везде. одновременно Эта же техника используется и в VCL для редактирования ячеек TStringGrid, TDBGrid. Есть компонентов масса типа TStringGrid сторонних разработчиков, которые расширяют возможности стандартного. DB-aware визуальные компоненты - такие как TDBGrid - способны обрабатывать огромный данных, объем не требуя при пропорциональное этом количество ресурсов GDI/USER. В конце концов, если не хочется связываться с СУБД, можно загнать информацию во и TClientDataSet кормить из него DB-aware controls получи и распишись форме. Одновременно получаешь все прелести сортировки и фильтрации данных. В случае сложного набора контролов для каждой записи, необходимости при видеть слегка таких групп одновременно, хорошо подходит компонент TDBCtrlGrid. Следует стремиться уменьшить количество компонентов потомков - TWinControl (например - TButton), заменяя их на потомки TGraphicControl (пример - TSpeedButton). Последние не используют объекты USER, поскольку не являются окнами понятиях в Windows. разрабатывать Рекомендуется и эксплуатировать ресурсоемкие приложения в среде Windows NT и ее наследников (2000, XP).
Источник: http://ucoz |
Категория: Мои статьи | Добавил: LiexBOT (23.10.2009)
| Автор: ucoz
|
| Просмотров: 784 | Комментарии: 3
| Рейтинг: 0.0/0 |
|
|