运行程序时,dbgrid控件上显示数据库记录!
要使鼠标不能点击dbgrid控件上的记录?如何设置,或者编写?

解决方案 »

  1.   

    dbgrid.enabled:=false;
    如果是用这种方法有两个方面不行!
    1、两边的滚动条都不能用;
    2、颜色是灰色的,看起来很不舒服、不清晰。(顺便问一下,有没有办法在enabled是false
       时,显示的颜色能不能设置成其它颜色了?)
      

  2.   

    不知这样行不行:
    procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN;
    begin
      if (Message.xPos>DBGrid1.left) and (Message.xPos<=DBGrid1.left+DBGrid1.width)a and (Message.yPos>DBGrid1.top) and (Message.yPos<=DBGrid1.top+DBGrid.Height) then
        exit
      else
        inherited;
    end;
      

  3.   

    或者在进入网格事件中加入EXIT
      

  4.   

    用下面的方法不知道可否在dbgrid.enabled:=false;时触发Enter事件?????????
    从而改变编辑框背景色
    procedure TForm1.DBGrid1Enter(Sender: TObject);
    var
      Vedit:TEdit;
    begin
      vEdit:=GetDBGridEdit(TDBGrid(Sender));
      if Assigned(vEdit) then vEdit.Color:=clYellow;end;
      

  5.   

    喔!
    前面应该还有两个自定义的函数:
    function GetDBGridEdit(vDBGrid:TDBGrid):TEdit; var
     I:Integer;
      begin
      Result:=nil;
      if not Assigned(vDBGrid) then Exit;
      if not vDBGrid.EditorMode then
              begin
               vDBGrid.EditorMode:=True;
               vDBGrid.EditorMode:=False;
              end;
               with vDBGrid do for I:=0 to Pred(ComponentCount) do
                       if Components[I] is TCustomEdit then
                        begin
                            Result:=TEdit(Components[I]);
                            break;
                        end;
     end; //-------------------------------------------------------
    function GetDBGridEditText(vDBGrid: TDBGrid):String  ;
    var
      vEdit :TEdit;
      begin
        vEdit:=GetDBGridEdit(vDBGrid);
        if  Assigned(Vedit) then
               Result:=vEdit.Text
               else
               Result:='';
      end;
      

  6.   

    dbgrid1的options里设置
    选中行dgrowselect