投稿時間:2004/09/02(Thu) 10:27 投稿者名:4π
URL :
タイトル:DLLでグリッド操作
いつもお世話になっています。 最近、業務でよくMSHFlexGridを使うのでGridに表示させる部分を一般化し、 Functionにしたのですが、これをクラスに書き込んでDLLにしたいんですが、 どうも上手くいきません。 というより、クラスからフォーム上のMSHFlexGridの参照の仕方が全く分かりません。 色々調べたんですが、結局分かりませんでした。 なにかアドバイスをいただけないでしょうか? 下にGridのFunctionをのせます。
'Grid表示関数 Private Function setGrid(dynOra As OraDynaset) Dim RowCount As Integer '行数カウンタ Dim i As Integer '汎用カウンタ With MSHFlexGrid1 .Refresh .Redraw = False .Rows = dynOra.RecordCount + 1 '行数セット .Cols = dynOra.Fields.Count + 1 '列数セット .FixedRows = 1 '固定行 .FixedCols = 1 '固定列 .Row = 0 .RowHeight(0) = 350 '行幅 .ColWidth(0) = 300 '列幅 '各列幅の定義 For i = 1 To .Cols - 1 .ColWidth(i) = 1200 Next '列名の代入 For i = 1 To .Cols - 1 .Col = i .TextMatrix(0, i) = dynOra.FieldName(i - 1) .CellAlignment = flexAlignCenterCenter Next '行番号の設定 .Col = 0 For RowCount = 1 To .Rows - 1 .RowHeight(RowCount) = 300 .Row = RowCount .Text = RowCount '行番号を表示 Next 'レコードの終端までループ '各値のセット RowCount = 1 Do Until dynOra.EOF = True For i = 1 To .Cols - 1 If IsNull(dynOra.Fields(i - 1).Value) = False Then .TextMatrix(RowCount, i) = dynOra.Fields(i - 1).Value Else .TextMatrix(RowCount, i) = "" End If Next RowCount = RowCount + 1 dynOra.MoveNext Loop 'グリッドスタイル .AllowBigSelection = True .FillStyle = flexFillRepeat 'インデックスのフォント設定 .Row = 0 .Col = 0 .RowSel = .FixedRows - 1 .ColSel = .Cols - 1 .CellFontBold = True
.AllowBigSelection = True .FillStyle = flexFillSingle .Redraw = True
End With End Function
|