stringgrid 中如何在行移动时控制某列不动呢?比如
   stringgrid中第一列为序号,
   
   在移动行时,如何控制此列不动呢?

解决方案 »

  1.   

    //try
    type
      TStringGridEx = class(TStringGrid)
      published
        procedure ColumnMoved(FromIndex, ToIndex: Longint); override;
      end;{ TStringGridEx }
    procedure TStringGridEx.ColumnMoved(FromIndex, ToIndex: Integer);
    begin
      inherited;
    end;procedure TForm1.StringGrid1ColumnMoved(Sender: TObject; FromIndex,
      ToIndex: Integer);
    const
      {$J+}vChanging: Boolean = False;{$J-}
    begin
      if vChanging then Exit;
      if 1 in [FromIndex, ToIndex] then begin
        vChanging := True;
        TStringGridEx(Sender).ColumnMoved(ToIndex, FromIndex);
        vChanging := False;
      end;
    end;
      

  2.   

    to: zswangII(伴水清清)(职业清洁工)不是移动列,而是移动行时不改变列1的顺序
      

  3.   

    //看看这样行不?~~
    procedure TForm1.StringGrid1RowMoved(Sender: TObject; FromIndex,
      ToIndex: Integer);
    var
      I: Integer;
    begin
      for I := 1 to StringGrid1.RowCount - 1 do
        StringGrid1.Cells[1, I] := IntToStr(I);
    end;