在FMX中,如何使非可视组件在设计时可见(Delphi 10)

在FMX中,如何使非可视组件在设计时可见(Delphi 10),delphi,custom-component,delphi-10-seattle,Delphi,Custom Component,Delphi 10 Seattle,我创建了许多非视觉组件,创建了适当的位图,并通过项目资源和图像添加了它们。我在工具选项板和结构窗口中看到了这些图像,但在表单设计器中除了抓取句柄外什么都没有 我还没有得到任何相关的代码。下图显示了我所看到的 PS我没有隐藏可视组件 更新 按要求编码 uses System.SysUtils, System.Classes, System.Generics.Collections, System.IOUtils, UnitListComponents, FMX.Types

我创建了许多非视觉组件,创建了适当的位图,并通过项目资源和图像添加了它们。我在工具选项板和结构窗口中看到了这些图像,但在表单设计器中除了抓取句柄外什么都没有

我还没有得到任何相关的代码。下图显示了我所看到的

PS我没有隐藏可视组件

更新 按要求编码

uses
  System.SysUtils,
  System.Classes,
  System.Generics.Collections,
  System.IOUtils,
  UnitListComponents,
  FMX.Types,
  FMX.Controls;
  //FMX.Edit,
  //FMX.Listbox;

  TSigFile7BaseProperty = class(TControl)
  private
    ...
  end;

  TSigFile7File = class( TSigFile7BaseProperty )
  private
  protected
  public
  published
    property Text;
    property SaveAsRelativeFileName;
  end;

问题是您的组件是TControl的后代,TControl是可视FMX组件而非非非可视组件的基类

对于非可视组件的制作,您应该使用TComponent作为基类

下面是Ray Konopka制作的关于创建自定义Fire Monkey组件的视频的链接,该视频将为您提供有关此主题的更多信息


PS:当我第一次开始制作定制组件时,我第一次花了很多时间研究类似组件从哪些组件类继承

当然有相关的代码。你说它们是“非视觉的”,但我觉得这可能是一个误导性的术语。它们是否从
t控制中下降?或者直接从
t组件
?您能否提供一个与您的问题组件定义类似的最小组件定义?我为Firemonkey编写了一个自定义控件,没有任何问题。您没有显示任何问题code@Jerry当我说我没有相关的代码时,我的意思是我不认为代码在这里是相关的。我修改了这个问题以包含代码。为了回答您的问题,它是TControl的后代。谢谢银色战士。我试试这个。我认为我需要从TFMXObject或更低的TComponent开始,因为TComponent不是TFMXObject,所以感谢您纠正这种误解。我能找到的所有示例,包括您提供的参考,都是针对可视组件的。这是不是因为非可视组件不被认为是Firemonkey,我想知道?不幸的是,我不能使用TComponent-我需要Children属性,但我可以使用TFMXObject(当然,例如,TLang就是TFMXObject的派生)。这更好,因为显示的是一个空白方块(而不是什么都没有),但我将其标记为已解决,因为它至少显示了我出错的地方。更新-我的另一个问题是,我忘记了位图中左上角的像素被视为透明颜色。。。。现在可以完美地工作了。