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...

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...