如何在网格单元firemonkey xe6中插入按钮?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在网格单元firemonkey xe6中插入按钮?相关的知识,希望对你有一定的参考价值。

如果您希望单元格显示按钮,则以下内容适用于Delphi XE5。但是在Delphi XE6中却没有。

Type
    TSimpleLinkCell = class(TTextCell)
    protected
        FButton: TSpeedButton;
        procedure ButtonClick(Sender: TObject);
    public
        constructor Create(AOwner: TComponent); reintroduce;
    end;

constructor TSimpleLinkCell.Create(AOwner: TComponent);
begin
    inherited Create(AOwner);
    Self.TextAlign := TTextAlign.taLeading;
    FButton := TSpeedButton.Create(Self);
    FButton.Parent := Self;
    FButton.Height := 16;
    FButton.Width := 16;
    FButton.Align := TAlignLayout.alRight;
    FButton.OnClick := ButtonClick;
end;

如何在Delphi XE6中完成上述工作?

答案
  1. 您的SpeedButton没有文本,因此在您使用鼠标进入按钮之前不会显示任何内容
  2. 如果您创建将此对象插入网格的TColumn类型,它将起作用。以下是您的代码的完整工作示例(在XE4上测试): unit Unit5; interface uses System.SysUtils, System.Types, System.UITypes, System.Rtti, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls, FMX.Layouts, FMX.Grid; type TSimpleLinkCell = class(TTextCell) protected FButton: TSpeedButton; procedure ButtonClick(Sender: TObject); public constructor Create(AOwner: TComponent); reintroduce; end; TButtonColumn=class(TColumn) protected function CreateCellControl: TStyledControl;override; end; TForm5 = class(TForm) Grid1: TGrid; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form5: TForm5; implementation {$R *.fmx} constructor TSimpleLinkCell.Create(AOwner: TComponent); begin inherited Create(AOwner); Self.TextAlign := TTextAlign.taLeading; FButton := TSpeedButton.Create(Self); FButton.Parent := Self; FButton.Height := 16; FButton.Width := 16; FButton.Align := TAlignLayout.alRight; FButton.OnClick := ButtonClick; // FButton.Text:='Button'; end; procedure TSimpleLinkCell.ButtonClick(Sender: TObject); begin ShowMessage('The button is clicked!'); end; function TButtonColumn.CreateCellControl: TStyledControl; var cell:TSimpleLinkCell; begin cell:=TSimpleLinkCell.Create(Self); Result:=cell; end; procedure TForm5.FormCreate(Sender: TObject); begin Grid1.AddObject(TButtonColumn.Create(Grid1)); end; end.

以上是关于如何在网格单元firemonkey xe6中插入按钮?的主要内容,如果未能解决你的问题,请参考以下文章

Embarcadero RAD Studio XE6 安装没有 FireMonkey Mobile Application 解决方法

如何在网格单元格中插入按钮?

如何在 Firemonkey 的 TTabItem 中插入另一个控件

AQGridView长按网格单元格检测

如何迭代栅格网格中的环?

如何使用firemonkey在选定区域裁剪位图?