鐢―bGrid鍒朵綔edit褰曞叆鏃剁殑涓嬫媺鎻愮ず妗
鍙戝竷: 2008-6-26 17:59 | 浣滆: admin | 鏌ョ湅: 14娆
鍦―elphi璇█涓彁鎷变簡涓嶅皯鏁版嵁杈撳叆鐨勬柟娉,濡傚彲浠庢暟鎹簱涓夋嫨鎴栦汉宸ヨ緭鍏ョ殑鎺т欢鏈:DBListBox銆丏BComboBox銆丏BLookupListBox銆丏BLookupComboBox绛夈備絾瀵逛簬杩欐牱涓涓緥瀛:鏁版嵁搴撳悕涓篸m.db,鍏朵腑鏈変袱涓瓧娈:
浠g爜:Code
鍚嶇О:Name
瑕佹眰鏍规嵁鐢ㄦ埛杈撳叆鐨勪唬鐮,鍘昏幏鍙栬浠g爜瀵瑰簲鐨勫悕绉般
涓鑸殑鐢ㄦ埛骞朵笉鐭ラ亾浠g爜鍜屽悕绉扮殑瀵瑰簲鍏崇郴,濡傝鐢ㄦ埛杈撳叆浠g爜,閫夊嚭瀵瑰簲鐨勫悕绉,鐢变簬涓婅堪鐨勬帶浠朵笉鑳戒娇鎿嶄綔浜哄憳鐪嬪埌浠g爜鍜屽悕绉扮殑瀵瑰簲鍏崇郴,濡傝鐢ㄦ埛鏍规嵁浠g爜鐢ㄤ笅鎷夋鍘绘煡鎵惧埌瀵瑰簲鐨勮鏉$邯褰曠殑鍚嶇О,灏嗗緢闅炬搷浣溿
鏍规嵁杩欑鎯呭喌,鎴戠紪鍒朵簡涓嬮潰绋嬪簭,鎶奃BGrid鍋氫负Edit鐨勪笅鎷夊垪琛ㄦ杈呭姪鎿嶄綔,鍦―BGrid涓洿瑙傚湴鏄剧ず鍑轰唬鐮佸拰鍚嶇О鐨勫搴斿叧绯,骞朵笖鑳藉鏍规嵁鐢ㄦ埛褰曞叆浠g爜鐨勫彉鍖栨儏鍐,闅忔椂鏇存柊DBGrid涓殑璁板綍鎸囬拡,浣跨敤鎴峰彲浠ョ洿瑙傛柟渚垮湴鐐瑰彇鎵闇瑕佺殑鍚嶅瓧,鑰屼笖DBGrid鏄緷鎹敤鎴峰湪Edit涓緭鍏ヤ唬鐮佹椂鎵嶆樉鐜,璺冲嚭Edit妗嗗嵆娑堝け銆傝繖绉嶆柟娉曟棦涓虹敤鎴峰綍鍏ユ彁渚涗簡鏂逛究,鍙堜笉褰卞搷鐣岄潰鐨勬暣浣撶編瑙,鏁堟灉涓嶉敊銆傜幇鎶婅绋嬪簭鎻愪緵缁欏ぇ瀹,浣犱滑鍙牴鎹嚜宸辩殑闇瑕,瀵圭▼搴忚繘琛屽姞宸ュ鐞,搴旂敤浜庣▼搴忓紑鍙戜腑,甯屾湜璧峰埌鎶涚爾寮曠帀鐨勪綔鐢ㄣ
銆愰棶棰樸戯細鍋氳繖鏍蜂竴涓皬绋嬪簭:璁╃敤鎴疯緭鍏ヤ唬鐮,鐒跺悗灏嗗悕绉版樉绀哄湪绐椾綋涓娿
1銆侀鍏堟垜浠彲浠ュ缓绔嬩竴涓狥orm,鍦ㄦForm涓鍔犳帶浠:
Table : Table1,璁剧疆鍏跺睘鎬у搴斾唬鐮佸簱dm.db,骞跺皢Active缃负True
DataSource : DataSource1, 璁剧疆鍏跺睘鎬ataSet涓篢able1
Edit : CodeEdit,NameEdit鍒嗗埆瀵瑰簲浠g爜杈撳叆妗嗗拰鍚嶇О鏄剧ず妗
DBGrid : DBGrid1, 璁剧疆鍏跺睘鎬ataSource涓篋ataSource1
骞舵妸CodeEdit鐨勫睘鎬ext鐨勫肩疆绌,NameEdit鐨勫睘鎬ext鐨勫肩疆绌恒
2銆佸鐓т互涓嬭鍙,淇敼CodeEdit鐨凮nEnter銆丱nExit銆丱nKeyDown銆丱nKeyUp浜嬩欢:
鍦–odeEdit鐨凮nEnter浜嬩欢濡備笅:
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鐨凮nExit浜嬩欢濡備笅:
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鐨凮nKeyDown浜嬩欢濡備笅:
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鐨凮nKeyUp浜嬩欢濡備笅:
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;
鏈▼搴忓湪Windows98+Delphi4.0銆5.0涓嬪潎璋冭瘯閫氳繃銆




发表于 2009-1-5 19:48
| 











