我是菜手,在限制Edit输入数字的问题搜索了20篇贴子,我发现了一个是而后年完整的:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['.','0'..'9',#8]) then key:=#0;
{控制小数点不能写两次}
if (key in ['.']) and (pos('.',Edit1.Text)>0) then key:=#0;
{控制第一位不能写小数点}
if (key in ['.']) and(length(Edit1.Text)<1) then key:=#0;
{控制第一位只能写一个0}
if (key in ['0']) and (pos('.',Edit1.Text)<1)and(copy(Edit1.Text,1,1)='0') then key:=#0;
end; 但如果我把Edit换成StringGrid,要控制StringGrid的某几列输入的是Float型,怎么做呢?如:
procedure Txinzengfm.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (stringgrid1.col = 8) or (stringgrid1.col = 9) then
这里跟上面一样??// 但怎么把Edit1.Text该成stringgrid1的cells?
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['.','0'..'9',#8]) then key:=#0;
{控制小数点不能写两次}
if (key in ['.']) and (pos('.',Edit1.Text)>0) then key:=#0;
{控制第一位不能写小数点}
if (key in ['.']) and(length(Edit1.Text)<1) then key:=#0;
{控制第一位只能写一个0}
if (key in ['0']) and (pos('.',Edit1.Text)<1)and(copy(Edit1.Text,1,1)='0') then key:=#0;
end; 但如果我把Edit换成StringGrid,要控制StringGrid的某几列输入的是Float型,怎么做呢?如:
procedure Txinzengfm.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (stringgrid1.col = 8) or (stringgrid1.col = 9) then
这里跟上面一样??// 但怎么把Edit1.Text该成stringgrid1的cells?
end;
begin
if (stringgrid1.col = 1) or (stringgrid1.col = 2) then
begin
if not (key in ['.','0'..'9',#8]) then key:=#0;
if (key in ['.']) and (pos('.',stringgrid1.Cells[stringgrid1.row, stringgrid1.col])>0) then key:=#0;
if (key in ['.']) and(length(stringgrid1.Cells[stringgrid1.row, stringgrid1.col])<1) then key:=#0;
if (key in ['0']) and (pos('.',stringgrid1.Cells[stringgrid1.row, stringgrid1.col])<1)
and(copy(stringgrid1.Cells[stringgrid1.row, stringgrid1.col],1,1)='0') then key:=#0;
end;
end;