這是81個TEdit-s(MyEdit [bx,by,x,y])處理的onchange過程,動態創建並分組爲4維海量。現在我試圖編輯編輯接受只有1位數字。 「只有數字」部分正常工作,但「僅1位數」部分給出訪問衝突錯誤(AVE)。代碼:AVE:訪問衝突模塊中的@adress:DELPHI7
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,程序仍然執行並工作。每次我輸入一個字母而不是一個數字 - 出現錯誤,我點擊確定,程序完成這項工作。但有必要刪除該錯誤。有什麼辦法嗎?
哎呀,抱歉有一點小錯誤。 「僅1位數」部分正常工作,但「只有數字」部分給出錯誤。請參閱以IF NOT開頭的行。謝謝 –
最好在編輯框的OnKey事件中測試數字。 –
@Keith - 他根本不應該使用任何關鍵事件! TMaskEdit只是開箱即用。 –