gpt4 book ai didi

delphi - 右对齐delphi stringgrid列但保持主题绘图样式

转载 作者:行者123 更新时间:2023-12-02 14:58:44 28 4
gpt4 key购买 nike

我正在使用 delphi 2010 进行带有 stringgrid 的项目。我希望网格的某些列右对齐。 I understand how I can do this defaultdrawing 设置为 false。

但是,如果可能的话,我希望保留网格的运行时主题着色。有没有办法在启用默认绘图的情况下右对齐列,或者至少复制 onDrawCell 事件中的代码以模仿运行时主题着色?

最佳答案

您可以使用插入器类并重写 DrawCell 方法,请检查此示例

type
TStringGrid = class(Grids.TStringGrid)
protected
procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); override;
end;

TForm79 = class(TForm)
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
private
end;

var
Form79: TForm79;

implementation

{$R *.dfm}

{ TStringGrid }

procedure TStringGrid.DrawCell(ACol, ARow: Integer; ARect: TRect; AState: TGridDrawState);
var
s : string;
LDelta : integer;
begin
if (ACol=1) and (ARow>0) then
begin
s := Cells[ACol, ARow];
LDelta := ColWidths[ACol] - Canvas.TextWidth(s);
Canvas.TextRect(ARect, ARect.Left+LDelta, ARect.Top+2, s);
end
else
Canvas.TextRect(ARect, ARect.Left+2, ARect.Top+2, Cells[ACol, ARow]);
end;

procedure TForm79.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='title 1';
StringGrid1.Cells[1,0]:='title 2';
StringGrid1.Cells[2,0]:='title 3';

StringGrid1.Cells[0,1]:='normal text';
StringGrid1.Cells[1,1]:='right text';
StringGrid1.Cells[2,1]:='normal text';
end;

结果

enter image description here

关于delphi - 右对齐delphi stringgrid列但保持主题绘图样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10046969/

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