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