TStringGrid的某些单元格上的百分比蒙版

时间:2019-01-24 13:01:19

标签: delphi tstringgrid

我有一个TStringGrid,我将在每列中键入一个值,并且我需要一个掩码以使该值显示为百分比。我是Delphi的初学者,但我看到有一个OnGetEditMask方法,但我不知道如何为百分比创建掩码...然后,我将此值操纵为Double类型的变量。 例 我输入5,4并使用蒙版获得5,4%

那我如何将列表数据放入Double中?

1 个答案:

答案 0 :(得分:1)

您正在Value事件中正确分配OnGetEditMask参数(假设您的区域设置使用小数逗号而不是小数点),为完整性起见,请重复此操作:

procedure TForm1.StringGrid1GetEditMask(Sender: TObject; ACol, ARow: Integer;
  var Value: string);
begin
  if (ACol = 0) or (ACol = 1) then
    Value := '99,9%';
end;

然后,要将单元格的字符串内容转换为double,您需要在将字符串传递给字符串之前将其删除,例如StrToFloatDef()

例如:

procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
  d: double;
  b: boolean;
begin
  b := False;
  s := StringGrid1.Cells[1, 1];
  if s <> '' then
  begin
    if s[Length(s)] = '%' then
    begin
      s := copy(s, 1, Length(s)-1);
      b := true;
    end;
    d := StrToFloatDef(s, 0.0);
    if b then d := d / 100;
  end;
  ShowMessage(FloatToStr(d));
end;