这是 81 个 TEdit-s (MyEdit[bx,by,x,y]) 的处理 onchange 过程,动态创建并分组在一个 4 维块中。现在我正在尝试对编辑进行编程以仅接受 1 位数字。“只有数字”部分工作正常,但“只有 1 位”部分给出访问冲突错误 (AVE)。编码:
procedure TForm1.OnHandleChange(Sender: TObject);
var
bx,by,x,y,len : Integer;
begin
bx:=(sender as TEdit).tag div 1000;
by:=(sender as TEdit).tag div 100-10*bx;
x:=(sender as TEdit).tag div 10-100*bx-10*by;
y:=(sender as TEdit).tag-bx*1000-by*100-x*10;
{*The line below gives the error*}
if not (MyEdit[bx,by,x,y].text[1] in ['1'..'9']) then MyEdit[bx,by,x,y].text:='';
MyEdit[bx,by,x,y].SelStart:=length(MyEdit[bx, by, x,y].text);
if length(MyEdit[bx, by, x,y].text) >1
then MyEdit[bx,by,x,y].text:=MyEdit[bx,by,x,y].text[2];
end;
尽管有 AVE,但该程序执行并运行。每次我输入一个字母而不是一个数字 - 错误来了,我点击确定,程序完成了这项工作。但有必要消除该错误。有什么办法吗?