【发布时间】:2019-01-31 17:30:41
【问题描述】:
我想尝试创建一个 firemonkey 可视化组件,我在网上看到TControl 提供了基本需求。这是我到目前为止所做的:
TMyTest = class(TControl)
strict private
//code...
protected
procedure Paint; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
//code...
end;
我查看了名为PlotGrid 的 FMX 组件的源代码,并复制了它的功能。我的课程源自 TControl(如 PlotGrid),它覆盖了 Paint(如 PlotGrid)。看代码:
constructor TMyTest.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
SetAcceptsControls(False);
end;
destructor TMyTest.Destroy;
begin
inherited;
end;
procedure TMyTest.Paint;
var
i: integer;
a, b: TPointF;
begin
Canvas.Fill.Color := TAlphaColorRec.White;
Canvas.Stroke.Color := TAlphaColorRec.Black;
Canvas.Stroke.Thickness := 2;
a.X := 0; a.Y := Height/2;
b.X := Width; b.Y := Height/2;
Canvas.DrawLine(a, b, 1);
end;
鉴于这段代码,我希望有这样的东西(我已经编辑过绘制图像,它不是真实的)
问题是我明白了
组件很好,因为我看到了所有的方法和属性,它们都可以工作。该组件是功能性的,但我在设计器中看不到它!如果我运行 FMX 应用程序,我看不到颜色:
有什么想法吗?
我已在Paint 事件的开头设置了Opacity := 1;,但仍然没有。
【问题讨论】:
-
您的控件的
(Absolute)Opacity设置为什么? -
如何查看?我没有在任何地方设置不透明度。我试过不透明度:= 1;在构造函数中,但仍然没有
-
您是否设置了
Parent属性?通常在实例化控件时设置。作为快速测试,在构造函数中添加Parent := AOwner;。不过,不要这样。不应将所有者和父级硬编码为相同。
标签: delphi firemonkey