Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];

Вниз

Использование фреймов   Найти похожие ветки 

 
pusrg   (2002-08-02 14:48) [0]

Всем добрый день!

Решил для включения в формы больших блоков использовать фреймы. Раньше я для этого использовал формы, изменяя их парент в рантайме на форму-родителя при создании.

Хотелось бы узнать следующую вещь.
Насколько использование фреймов будет себя оправдывать? Например по кол-ву "сжираемой" памяти.
Если таких форм-контейнеров довольно много и приходится их создавать сразу при инициализации формы родителя (это ведь не модальные окна) будут ли фреймы-контейнеры экономичнее форм-контейнеров?

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

Заранее спасибо.


 
Jeer   (2002-08-02 16:16) [1]

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

TForm
_TAutoForm
__TStatusForm
___TCBarForm
____TquGridForm
_____TquGridLookForm (TquGridForm+ frameLookUp)
____TDBTreeForm (TquGridForm + frameDBTree + frameLookUp)

и т.д.
От нужной из них через inherited из Репозитория создаются прикладные формы.


 
pusrg   (2002-08-02 17:30) [2]

То Jeer
Спасибо за Ваш ответ.

Как я понял фреймы и формы одного поля ягоды, особенно если посмотреть на их Иерархию в хелпе.
Провел небольшой экспиремент.
Сделал два идентичных пустых проекта. В обоих на главную форму поместил контейнер, роль которого в первом случае исполняла форма, во втором фрейм. На контейнере также расположил TShape для очерчивания границ (в обоих случаях).

Так вот проект с фреймом оказался на 8кб "тяжелее", хотя фрейм описан также в модуле forms. Видать ресурсов у него больше :)
По кол-ву используемой памяти проект с фреймом также "сожрал" больше аж на 8кб.
Усложнил экспиремент создав не один, а 20 одинаковых контейнеров.
Опять фрейм "сожрал" памяти больше на 68 кб, так что пожалуй не буду ничего менять, а буду пользоваться старыми добрыми формами, привычней как-то :)

С уважением,

To All
Но дискусия открыта для обсуждения, неужели никто не пользовался фреймами? Смотрю тема не пользуется большой популярностью...


 
Кулюкин Олег   (2002-08-02 17:43) [3]

Мне нравятся фреймы.
Их прелесть в том, что можно дизайнить форму в дизайн-тайме (извените за тавтологию :).
Их использование оправдано, когда требуется использовать одинаковые группы контролов в разных формах.
Сделал фрейм а-ля эксплорер для просмотра дерева товарных групп и товаров и кидай его куда нужно. Удобно.


 
pusrg   (2002-08-02 17:50) [4]

То Кулюкин Олег
С этой точки зрения полностью согласен с Вами. Буквально вчера прочитал хелп по фреймам и "открыл" для себя эту класную возможность.


 
vuk   (2002-08-02 17:55) [5]

Фреймы - штука хорошая, только граблей там расставлено... Так что надо осторожно с ними в designtime.


 
Кулюкин Олег   (2002-08-02 18:03) [6]

2 vuk
Да, я сталкивался со случаями, когда не сохранялись свойства контролов, лежащих на фреймах.
И если в ImageList лежащий на фрейме добавить картинку, то во фреймах лежащих на формамх это изменение не скажется.


 
vuk   (2002-08-02 18:13) [7]

Еще бывает, что "отваливаются" обработчики событий компонентов на фрейме, если они назначены на форме.

>И если в ImageList лежащий на фрейме добавить картинку, то во
>фреймах лежащих на формамх это изменение не скажется.
Вот-вот. От этого обычно спасает Revert to inherited. Лучше - удалить фрейм и сложить его заново, но при этом опять же отваливаются все обработчики....

В общем с фреймами в Borland перешаманили. А уж как оно в designtime живет - просто песня.


 
Кулюкин Олег   (2002-08-03 10:23) [8]

2 vuk
Вот обработчики у меня не отваливались, а удалять фреимы и класть их заново приходилось не раз.
Особенно при добавлении/удалении контролов.
Самое обидное, что при изменении фрейма, программа компилируется и нормально работает, пока юзер не позовет форму с фреймом.


 
[NIKEL]   (2002-08-03 13:02) [9]

Фрейм - это ближе к окну просмотра, имеющим полосы прокрутки.
>И если в ImageList лежащий на фрейме добавить картинку, то во
>фреймах лежащих на формамх это изменение не скажется.
Лубые изминения, которые вносятся во время проектирования в экземпляр класса-наследника TFrame, влияют только на этот отдельный экземпляр. А манипуляции с классом-наследником TFrame - будут отображаться во всех экземплярах этого класса.Если свойство изменено в каком-либо экземпляре класса-наследника TFrame, то последующие изминения этого свойства того же класса не будут отражены в измененном экземпляре. Вот...

>Так вот проект с фреймом оказался на 8кб "тяжелее", хотя фрейм >описан также в модуле forms. Видать ресурсов у него больше :)

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

Но для эффективного использования системных ресурсов лучше не использовать Фрейм. Он являеться наследником класса TWinControl(тоесть надо выделять для каждого экземпляра отдельный дескриптор окна).
Надо просто знать когда и зачем его можно использовать.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.006 c
3-95656
MikeFW
2002-08-07 15:05
2002.08.29
как установить BDE у клинта?


14-95938
ArtGamer
2002-08-02 19:28
2002.08.29
Как соединить 2 компа по витой паре?


3-95663
Александр456
2002-08-08 10:05
2002.08.29
Еще вопрос по QuickReport


1-95795
^Sanya
2002-08-19 14:59
2002.08.29
Опять и опять....


1-95755
Verroko
2002-08-19 13:23
2002.08.29
Как передать фокус контролу на другой панели формы?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский