Jump to content

Реализовать поддержку фреймов


Recommended Posts

Предлагаю реализовать поддержку фреймов как в VCL или FMX, но с одним добавлением - чтобы можно было задать для фрейма возможность загрузки своего содержимого либо по требованию (как в режиме выполнения, так и в режиме дизайна), либо автоматически (как в FMX)).

Link to comment
Share on other sites

А зачем? Есть же возможность использовать форму как фрейм, даже демка есть. Ну а загружайте когда создаете, просто не совсем понятно зачем мне форма без содержимого если оно загружается.

Link to comment
Share on other sites

В демке формы используются даже под каждый элемент горизонтального списка. Мне кажется - это крайне некрасивое решение. Теоретически фреймы как минимум должны занимать меньше ресурсов. Ну и естественно форму нельзя использовать как фрейм в режиме проектирования.

Link to comment
Share on other sites

  • Administrators

Добрый вечер,

Мои пять копеек на счет фреймов. Я согласен, что фреймы нужны и полезны. Да, можно встраивать формы, но куда проще кинуть фрейм, чем кодом встраивать форму. Более того, у меня уже почти реализованный вариант фреймов. Однако, все уперлось в то, что RAD Studio не дает API для добавления фреймов для сторонних фреймворков. Поэтому на текущий момент, я научил ее создавать фреймы и работать с ними в дизайнере. Однако, кинуть фрейм на форум через палитру компонентов нельзя. Единственный способ, это руками прописать класс фрейма в dfm файле формы, что для публичного релиза не годится.

Чтобы не быть голословным:

image.pngimage.png

 

Link to comment
Share on other sites

Добрый вечер,

По вашему примеру, как прописать класс фрейма в dfm файле формы?

013.thumb.png.4bd31bdad7bba9282092279df16b86e5.png

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 by Александр Клопоцкий
Link to comment
Share on other sites

  • Administrators
7 минут назад, Александр Клопоцкий сказал:

По вашему примеру, как прописать класс фрейма в dfm файле формы?

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

Link to comment
Share on other sites

Лично я в FMX фреймы создаю динамически в рантайме (через фабрику классов), а необходимости их вставки в режиме разработки у меня нет.
Поэтому в FGX устроит поддержка фреймов в текущем варианте

Edited by tumaso
Link to comment
Share on other sites

13 часов назад, tumaso сказал:

Лично я в FMX фреймы создаю динамически в рантайме (через фабрику классов), а необходимости их вставки в режиме разработки у меня нет.
Поэтому в FGX устроит поддержка фреймов в текущем варианте

+

Link to comment
Share on other sites

  • 2 weeks later...
  • Administrators

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

Поддержка фреймов добавлена в 1.15.3.0.

  • Like 6
  • Thanks 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...