Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 компонент TFrame. У кого есть опыт использования?  [new]
Artem.1st
Member

Откуда:
Сообщений: 78
Добрый день, уважаемые delphi-гуру

в help про Фреймы написано много полезных “вкусняшек” ... которых даже у Форм нет. Например, Фреймы можно вкладывать друг в друга, легко сконструировать как сложный компонент и хранить на палитре.
Т.е. Фреймы быстро создаются, легко используются и поддерживаются средой разработки. Технология - мечта для RAD?

А какие недостатки есть у TFrame ?

Почему возникли сомнения, т.к. фреймы редко упоминаются. Почему забыли про эту "чудо-технологию"?
6 май 19, 11:10    [21878516]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
Dimonka
Member

Откуда:
Сообщений: 1170
Artem.1st,

Фреймы можно использовать - с ними проблем нет. Иногда проблемы появляются с некоторыми кривыми компонентами в дизайтайме на фреймах, которые во что бы то ни стало хотят быть на форме.
А так.. всё так и есть как ты описал - проблем нет - компоненты мечты Так сказать, с добрым утром..
6 май 19, 11:40    [21878545]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
asutp2
Member

Откуда: Тюмень
Сообщений: 456
Artem.1st,

для меня у TFrame всего один недостаток - при редактировании родительского фрейма в IDE крайне желательно, чтобы дочерние фреймы были закрыты.

а так фреймы очень удобная штука, хоть на десктопе, хоть на мобилках
6 май 19, 11:44    [21878551]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
alekcvp
Member

Откуда:
Сообщений: 1340
В некоторых версиях дельфи постоянно начинаются глюки при попытке наследования фреймов.
Я как-то делал проект, там был базовый фрейм для формы редактирования и 3-4 его варианта под конкретные данные - как же я задолбался, когда при каждом открытии наследуемых фреймов вылетали рандомные ошибки, потому что дельфя постоянно пыталась сохранить фрейм как форму.
6 май 19, 11:54    [21878569]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
Artem.1st
Member

Откуда:
Сообщений: 78
Dimonka
проблемы появляются с некоторыми кривыми компонентами в дизайтайме на фреймах, которые во что бы то ни стало хотят быть на форме.

Спасибо за ответ. Весьма полезная информация, т.к. я вспомнил, что сам писал такой компонент, который ожидает Форму в дизайнтайме :-////
6 май 19, 12:08    [21878603]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
Artem.1st
Member

Откуда:
Сообщений: 78
alekcvp
В некоторых версиях дельфи постоянно начинаются глюки

Спасибо за ответ.
Пожалуйста, поясните, эти глюки повились только при переходе на другую версию Delphi ?
6 май 19, 12:11    [21878612]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
Dimonka
Member

Откуда:
Сообщений: 1170
Artem.1st
alekcvp
В некоторых версиях дельфи постоянно начинаются глюки
Спасибо за ответ.
Пожалуйста, поясните, эти глюки повились только при переходе на другую версию Delphi ?
Возможно предыдущий оратор имел в виду ситуацию, когда есть какая-то иерархия фреймов, унаследованная от базового фрейма. Затем автор начинает перелопачивать базовый родительский фрейм (переименовывать/удолять компоненты, пересвязывать их как-то). Тогда да, может случиться конфуз. Но это касается любого визуального наследования в Дельфи - фреймы тут ни особо при чём. В формах те же самые проблемы.
6 май 19, 12:23    [21878655]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
alekcvp
Member

Откуда:
Сообщений: 1340
Dimonka
Тогда да, может случиться конфуз. Но это касается любого визуального наследования в Дельфи - фреймы тут ни особо при чём. В формах те же самые проблемы.

Нет, автор имеет в виду ситуацию, когда в dfm-файле унаследованного фрейма после редактирования появляются свойства вроде "position", "windowstate" и прочие от TForm. В результате чего при последующем открытии появляются ошибки вида "свойство ххх не найдено в базовом классе". Лечится ручным удалением этих свойств из DFM-файла и исправлением индентификатора object на inherited там же. Проявлялось, ЕМНИП, на DX2, в более новых версиях я с фреймами не работал.
6 май 19, 12:35    [21878679]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
Artem.1st
Member

