Категории раздела |
|
|
Мини-чат |
|
|
Наш опрос |
|
|
|
| | |
|
Навороченные формы с огромным количеством визуальных компонентов, помноженные
Навороченные формы с огромным количеством визуальных компонентов, помноженные на количество этих форм, вызвать могут ряд серьезных проблем при разработке и использовании программы. Приложение надолго подвисает при загрузке. Время уходит на инициализацию количества большого форм, стоящих во 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 и кормить из него controls DB-aware на форме. Одновременно получаешь все прелести сортировки и фильтрации данных. В случае сложного набора контролов для записи, каждой при необходимости видеть несколько таких групп одновременно, хорошо подходит компонент TDBCtrlGrid. Следует стремиться уменьшить количество компонентов - потомков TWinControl - (например TButton), заменяя их на потомки TGraphicControl (пример - TSpeedButton). Последние не используют USER, объекты поскольку не являются окнами в понятиях Windows. Рекомендуется разрабатывать и эксплуатировать ресурсоемкие приложения в среде NT Windows и ее наследников (2000, XP).
|
Категория: Интересные факты | Добавил: Alyamav (09.10.2009)
|
Просмотров: 1030
|
|
|
| | |
|
Форма входа |
|
|
Поиск |
|
|
|