看了幫助沒看明白﹐請用通俗的語言解釋一下

解决方案 »

  1.   

    如果State是csDefault,由delphi根据相连的dataset处理所有问题
    如果State是csCustomer,dbgrid的许多属性将与dataset无关
      

  2.   

    State指明数据集当前的操作状态通过检测数据集的这个属性来判断当前可以对数据集进行的操作。这个属性在程序处理数据的时候可能是不时的在变化的!当对数据集使用不同的方法的时候此属性(集合属性)的元素内容将发生相应变化,例如,当使用Edit方法时,数据集状态变为dsInsert值类型申明如下:
    TDataSetState = (dsInactive, dsBrowse, dsEdit, dsInsert, dsSetKey, dsCalcFields, dsFilter, dsNewValue, dsOldValue, dsCurValue, dsBlockRead, dsInternalCalc, dsOpening); 楼主的那个判断可以用来更改当前选择记录行的高亮色等,如procedure TCustomerForm.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      with TDBGrid(Sender) do
      begin
        if gdSelected in State then
        begin
          Canvas.Font.Color :=clMoneyGreen;  //改变高亮记录的背景颜色,而不是传统的深兰色
          Canvas.FillRect(Rect);
        end;
        DefaultDrawColumnCell(Rect,DataCol,Column,State);
      end;
    end;