Откуда:
Сообщений: 78
Dimonka
Затем автор начинает перелопачивать базовый родительский фрейм ... Тогда да, может случиться конфуз.

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

А следить за фреймами-наследниками - это обязанность программиста, и среда разработки никак не облегчает этот процесс?
6 май 19, 13:35    [21878812]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
alekcvp
Member

Откуда:
Сообщений: 1340
Artem.1st
А следить за фреймами-наследниками - это обязанность программиста, и среда разработки никак не облегчает этот процесс?


Насколько я помню, как только ты "тронешь" (изменишь) хоть один унаследованный контрол на наследнике, то дальшейшая его судьба будет целиком в твоих руках. Т.е. он будет хранить свои параметры уже в наследнике.

Но это не точно.
6 май 19, 16:27    [21879123]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
alekcvp
Member

Откуда:
Сообщений: 1340
Artem.1st
У меня есть базовый фрейм и несколько наследников, причем в задачу входит частое редактирование базового фрейма(удаление-добавление контролов).


Возможно тебе стоит вместо базового фрейма разместить эти (часто редактируемые) контролы на форме, а на фреймы вынести только индивидуальные для них?..
6 май 19, 16:29    [21879125]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 56537
Блог
Artem.1st
А какие недостатки есть у TFrame ?

У самих фреймов недостатков, в общем, нет. Есть некоторые недостатки, связанные с плохой их поддержкой в VCL и IDE. Кроме того, есть некоторые концептуальные ошибки дизайна VCL, которые проявляются в том числе при использовании фреймов.

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

Artem.1st
Почему возникли сомнения, т.к. фреймы редко упоминаются. Почему забыли про эту "чудо-технологию"?

Потому что программисты на Delphi в своей массе не блещут уровнем. В результате этого они, с одной стороны, склонны выбирать решения типа "будем создавать всё в рантайме" (а в этом случае фреймы не дают преимуществ и в общем не нужны), а с другой стороны - напоровшись на какую-то проблему при использовании фреймов, вместо того, чтобы разобраться с её причинами, отказываются от их использования вообще и изобретают вместо этого аналогичный собственный кривой велосипед (как правило, те или иные извраты, связанные со встраиванием форм в другие формы).
6 май 19, 18:26    [21879292]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
Artem.1st
Member

Откуда:
Сообщений: 78
softwarer
Поэтому для беспроблемного использования фреймов нужна определённая дисциплина программирования

Спасибо за ответ.
Я понял “проблему” Фреймов, при всех своих достоинствах(скорость и простота разработки) они слишком “хрупкие” в быту, в отличие от классических визуальных контролов, которые очень трудно “сломать”
6 май 19, 18:56    [21879316]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
ёёёёё
Member

Откуда:
Сообщений: 162
Вот так и становятся экспертами.
6 май 19, 19:05    [21879324]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
asutp2
Member

Откуда: Тюмень
Сообщений: 456
Artem.1st
softwarer
Поэтому для беспроблемного использования фреймов нужна определённая дисциплина программирования

Спасибо за ответ.
Я понял “проблему” Фреймов, при всех своих достоинствах(скорость и простота разработки) они слишком “хрупкие” в быту, в отличие от классических визуальных контролов, которые очень трудно “сломать”
Ооо, как это развидеть? ))))
6 май 19, 20:42    [21879376]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 56537
Блог
Artem.1st
они слишком “хрупкие” в быту

Как известно, северный варвар способен не только сломать свой нефритовый жезл, но и поранить при этом руки.
6 май 19, 21:05    [21879385]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 59771
softwarer
У самих фреймов недостатков, в общем, нет. Есть некоторые недостатки, связанные с плохой их поддержкой в VCL и IDE. Кроме того, есть некоторые концептуальные ошибки дизайна VCL, которые проявляются в том числе при использовании фреймов.
Как будто есть какие-то фреймы вне VCL и IDE - в вакууме, видимо. :)
Извините за занудство, просто глаз резануло.
6 май 19, 21:27    [21879397]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
Gator
Member

