我用delphi6、win2000,导入MSFlexGrid控件后,可以更改表格颜色及Cols、rows属性,但使用赋值语句时
  msflexgrid1.TextArray[3] := '1234' 
  或msflexgrid1.TextMatrix[2,3] := '12344';
会出现"无效的参数数目",
为什么???

解决方案 »

  1.   

    那是因为注册MsFlexGrid时生成的MSFlexGridLib_TLB.pas存在bug所致procedure TMSFlexGrid.Set_ColAlignment(index: Integer; ColAlignment: Smallint);
    begin
      DefaultInterface.ColAlignment[index] := ColAlignment;
    end;procedure TMSFlexGrid.Set_ColWidth(index: Integer; ColWidth: Integer);
    begin
      DefaultInterface.ColWidth[index] := ColWidth;
    end;procedure TMSFlexGrid.Set_RowHeight(index: Integer; RowHeight: Integer);
    begin
      DefaultInterface.RowHeight[index] := RowHeight;
    end;procedure TMSFlexGrid.Set_MergeRow(index: Integer; MergeRow: WordBool);
    begin
      DefaultInterface.MergeRow[index] := MergeRow;
    end;procedure TMSFlexGrid.Set_MergeCol(index: Integer; MergeCol: WordBool);
    begin
      DefaultInterface.MergeCol[index] := MergeCol;
    end;procedure TMSFlexGrid.Set_RowPosition(index: Integer; Param2: Integer);
    begin
      DefaultInterface.RowPosition[index] := Param2;
    end;procedure TMSFlexGrid.Set_ColPosition(index: Integer; Param2: Integer);
    begin
      DefaultInterface.ColPosition[index] := Param2;
    end;procedure TMSFlexGrid.Set_RowData(index: Integer; RowData: Integer);
    begin
      DefaultInterface.RowData[index] := RowData;
    end;procedure TMSFlexGrid.Set_ColData(index: Integer; ColData: Integer);
    begin
      DefaultInterface.ColData[index] := ColData;
    end;procedure TMSFlexGrid.Set_DataSource(const DataSource: IRowCursor);
    begin
      DefaultInterface.DataSource := DataSource;
    end;procedure TMSFlexGrid.Set_FixedAlignment(index: Integer; FixedAlignment: Smallint);
    begin
      DefaultInterface.FixedAlignment[index] := FixedAlignment;
    end;在上面的过程函数中,原文只有exit;procedure TMSFlexGrid.Set_TextMatrix(Row: Integer; Col: Integer; const TextMatrix: WideString);
      { Warning: The property TextMatrix has a setter and a getter whose
      types do not match. Delphi was unable to generate a property of
      this sort and so is using a Variant to set the property instead. }
    var
      InterfaceVariant: OleVariant;
    begin
      InterfaceVariant := DefaultInterface;
      InterfaceVariant.TextMatrix[Row,Col] := TextMatrix;//原文没有[Row,Col]
    end;按照上面的方法改了之后,就不会出现问题了