procedure TForm1.CodeEditEnter(Sender: TObject); begin if CodeEdit.text<>' then begin CodeEdit.SelStart:=length(CodeEdit.text); Table1.locate('code', CodeEdit.text,[lopartialkey]); End; end;
CodeEdit的OnExit事件如下:
procedure TForm1.CodeEditExit(Sender: TObject); begin if activecontrol<>dbgrid1 then begin dbgrid1.Visible:=false; Table1.Locate('code',codeedit.text,[lopartialkey]); if Table1.Eof then begin dbgrid1.Visible:=true; exit; end; if not Table1.Eof then begin codeedit.Text:=Table1.fieldbyname('code').asstring; NameEdit.Text := Table1.fieldbyname('name').asstring; end; end; end;
CodeEdit的OnKeyDown事件如下:
Procedure Tform1.CodeEditKeyDown(Sender: TObject;var Key: Word;Shift: TShiftState); var i:integer; begin if (Table1.RecordCount>0) then begin case key of 48..57: begin dbgrid1.Visible:=true; Table1.Locate('code',CodeEdit.text,[lopartialkey]); end; vk_next: if dbgrid1.Visible then begin i:=0; while (not Table1.Eof) and (i<11) do begin Table1.Next; i:=i+1; end; CodeEdit.Text:=Table1.fieldbyname('code').asstring; End; vk_prior: if dbgrid1.Visible then begin i:=0; while (not Table1.Bof) and (i<11) do begin Table1.prior; i:=i+1; end; CodeEdit.Text:=Table1.fieldbyname('code').asstring; end; vk_down: if dbgrid1.Visible then begin if not Table1.Eof then begin Table1.Next; CodeEdit.Text:=Table1.fieldbyname('code').asstring; end; end;
vk_up: if dbgrid1.Visible then begin if not Table1.Bof then begin Table1.Prior; CodeEdit.Text:=Table1.fieldbyname('code').asstring; end; end; end; end else dbgrid1.Visible:=false; CodeEdit.SelStart:=length(CodeEdit.text); end;
CodeEdit的OnKeyUp事件如下:
procedure Tform1.CodeEditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Table1.RecordCount>0) then begin if ((key>=48) and (key<=57)) then
Table1.Locate('code',codeedit.text,[lopartialkey]); if (key=VK_back) and (codeedit.text<>') then Table1.Locate('code',codeedit.text,[lopartialkey]); if (key=VK_BACK) and (codeedit.text=') then Table1.First; if (key=vk_down) or (key=vk_up) or (key=vk_prior) or (key=vk_next) then if dbgrid1.Visible then codeedit.Text:=Table1.fieldbyname('code').asstring; end else dbgrid1.Visible:=false; codeedit.SelStart:=length(codeedit.text); end;