投稿日 | : 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