【发布时间】:2014-06-19 02:43:51
【问题描述】:
我试图在网格的单元格中显示一个用绿色/红色填充的指示性圆圈,而没有描边颜色。网格显示了许多其他类似的实体,但也可以有一个数值而不是预期的圆圈。
作为参考,我包含以下代码以仅在第一个单元格中显示该圆圈。但是使用的方法取决于笔画类型,不设置为 TBrushKind.None,也不提供自定义填充颜色、边距或填充功能:-
procedure TUI.CR_UL_UsersGridDrawColumnCell
( Sender : TObject;
const Canvas : TCanvas;
const Column : TColumn;
const Bounds : TRectF;
const Row : Integer;
const Value : TValue;
const State : TGridDrawStates );
begin
if ( Column.Index = 0 ) and ( Row = 0 ) then
begin
Canvas.DrawEllipse ( Bounds, 100 );
end
else
CR_UL_UsersGrid.DefaultDrawColumnCell
( Canvas, Column, Bounds, Row, Value, State );
end;
如果可能,有没有办法将 TCircle 实际添加到单元格或任何其他解决方案?
【问题讨论】:
-
我不明白你的困难。您不能将画笔和钢笔属性设置为您需要的任何东西吗?你不能调整边界以绘制任何你想要的地方吗?
-
FireMonkey 网格单元会定期回收,这意味着您需要定期重新绘制圆圈。我建议您为您的单元格创建一个自定义类,其样式包含一个可以随意显示/隐藏/重新着色的 TCircle。每次调用 ApplyStyle 或 SetData 时,您的单元格都需要进行适当的设置,并且您需要确定要显示的内容(例如,通过传入的数据或用作回调的事件)。我的网站monkeystyler.com/guide 涵盖了大部分内容
-
@MikeSutton 是的,我把你的指南完全弄红了。为什么一种风格会比在画布上绘画更好,它们不是几乎一样吗?与样式相比,我认为画布上的绘制调用不会创建额外的控件。
-
@RobKennedy FMX 中没有画布和画笔属性。虽然我已经通过 FillEllipse 命令和对边界对象的一些计算修改成功地制作了那个椭圆/圆。
-
自己画画是一件很辛苦的事情。让 FMX 为您做到这一点。
标签: delphi firemonkey delphi-xe6