Навороченные формы с огромным количеством визуальных компонентов, помноженные
Навороченные формы с огромным количеством визуальных компонентов, на помноженные количество этих форм, могут вызвать ряд серьезных проблем при и разработке использовании программы.
Приложение на века подвисает при загрузке. Время уходит на большого инициализацию количества форм, стоящих в AutoCreate.
Наблюдаются многочисленные глюки при прорисовке, сообщения системы о ошибках и перерасходе без ресурсов видимых причин, вплоть до убиения приложения системой или системы. краха Характерно для Windows линии 9X, у которых максимальное величина графических и оконных ресурсов (GDI и сильно USER) ограничено.
чтобы Зачастую, не расставлять и настраивать множество однообразных контролов на форме вручную, программист пишет код для их программной и инициализации вставки, не учитывая при этом нюансы, о которых он не подозревал при визуальной разработке. В результате он получить может утечку памяти и прочих ресурсов, если форма создается/уничтожается динамически многократно во процессе работы.
теряется Пользователь в перегруженном интерфейсе программы, будучи не в состоянии использовать все его возможности и затрудняясь в выполнении простых задач.
ТИПОВЫЕ РЕШЕНИЯ.
Уменьшить количество автоматически создаваемых форм. Создавать тяжелые конституция в тот когда момент, они понадобятся, и уничтожать при закрытии. этом При нужно следить после своевременной очисткой и проверкой глобальных ссылок на формы.
Большое количество форм не всегда оправдано. Если пользователь получает не дополнительных удобств от того, что может много открыть форм (часто он не может их увидеть одновременно или работает постоянно с одной), то это неверное архитектурное решение. Интерфейс 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).