понедельник, 14 декабря 2009 г.

Навороченные формы с огромным количеством визуальных компонентов, помноженные

Навороченные формы с огромным количеством визуальных компонентов, помноженные

Навороченные формы с огромным количеством визуальных компонентов, помноженные на количество форм, этих могут вызвать ряд серьезных проблем при разработке и использовании программы.

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

    Отправить комментарий