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