TStringGrid 的某些单元格上的百分比掩码
Percentage mask on some cells of the TStringGrid
我有一个 TStringGrid,我将在其中的每一列中键入一个值,我需要一个掩码以使该值显示为百分比,我是 Delphi 的初学者,但我看到有一个 OnGetEditMask方法,但我不知道如何为百分比创建掩码...然后我将此值操作为 Double 类型的变量。
例子
我输入 5,4 并使用掩码得到 5,4%
那怎么把list数据转成Double呢?
您在 OnGetEditMask
事件中正确分配了 Value
参数(假设您的区域设置使用十进制逗号而不是小数点),为了完整性在此处重复:
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;
我有一个 TStringGrid,我将在其中的每一列中键入一个值,我需要一个掩码以使该值显示为百分比,我是 Delphi 的初学者,但我看到有一个 OnGetEditMask方法,但我不知道如何为百分比创建掩码...然后我将此值操作为 Double 类型的变量。 例子 我输入 5,4 并使用掩码得到 5,4%
那怎么把list数据转成Double呢?
您在 OnGetEditMask
事件中正确分配了 Value
参数(假设您的区域设置使用十进制逗号而不是小数点),为了完整性在此处重复:
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;