Навороченные формы с огромным количеством визуальных компонентов, помноженные
Навороченные формы с огромным количеством визуальных компонентов, помноженные
Навороченные формы с огромным количеством визуальных компонентов, на помноженные количество этих форм, могут вызвать ряд серьезных проблем при разработке и использовании программы.
Приложение надолго подвисает при Время загрузке. уходит на инициализацию большого количества форм, стоящих буква 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).