Откуда: Москва
Сообщений: 14205
Например, Фреймы я не люблю, не умею их готовить и кормить их и ими.

Например, всегда возникала задача изменить какой-то "пре-фрейм" в середине иерархии. И потом эти изменения где-то принимались, а где-то нет (удалённо) Ну нах!
Мне проще dll переписать и в базу положить. И реплицировать без проблем. Тут тебе и контроль версий и вся лабуда.

Опять же, у формы, панельке есть хендл, который юзается где угодно.

_____
Так что думай.
6 май 19, 22:21    [21879428]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 56537
Блог
Гаджимурадов Рустам
Как будто есть какие-то фреймы вне VCL и IDE - в вакууме, видимо. :)
Извините за занудство, просто глаз резануло.

Не вижу оснований для "резануло". Ну вот как объяснить... представь, что один инженер разработал хороший мотор. Другой - поставил его в плохой самолёт. И вот, этот самолёт не сказать чтобы хорошо летает. И в работе мотора даже наблюдаются определённые проблемы - связанные, например, с тем, что в некоторых режимах самолёт начинает с перебоями подавать в мотор топливо. Но это всё - не является недостатками мотора, вроде как очевидно. И когда приходишь ты и говоришь "будто есть какие-то моторы вне самолётов" - это выглядит странновато.
6 май 19, 22:32    [21879432]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
Dimonka
Member

Откуда:
Сообщений: 1170
Gator
Например, всегда возникала задача изменить какой-то "пре-фрейм" в середине иерархии. И потом эти изменения где-то принимались, а где-то нет (удалённо) Ну нах!
То ли не по-русски написано, то ли я чего-то не понимаю. Что значит "не принимались"?
Gator
Мне проще dll переписать и в базу положить. И реплицировать без проблем. Тут тебе и контроль версий и вся лабуда.
Как эти все слова связаны с фреймами??? здесь лицо джекичана..
7 май 19, 10:51    [21879693]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
alekcvp
Member

Откуда:
Сообщений: 1340
Dimonka
То ли не по-русски написано, то ли я чего-то не понимаю. Что значит "не принимались"?
Если фрейм на форму вставлен в дизайн-тайм, то, при изменении его предка, на этой форме изменения не отображаются, потому что она уже сама хранит параметры этих контролов.
7 май 19, 11:22    [21879715]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 56537
Блог
alekcvp
Если фрейм на форму вставлен в дизайн-тайм, то, при изменении его предка, на этой форме изменения не отображаются, потому что она уже сама хранит параметры этих контролов.

Это неверное утверждение. "Изменения не отображаются" только для тех свойств, которые изменены в наследнике - как и при любом наследовании.
7 май 19, 11:25    [21879717]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
alekcvp
Member

Откуда:
Сообщений: 1340
softwarer
alekcvp
Если фрейм на форму вставлен в дизайн-тайм, то, при изменении его предка, на этой форме изменения не отображаются, потому что она уже сама хранит параметры этих контролов.

Это неверное утверждение. "Изменения не отображаются" только для тех свойств, которые изменены в наследнике - как и при любом наследовании.

Теоретически, а на практике в старых версиях там был глюк на глюке, я вон выше писал про наследование.
7 май 19, 11:55    [21879744]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
Dimonka
Member

Откуда:
Сообщений: 1170
alekcvp
Теоретически, а на практике в старых версиях там был глюк на глюке, я вон выше писал про наследование.
Может быть в очень-очень старых. В Delphi 7/2009/XE2/XE4 я что-то такого не сильно припоминаю.
7 май 19, 12:03    [21879757]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 56537
Блог
alekcvp
Теоретически,

И практически тоже.

alekcvp
а на практике в старых версиях там был глюк на глюке

Думаю, Delphi 5 - достаточно старая, но никаких "глюк на глюке" там не было, всё отлично работало.

alekcvp
я вон выше писал про наследование

