procedure TForm1.FormCreate(Sender: TObject); begin TStringGrid(DBGrid1).FixedCols:=2; end; procedure TForm1.DBGrid1ColEnter(Sender: TObject); begin if DBGrid1.SelectedIndex<TStringGrid(DBGrid1).FixedCols then DBGrid1.SelectedIndex:=TStringGrid(DBGrid1).FixedCols-1; end; procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var li: integer; lText: string; lRect: TRect; lFlags: longint; begin with dbgrid1 do begin for li:=1 to pred(TStringGrid(DBGrid1).FixedCols) do begin lRect:=TStringGrid(DBGrid1).CellRect(li,0); Canvas.Brush.Color:=clBtnFace; Canvas.Pen.Color:=clCaptionText; Canvas.Brush.Style := bsSolid; Canvas.FillRect(lRect); Frame3D(Canvas, lRect, clBtnHighlight,clBtnShadow, 1); inc(lRect.Left,2); Canvas.Brush.Style := bsClear; lFlags:=DT_LEFT+DT_VCENTER+DT_SINGLELINE+DT_NOPREFIX; lText:=DBGrid1.Columns[li].Title.Caption; DrawText(Canvas.Handle, PChar(lText), Length(lText), lRect, lFlags); end; end; end;