【问题标题】:run-time design in FMX?FMX 中的运行时设计?
【发布时间】:2015-05-21 20:02:32
【问题描述】:

有一些组件可以让您在运行时在 VCL 中编辑表单。

是否可以在 FMX 中实时编辑表单? (我希望能够在移动应用程序中修改表单。)

【问题讨论】:

  • 显然这是可能的,因为这正是 IDE 所做的。如果我将其发布为答案,您会接受它有用吗?如果不是,请改进您的问题,使其比“是否可能”更具体。
  • 对不起,如果我问我想问什么,它将被否决并锁定。发挥创意。 ;-)(不能在任何地方寻求建议真是令人气愤,因为 Embt 论坛实际上已经变得毫无用处,而且你不能在这里提出投机性的问题来试图了解你通常不知道的东西。 ) ...事实上,我看到它已经获得了关闭它的投票。当像这样的网站禁止您询问组件库时,怎么会有人期望了解组件库?这对促进 Delphi 的使用有何帮助?
  • SO 不是为了提高 Delphi 的使用率。这个网站有指导方针,在help center 中解释得很清楚。 What topics can I ask about here? 专门介绍了征求建议(针对组件或其他任何场外内容);请参阅其中带有编号列表的部分。如果您希望更改这些准则,请在Meta Stack Overflow 中发布请求。不过请注意 - 该主题已被多次询问并被拒绝。您可以查看Software Recommendations 的指南,看看它是否适合那里;他们非常严格,所以请先查看帮助。
  • 是的,那么人们去哪里询问哪些组件或库可用于执行某些操作?显然不是这样。 (或者这也是被禁止的信息?)......我已经好几天没能在 Embt 的 Delphi 论坛上发布问题了;他们今天大部分时间都在倒下。我找不到发布此类问题的地方,而且似乎没有人真正认为无法获得产品建议和建议是个问题。
  • SO 有这样的政策这一事实并不能使他们正确。它只是让他们在社会上被接受。就像每个人都同意种族主义在某些城市是可以的一样。我不同意,但据我所知,“社区”更喜欢禁止这类问题。在无数其他人都无法有所作为之后,告诉人们在 Meta 组中提出它真的没有帮助。

标签: delphi runtime firemonkey form-editing


【解决方案1】:

首先回答您的第二个问题:是的,可以在运行时修改 FMX 表单及其控件。 对于您的第二个问题:AFAIK 没有任何组件可以帮助您完成该任务。 如果您想制作自己的表单设计器,请注意看似非常合适的 TSelection 组件在 XE7 之前存在很多缺陷,并且在 XE 8 中仍然存在一些缺陷 - 您最好自己制作。

【讨论】:

    【解决方案2】:

    是的,就像在 VCL 中一样,但大多数对象属性会有所不同。 以下示例在主窗体上创建新按钮。

    unit ufmMain;
    
    interface
    
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls;
    
    type
      TfmMain = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        MyButton1: TButton;
      end;
    
    var
      fmMain: TfmMain;
    
    implementation
    
    {$R *.fmx}
    
    procedure TfmMain.FormCreate(Sender: TObject);
    begin
      MyButton1 := TButton.Create(fmMain);
      MyButton1.Parent := fmMain;
      MyButton1.Position.X := 10;
      MyButton1.Position.Y := 10;
      MyButton1.Width := 50;
      MyButton1.Height := 10;
      MyButton1.Text := 'TEXT';
    end;
    
    end.
    

    【讨论】:

    • 对不起,我没有问如何在运行时创建对象。
    • 好的。然后回答你的问题——不,你不能在已经编译的应用程序中编辑表格。在 EDIT 下——我的意思与您在 IDE 中使用的方式完全相同。即使在 VCL 中也是不可能的。即使在......任何其他技术/编程语言中也是不可能的。
    • 在 Turbo Pascal 7 的 Turbo Vision 时代是附加的编辑器/工具,使您能够设计表单,但仍然无法修改已编译的表单。
    • 赞,你错了。您可以使用 VCL 和 Windows API 在已编译的应用程序中修改表单。 DFM 文件存储为 RCDATA 类型的二进制资源。您可以使用 UpdateResource(在 MSDN 上查找)及其相关功能在可执行文件中加载、更改和更新该资源。
    • @KenWhite -- 但是你可以在程序运行时这样做吗?我想没有
    猜你喜欢
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 2012-12-01
    相关资源
    最近更新 更多