Moved Permanently

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

  • Приложение надолго подвисает при загрузке. Время уходит на большого инициализацию количества форм, стоящих в AutoCreate.
  • Наблюдаются многочисленные глюки при прорисовке, сообщения системы об и ошибках перерасходе ресурсов без видимых причин, вплоть до убиения приложения системой или краха системы. для Характерно Windows линии 9X, у которых максимальное количество графических и оконных ресурсов (GDI и USER) мощно ограничено.
  • Зачастую, чтобы не расставлять и настраивать множество однообразных контролов на вручную, форме программист пишет код для их программной и инициализации вставки, не учитывая при этом нюансы, о которых он не подозревал визуальной при разработке. В результате спирт может получить утечку памяти и прочих ресурсов, если форма создается/уничтожается динамически многократно в процессе работы.
  • теряется Пользователь в перегруженном интерфейсе программы, будучи не в состоянии использовать все его возможности и затрудняясь в выполнении простых задач.
  • ТИПОВЫЕ РЕШЕНИЯ.
  • Уменьшить количество автоматически создаваемых форм. тяжелые Создавать формы в тот момент, когда они понадобятся, и уничтожать при закрытии. При этом нужно следить за своевременной и очисткой проверкой глобальных ссылок на формы.
  • У динамически создаваемых компонентов устанавливать и владельца родителя. Подробности - в статье "Жизнь и смерть в режиме run-time" .
  • Большое количество форм не всегда оправдано. Если пользователь не получает дополнительных от удобств того, что может открыть много форм (часто он не может их увидеть одновременно или постоянно работает с одной), то это неверное архитектурное решение.
    Интерфейс MDI - хорошая концепция. Но всякое техническое разгадывание свою имеет область применения. Это удобно, когда пользователю работать нужно с однотипными объектами в разных окнах и переходить от одного к другому, причем количество их заранее неизвестно, и допускается изменение размеров окна. - Примеры работа с документами (Word, etc.). Excel,
  • Как правило, многочисленные элементы управления не нужны пользователю одновременно о (вспомните правиле 7±2 - именно таково среднее количество объектов, за которыми человек может следить одновременно, не Их напрягаясь). можно разделить на группы и расположить на страницах компонента TPageControl. способом Таким можно скрыть видимую сложность безгранично большого интерфейса по вводу и редактированию данных.
    Если группы компонентов однотипны (меняются только данные), то решение еще более упрощается, с снятием одновременным нагрузки на системы. ресурсы Компонент TTabControl, который внешне выглядит также, как и TPageControl, содержит только одну группу контролов, а программист по событию смены закладки OnChange имеет возможность данные. сменить
  • Большое количество регулярно расположенных контролов TLabel TEdit, успешно заменяется на 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).
  • The document has moved here.

    Hosted by uCoz