delphi xe10自定义stringgrid组件,添加stringlist属性,在设计时显示各列表头内容

delphi 自带的stringgrid控件,无法在设计期显示各列表头内容,想要在设计时实时显示各列名称,所以自定义一个stringgrid.

WINDOW10, DELPHI XE10.

需要先从stringgrid派生一个类。比如TMystrgrid,添加一个属性Rowheaders.

    TMyStrGrid = class(TStringGrid)
    private
        FRowHeaders: TStringList;
        procedure SetRowHeaders(const Value: TStringList);
        procedure ClearRowHeaders;
        procedure RowHeaderChanged(Sender: TObject);
        { Private declarations }
    protected
        { Protected declarations }
        procedure ShowRowHeaders;
    public
        { Public declarations }
        constructor Create(AOwner: Tcomponent); override;
        destructor Destroy; override;

    published
        { Published declarations }
        property RowHeaders: TStringList read FRowHeaders write SetRowHeaders;
    end;

在tmystrgrid的create时候,创建rowheaders, 重要的是要设置rowheader的onchange事件=自定义的rowheaderchanged

procedure TMyStrGrid.ClearRowHeaders;
var
    i: Integer;
begin
    if colcount > 0 then
        for i := 0 to colcount - 1 do
            Cells[i, 0] := '';
end;

constructor TMyStrGrid.Create(AOwner: Tcomponent);
begin
    inherited;
    FRowHeaders := TStringList.Create;
    FRowHeaders.OnChange := RowHeaderChanged;//一定要设置事件关联

end;

destructor TMyStrGrid.Destroy;
begin
    FRowHeaders.Free;
    inherited;
end;

procedure TMyStrGrid.RowHeaderChanged(Sender: TObject);
begin
    ShowRowHeaders;
end;

procedure TMyStrGrid.SetRowHeaders(const Value: TStringList);
begin
    FRowHeaders.Assign(Value);
    if (csDesigning in ComponentState) then
    begin
        if Fixedrows > 0 then
            ClearRowHeaders;
    end;
    ShowRowHeaders;
end;

procedure TMyStrGrid.ShowRowHeaders;
var
    i: Integer;
    iRHCount: Integer;
    iRCount: Integer;
begin
    if Fixedrows > 0 then
    begin
        iRHCount := FRowHeaders.Count;
        iRCount := RowCount;
        for i := 0 to iRHCount - 1 do
        begin
            if i < iRCount then
            begin
                Cells[i, 0] := FRowHeaders[i]; // CLFToLF(FTitles[i]);
//把stringlist的内容写入对应各列的第一行
            end;
        end;
    end;
end;

这样,当在设计期时,可以随时编辑表头显示内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值