Автомобиль не роскошь ГлавнаяРегистрацияВход Вторник
24.06.2025
06:55
Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
Мои статьи [23]
Наш опрос
Оцените мой сайт
Всего ответов: 7
Статистика

Онлайн всего: 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
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Поиск
    Мини-чат
    Друзья сайта

  • Copyright MyCorp © 2025Конструктор сайтовuCoz