Могу лишь пожать плечами. Лично у меня довольно много претензий к функционированию относительно современных версий дельфы. Что же касается старых, по шестёрку включительно - в каждой ситуации, когда она вела себя "не так" я в итоге находил, что причина в ошибке в моих компонентах или другом дизайн-таймовом коде. С семёрки всё начало портиться.
7 май 19, 12:10    [21879773]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
alekcvp
Member

Откуда:
Сообщений: 1340
softwarer,

Я написал "старых", я не "древних" :)
У меня глюки были в XE2, правда другого плана.
7 май 19, 12:24    [21879796]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
NetObserver
Member

Откуда:
Сообщений: 628
Artem.1st
А какие недостатки есть у TFrame ?

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

Главная проблема - их не умеют "готовить".
Как пример.
В нашем проекте есть несколько супер тяжелых форм. Например карточка клиента - делает около 100 запросов к базе и отображает несколько сот контролов. Причем в один момент времени форму ковыряет один-два человека как минимум. Использовал фреймы для инкапсуляции части данных, чтобы снизить проблемы параллельной разработки, ускорения загрузки - фреймы не создавали запросов к базе пока не открывалась вкладка где они лежали, упрощения логики так как обычно на фрейме несколько контролов связанные общей логикой и тп. Все работало. Прошло полгода. Полез и увидел ужас. Прямые обращения к полям фрейма из формы. Обработчики событий контролов из фрейма в форме и тп. Пришлось править и проводить ликбез. Но в массы так и не пошло.
7 май 19, 14:16    [21879928]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
ёёёёё
Member

Откуда:
Сообщений: 162
Dimonka
alekcvp
Теоретически, а на практике в старых версиях там был глюк на глюке, я вон выше писал про наследование.
Может быть в очень-очень старых. В Delphi 7/2009/XE2/XE4 я что-то такого не сильно припоминаю.

Онологично. :)
С D2007 использую. Глюков не наблюдал, наблюдал недоработки. а также требование понимания работы механизма "визуального наследования".
Например, в предке есть обработчик события. В наследнике меняем его на другой
Все хорошо, теперь работает новый. Потом - удаляем обработчик - казалось бы, снова должен начать работать обработчик родителя - фиквам, не работает вообще, "ага, глючит!". Налицо непонимание механизма: свойству типа "метод" присвоено новое значение - nil. Ну да, в дизайнере должна быть возможность вернуть обработчик наследника, но ведь нет такой возможности, надо править dfm. Или уже есть такая возможность?
Эти особенности касаются не только фреймов, но и форм, и датамодулей, ну вот так.
7 май 19, 14:24    [21879951]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29835

07.05.2019 14:16, NetObserver пишет:
> В нашем проекте есть несколько супер тяжелых форм.
> Например карточка клиента - делает около 100 запросов к базе и отображает несколько сот контролов.

Картинка с другого сайта.

Posted via ActualForum NNTP Server 1.5

7 май 19, 14:30    [21879964]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
ёёёёё
Member

Откуда:
Сообщений: 162
Мимопроходящий,

они все инвизи...бле.
7 май 19, 14:51    [21879999]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
roschinspb
Member

Откуда: С-Пб
Сообщений: 1603
Artem.1st
...
Почему возникли сомнения, т.к. фреймы редко упоминаются. Почему забыли про эту "чудо-технологию"?

Вообще говоря даже про наследование форм знают не только лишь все. Так уж сложилось, что для большинства разработчиков (я разумеется не про постоянных читателей), единственной способ разработки это "батонокидание не приходя в сознание".

По существу да есть некоторые компоненты, которые не дружат с фреймами. Например: TBindingsList может быть только один на форме.
7 май 19, 15:16    [21880055]     Ответить | Цитировать Сообщить модератору
 Re: компонент TFrame. У кого есть опыт использования?  [new]
Dmitri Krizhanovski
Member

Откуда:
Сообщений: 483
ёёёёё,

автор
Или уже есть такая возможность?

Вроде, всегда была.

К сообщению приложен файл. Размер - 7Kb
7 май 19, 18:29    [21880279]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Delphi Ответить