Максим Кузнецов Posted January 5, 2023 Posted January 5, 2023 Предлагаю реализовать поддержку фреймов как в VCL или FMX, но с одним добавлением - чтобы можно было задать для фрейма возможность загрузки своего содержимого либо по требованию (как в режиме выполнения, так и в режиме дизайна), либо автоматически (как в FMX)). Quote
ZDeveloper Posted January 5, 2023 Posted January 5, 2023 А зачем? Есть же возможность использовать форму как фрейм, даже демка есть. Ну а загружайте когда создаете, просто не совсем понятно зачем мне форма без содержимого если оно загружается. Quote
Максим Кузнецов Posted January 7, 2023 Author Posted January 7, 2023 В демке формы используются даже под каждый элемент горизонтального списка. Мне кажется - это крайне некрасивое решение. Теоретически фреймы как минимум должны занимать меньше ресурсов. Ну и естественно форму нельзя использовать как фрейм в режиме проектирования. Quote
Administrators Yaroslav Brovin Posted January 7, 2023 Administrators Posted January 7, 2023 Добрый вечер, Мои пять копеек на счет фреймов. Я согласен, что фреймы нужны и полезны. Да, можно встраивать формы, но куда проще кинуть фрейм, чем кодом встраивать форму. Более того, у меня уже почти реализованный вариант фреймов. Однако, все уперлось в то, что RAD Studio не дает API для добавления фреймов для сторонних фреймворков. Поэтому на текущий момент, я научил ее создавать фреймы и работать с ними в дизайнере. Однако, кинуть фрейм на форум через палитру компонентов нельзя. Единственный способ, это руками прописать класс фрейма в dfm файле формы, что для публичного релиза не годится. Чтобы не быть голословным: Quote
Александр Клопоцкий Posted January 11, 2023 Posted January 11, 2023 (edited) Добрый вечер, По вашему примеру, как прописать класс фрейма в dfm файле формы? Form.Main.pas unit Form.Main; interface {$SCOPEDENUMS ON} uses System.Types, System.Classes, FGX.Forms, FGX.Forms.Types, FGX.Controls, FGX.Controls.Types, FGX.Layout, FGX.Layout.Types; type TFormMain = class(TfgForm) private { Private declarations } public { Public declarations } end; var FormMain: TFormMain; implementation {$R *.xfm} uses System.SysUtils, FGX.Application, FGX.Dialogs, FGX.Log, Unit1; end. Form.Main.xfm object FormMain: TFormMain Size.Width = 360.000000000000000000 Size.Height = 590.000000000000000000 SavedSizeWidth = 360s SavedSizeHeight = 590s object Frame1: TFrame1 Size.Width = 360.000000000000000000 Size.Height = 640.000000000000000000 SavedSizeWidth = 360s SavedSizeHeight = 640s object fgButton1: TfgButton Text = 'fgButton1' Position.X = 56.000000000000000000 Position.Y = 80.000000000000000000 RelativePosition.Left = 56.000000000000000000 RelativePosition.Top = 80.000000000000000000 Size.Width = 120.000000000000000000 Size.Height = 36.000000000000000000 SavedSizeWidth = 120s SavedSizeHeight = 36s end object fgSwitch1: TfgSwitch Position.X = 224.000000000000000000 Position.Y = 88.000000000000000000 RelativePosition.Left = 224.000000000000000000 RelativePosition.Top = 88.000000000000000000 Size.Width = 44.000000000000000000 Size.Height = 26.000000000000000000 SavedSizeWidth = 44s SavedSizeHeight = 26s ColorDefaultName = 'Theme\Text\Text' end end end Unit1.pas unit Unit1; interface {$SCOPEDENUMS ON} uses System.Types, System.Classes, FGX.Forms, FGX.Forms.Types, FGX.Controls, FGX.Controls.Types, FGX.Layout, FGX.Layout.Types, FGX.Button.Types, FGX.StaticLabel, FGX.Switch, FGX.Button; type TFrame1 = class(TfgForm) fgButton1: TfgButton; fgSwitch1: TfgSwitch; private { Private declarations } public { Public declarations } end; var Frame1: TFrame1; implementation {$R *.xfm} uses System.SysUtils, FGX.Application, FGX.Dialogs, FGX.Log; end. Unit1.xfm object Frame1: TFrame1 Size.Width = 360.000000000000000000 Size.Height = 640.000000000000000000 SavedSizeWidth = 360s SavedSizeHeight = 640s object fgButton1: TfgButton Text = 'fgButton1' Position.X = 56.000000000000000000 Position.Y = 80.000000000000000000 RelativePosition.Left = 56.000000000000000000 RelativePosition.Top = 80.000000000000000000 Size.Width = 120.000000000000000000 Size.Height = 36.000000000000000000 SavedSizeWidth = 120s SavedSizeHeight = 36s end object fgSwitch1: TfgSwitch Position.X = 224.000000000000000000 Position.Y = 88.000000000000000000 RelativePosition.Left = 224.000000000000000000 RelativePosition.Top = 88.000000000000000000 Size.Width = 44.000000000000000000 Size.Height = 26.000000000000000000 SavedSizeWidth = 44s SavedSizeHeight = 26s ColorDefaultName = 'Theme\Text\Text' end end Edited January 11, 2023 by Александр Клопоцкий Quote
Administrators Yaroslav Brovin Posted January 11, 2023 Administrators Posted January 11, 2023 7 минут назад, Александр Клопоцкий сказал: По вашему примеру, как прописать класс фрейма в dfm файле формы? Так код фреймов не выпущен. Поэтому сейчас даже если прописать, ничего не будет. Могу в принципе закончить текущий вариант и встроить его в либу, чтобы хотя бы руками можно было бы пока через dfm встраивать Quote
tumaso Posted January 11, 2023 Posted January 11, 2023 (edited) Лично я в FMX фреймы создаю динамически в рантайме (через фабрику классов), а необходимости их вставки в режиме разработки у меня нет. Поэтому в FGX устроит поддержка фреймов в текущем варианте Edited January 11, 2023 by tumaso Quote
dervish00 Posted January 12, 2023 Posted January 12, 2023 13 часов назад, tumaso сказал: Лично я в FMX фреймы создаю динамически в рантайме (через фабрику классов), а необходимости их вставки в режиме разработки у меня нет. Поэтому в FGX устроит поддержка фреймов в текущем варианте + Quote
Administrators Yaroslav Brovin Posted January 25, 2023 Administrators Posted January 25, 2023 После долгих и упорных поисков удалось найти обходное решение, чтобы отобразить кнопку встраивания фрейма на форму. Поддержка фреймов добавлена в 1.15.3.0. 6 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.