小编Ian*_*Ian的帖子

Firemonkey网格控件 - 根据值设置单元格样式(通过OnGetValue函数调用)

我正在寻找建议的解决方案来设置由OnGetValue调用绘制的TGrid单元格(称为在视图中绘制单元格).对于背景,Mike的出色反应展示了如何在创建单元格时简单地应用tAlign属性; 但我的下一个挑战是着色细胞内容.

以前的帖子/答案

目标是更改我将要返回的值的单元格属性(字体,样式,颜色等...)作为单元格"值".在下面的例子中; 它将一个样式应用于正在返回的OnGetValue"值".很可能我们必须通过FM样式表来做到这一点; 或者我们可以直接获得TText属性吗?理想情况下,两种情况都很棒 - 但在这个阶段我会采取任何解决方案......(; - >

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Objects, FMX.Grid,
  FMX.Layouts, FMX.Edit;

type
  TForm1 = class(TForm)
    Grid1: TGrid;
    Button1: TButton;
    StyleBook1: TStyleBook;
    procedure Grid1GetValue(Sender: TObject; const Col, Row: Integer;
      var Value: Variant);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TStringColNum = class(TStringColumn)
  private
    function CreateCellControl: TStyledControl; override;
  published
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

function TStringColNum.CreateCellControl: TStyledControl; …
Run Code Online (Sandbox Code Playgroud)

delphi grid delphi-xe2 firemonkey

7
推荐指数
1
解决办法
1万
查看次数

Firemonkey网格控件 - 将列对齐到右侧

我正在使用FireMonkey Grid控件,但在尝试右对齐列时遇到了一个持续的问题.从其他用户发布的帖子中,我设法创建了一个新的TColumn类型,将一个样式应用于此(文本为HorzAlign = taTrailing)并且在理论上 - 认为这将是解决方案.这些值由OnGetValue函数提供给Grid控件.

但问题是,虽然一开始它看起来不错,但是如果你滚动条形/鼠标滚轮等,新的TColumn类型列似乎没有使用下面的方法/代码正确刷新.它可能是网格的错误/特征(或者我正在做的方式).我试过.ReAlign等...; 但无济于事.让网格重新排列的唯一方法是执行列调整大小 - 然后重新正确重绘?

下面的代码显示它是一个简单的TGrid,有2个cols,1个标准的StringColumn和1个我的新StringColNum(应用了wuth右对齐). - 任何帮助,因为这是任何网格工作的基本要求.

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.Objects, FMX.Grid,
  FMX.Layouts, FMX.Edit;

type
  TForm1 = class(TForm)
    Grid1: TGrid;
    Button1: TButton;
    StyleBook1: TStyleBook;
    procedure Grid1GetValue(Sender: TObject; const Col, Row: Integer;
      var Value: Variant);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TStringColNum = class(TStringColumn)
  private
    function CreateCellControl: TStyledControl; override;
  public
    constructor Create(AOwner: TComponent); override;
  published
  end;

var …
Run Code Online (Sandbox Code Playgroud)

delphi grid delphi-xe2 firemonkey

6
推荐指数
1
解决办法
8597
查看次数

标签 统计

delphi ×2

delphi-xe2 ×2

firemonkey ×2

grid ×2