就是关于StringGrid输入的问题,我在Edit里可以做到如下的限制:
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;
那么我在StringGrid里,把Edit1.Text改为StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]为什么不行?
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;
那么我在StringGrid里,把Edit1.Text改为StringGrid1.Cells[StringGrid1.Col,StringGrid1.Row]为什么不行?
解决方案 »
- 如何改变 edit的类型为memo
- 在程序运行期间动态创建一个窗体,如何实现?
- 只请jie115(守望红木) 进来,以表答谢!!
- 求助:是否sql server中主键的问题
- CSDN 论坛助手 测试发行。。请大家下载试用。功能多多。方便多多。
- 怎么用udp协议发送信息?
- ★★★100分求助:sql server2000中文版中如何设置,使得select * from testtable where testfield like '____China'能够查询到字符串'你
- 请问哪里有D6的Update2下载?
- delphi2007用fastreport组件中汉字菜单显示存在问题
- 如何做到在我的应用程序中禁止使用CLIPBOARD进行COPY,PASTE?
- 启动窗体问题
- 第一次在DELPHI版提问:我用Delphi5打开一个项目,为什么第一个主窗体的所以属性都读错误,而且建立不了窗体。但是该项目的其它窗体可以
function GetGridEdit(mGrid: TCustomGrid): TCustomEdit;
var
I: Integer;
begin
Result := nil;
for I := 0 to mGrid.ControlCount - 1 do
if mGrid.Controls[I] is TCustomEdit then
TControl(Result) := mGrid.Controls[I];
end; { GetGridEdit }procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
var
vEdit: TCustomEdit;
begin
vEdit := GetGridEdit(TStringGrid(Sender));
if not Assigned(vEdit) then Exit;
if not (Key in ['.', '0'..'9', #8]) then Key := #0;
if (Key in ['.']) and (Pos('.', vEdit.Text) > 0) then Key := #0;
if (Key in ['.']) and (Length(vEdit.Text) < 1) then Key := #0;
if (Key in ['0']) and (Pos('.', vEdit.Text) < 1) and
(Copy(vEdit.Text, 1, 1) = '0') then Key := #0;
end;
{控制第一位不能写小数点}
是不是不安全呀?
如果操作员先在EDIT1里写了有值,没有注意将光标定位到第一位然后输入点数点,就不能拦截了!