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