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