我想问如何避免与其他程序的热键冲突,同时可以和其他程序使用相同的热键?是你的级别最高?

解决方案 »

  1.   

    我这有屏蔽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;