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.