gpt4 book ai didi

delphi - 如何在网格的单元格中画一个圆圈?

转载 作者:行者123 更新时间:2023-12-03 18:41:47 24 4
gpt4 key购买 nike

我试图在网格的单元格中显示一个充满绿色/红色的指示性圆圈,而没有描边颜色。网格显示了许多其他类似的实体,但也可以有一个数值而不是预期的圆圈。

作为引用,我包含以下代码以仅在第一个单元格中显示该圆圈。但是使用的方法取决于笔划类型,不设置为 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 实际添加到单元格或任何其他解决方案?

最佳答案

仅限所有 Draw[shape] 程序 勾勒出轮廓有问题的 [shape] 因此如果笔刷类型设置为 None 则不会绘制任何内容。

相反,Fill[shape] 程序绘制有问题的填充颜色 [shape]。

下面的代码在第一个单元格的中间绘制了一个 5x5 的圆圈。 Bounds rect 的尺寸被修改为 5x5 像素,并且通过所示的计算也在单元格中居中。条件 IsServerAlive 确定已连接服务器的状态,从而相应地选择要填充的颜色。

procedure TUI.UsersGridDrawColumnCell
( Sender : TObject;
const Canvas : TCanvas;
const Column : TColumn;
const Bounds : TRectF;
const Row : Integer;
const Value : TValue;
const State : TGridDrawStates );
var
Rect : TRectF;
begin

if ( Column.Index = 0 ) and ( Row = 0 ) then
begin

Rect := Bounds;
Rect.Left := Rect.Left + (( Rect.Width / 2 ) - 2.5 );
Rect.Right := Rect.Left + 5;
Rect.Top := Rect.Top + (( Rect.Height / 2 ) - 2.5 );
Rect.Bottom := Rect.Top + 5;

if IsServerAlive then Canvas.Fill.Color := TAlphaColorRec.Green
else Canvas.Fill.Color := TAlphaColorRec.Red;

Canvas.Fill.Kind := TBrushKind.Solid;
Canvas.FillEllipse ( Rect, 1 );

end
else
UsersGrid.DefaultDrawColumnCell
( Canvas, Column, Bounds, Row, Value, State );

end;

关于delphi - 如何在网格的单元格中画一个圆圈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23427730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com