我这有屏蔽DBGrid的Delete的一点代码,做做参考吧 procedure TFrm_ddjkEdit.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin CASE key OF VK_TAB: case dbgrid1.SelectedIndex of 1:ED_DFCC.SetFocus; 2:dbgrid1.selectedindex:=0;8:DBGrid1.SelectedIndex:=6; 18:DBGrid1.SelectedIndex:=16; end; VK_DELETE: BEGIN KEY:=VK_F1; delete_lcClick(Sender); END; VK_INSERT: BEGIN KEY:=VK_F1; insert_lcClick(Sender); END; // VK_F4:Showmessage('F4'); VK_F1:form1.ShowModal; end;//END CASE1 end; --------------------------------------------------- procedure TFrm_ddjkEdit.DBGrid1KeyPress(Sender: TObject; var Key: Char); var ls_where_cz,ls_result:string; begin if key=#13 then begin //字段序号说明:0:SWH;1:CH;2:CZ;3:YZ;4:ZIZ;5:HC;6:ZAZ;7:DZM; //8:FXH;9:PM;10:CZBZ;11:PB;12:JDL;13:FZM;14:SHR;15:XGD; case dbgrid1.SelectedIndex of 0:DBGrid1.SelectedIndex:=1; 1:dbgrid1.selectedindex:=2; 2:begin if dbgrid1.Fields[dbgrid1.SelectedIndex].AsString='' then showmessage('车种不能为空!') else begin Frm_db.ADOQ_ddjk_edit.Edit; ls_where_cz:=UpperCase(trim(dbgrid1.Fields[2].AsString)); ls_result:=my_selecting(frm_db.adoq_deal_detail,'czzd', 'zz','cz',ls_where_cz); if ls_result='' then begin if messagedlg('是否新的车种?Y/N', mtinformation,[mbyes,mbno],0)=mryes then begin dbgrid1.SelectedIndex:=4; end else exit; end else begin dbgrid1.Fields[4].AsString:=ls_result; ls_where_cz:=UpperCase(trim(dbgrid1.Fields[2].AsString)); ls_result:=my_selecting(frm_db.adoq_deal_detail,'czzd', 'hc','cz',ls_where_cz); dbgrid1.Fields[5].AsString:=ls_result; DBGrid1.SelectedIndex:=6; end; end;//end 车种不为空 end;//end 2 4:dbgrid1.SelectedIndex:=5; 5:dbgrid1.selectedindex:=6; 6:begin frm_db.ADOQ_ddjk_edit.Edit; if (DBGrid1.Fields[6].AsInteger=0) AND ((dbgrid1.columns.Items[7].field.asstring <> '-') AND (dbgrid1.columns.Items[7].field.asstring <> '+')) then DBGrid1.Fields[15].AsString:='V'; //if messagedlg('是否为跨装车?',mtinformation,[mbok,mbno],0)=mrok // then //begin // DBGrid1.Fields[15].AsString:='K'; // DBGrid1.Fields[10].AsString:='+'; //end //else DBGrid1.Fields[15].AsString:='V'; DBGrid1.SelectedIndex:=8; end;
procedure TFrm_ddjkEdit.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
CASE key OF
VK_TAB:
case dbgrid1.SelectedIndex of
1:ED_DFCC.SetFocus;
2:dbgrid1.selectedindex:=0;8:DBGrid1.SelectedIndex:=6;
18:DBGrid1.SelectedIndex:=16;
end;
VK_DELETE:
BEGIN
KEY:=VK_F1;
delete_lcClick(Sender);
END;
VK_INSERT:
BEGIN
KEY:=VK_F1;
insert_lcClick(Sender);
END;
// VK_F4:Showmessage('F4');
VK_F1:form1.ShowModal;
end;//END CASE1
end;
---------------------------------------------------
procedure TFrm_ddjkEdit.DBGrid1KeyPress(Sender: TObject; var Key: Char);
var
ls_where_cz,ls_result:string;
begin
if key=#13 then
begin
//字段序号说明:0:SWH;1:CH;2:CZ;3:YZ;4:ZIZ;5:HC;6:ZAZ;7:DZM;
//8:FXH;9:PM;10:CZBZ;11:PB;12:JDL;13:FZM;14:SHR;15:XGD;
case dbgrid1.SelectedIndex of
0:DBGrid1.SelectedIndex:=1;
1:dbgrid1.selectedindex:=2;
2:begin
if dbgrid1.Fields[dbgrid1.SelectedIndex].AsString=''
then showmessage('车种不能为空!')
else
begin
Frm_db.ADOQ_ddjk_edit.Edit;
ls_where_cz:=UpperCase(trim(dbgrid1.Fields[2].AsString));
ls_result:=my_selecting(frm_db.adoq_deal_detail,'czzd',
'zz','cz',ls_where_cz);
if ls_result=''
then begin
if messagedlg('是否新的车种?Y/N',
mtinformation,[mbyes,mbno],0)=mryes
then
begin
dbgrid1.SelectedIndex:=4;
end
else exit;
end
else
begin
dbgrid1.Fields[4].AsString:=ls_result;
ls_where_cz:=UpperCase(trim(dbgrid1.Fields[2].AsString));
ls_result:=my_selecting(frm_db.adoq_deal_detail,'czzd',
'hc','cz',ls_where_cz);
dbgrid1.Fields[5].AsString:=ls_result;
DBGrid1.SelectedIndex:=6;
end;
end;//end 车种不为空
end;//end 2
4:dbgrid1.SelectedIndex:=5;
5:dbgrid1.selectedindex:=6;
6:begin
frm_db.ADOQ_ddjk_edit.Edit;
if (DBGrid1.Fields[6].AsInteger=0) AND
((dbgrid1.columns.Items[7].field.asstring <> '-') AND
(dbgrid1.columns.Items[7].field.asstring <> '+'))
then DBGrid1.Fields[15].AsString:='V';
//if messagedlg('是否为跨装车?',mtinformation,[mbok,mbno],0)=mrok
// then
//begin
// DBGrid1.Fields[15].AsString:='K';
// DBGrid1.Fields[10].AsString:='+';
//end
//else DBGrid1.Fields[15].AsString:='V';
DBGrid1.SelectedIndex:=8;
end;