MSFlexGridでの表示行数の固定について

解決


花見で泥酔  2005-04-14 22:17:29  No: 120930

こんにちわ。
MSFlexGridコントロールの使用方法についてお教え下さい。
同コントロールのプロパティにて、初期表示時のセルの行数、列数等を指定することが出来ますが、
プログラムの中で行数等を指定することができるのでしょうか。

例えば、動的にSQLで取得した件数分のみを行数指定するなど・・・
プロパティで行数を100と設定しても、実際の表示結果が30件しかない場合は
残りの70行が必要ないため、画面上表示させたくありません。

コーディング上で設定可能なプロパティをご存知であればご教授お願いいたします。


みい  2005-04-14 23:26:03  No: 120931

行数ならRows,列数ならColsプロパティで変更できます。
例) XXX.Rows = 30


特攻隊長まるるう  2005-04-15 00:40:30  No: 120932

っつか、
>同コントロールのプロパティにて、初期表示時のセルの行数、列数等を指定することが出来ますが、
そのプロパティがコーディング上で設定可能なプロパティで、
Rows 、Cols プロパティだと思ってましたが…。


いな  2005-04-15 01:32:27  No: 120933

>コーディング上で設定可能なプロパティ

ヘルプにすべてかいてませんか?
このプロパティは、値の取得のみ可能ですとか?


花見で泥酔  2005-04-16 00:05:59  No: 120934

返信が遅くなりすいません。

みいさん、特攻隊長まるるうさん、いなさん、レス有難うございます。
もちろん、行数ならRows,列数ならColsプロパティで変更できることは存じてます。当初、質問していた内容は少しずつ解消しつつあります。
・行数の初期設定値を下回る抽出データを表示⇒解決
・行数の初期設定値を上回る抽出データを表示⇒未解決

(例)
    Private Sub Form_Load()
        With MsGrid
            .Rows = 10
            .Cols = 3
        End With
    End Sub

上記の例は、画面上にあるMsGridオブジェクトのプロパティ設定(オブジェクト選択⇒プロパティ⇒〔全般〕"行"指定、"列"指定)と同様の設定です。

ですので、フォームが起動された時にデータが表示されていなくても10行3列の
セルがMsGrid上に表示されます。

以下の抽出結果よりMsGridにデータを表示させる出力部を記載します。
※MsGridの行列の初期設定は上記の(例)のままとします。

〔DB抽出結果1〕
    取得レコード数:7
    MsGrid出力部:

        Dim i As Integer
        i = 1
        With MsGrid
            Do While wDyn.EOF = False
              .TextMatrix(i, 1) = wDyn.Fields("EMPNO").Value
              wDyn.MoveNext
              i = i + 1
            Loop
        End With
        ---------------------------------------------------------
        −MsGrid表示結果−
          ・MsGridの1行目から7行目まで抽出データが表示
          ・Form_Load時にRows=10と設定している為、8行目以降に空白の行が
            存在する。
            ⇒Loopを抜けた個所にてRowsを再設定することで解消
              .Rows = i + 1
        
〔DB抽出結果2〕
    取得レコード数:15
    MsGrid出力部:

        Dim i As Integer
        i = 1
        With MsGrid
            Do While wDyn.EOF = False
                '↓↓↓
              .TextMatrix(i, 1) = wDyn.Fields("EMPNO").Value
                '↑↑↑

              wDyn.MoveNext
              i = i + 1
            Loop
        End With
        ---------------------------------------------------------
        −MsGrid表示結果−
          ・「インデックスが有効範囲ではない」とエラー表示される。
            ⇒当初、初期設定していた行数をオーバーして抽出データを表示
              させようとしているため、エラーが発生する。

            〔検証/対応〕
                では、MsGridの初期設定を2に設定し、1行した後にRowsも
                カウントアップさせるようにしたが、結果は上記同様エラーと
                なってしまう。
                
DB抽出結果2について、他にどのような対応が考えられるのでしょうか。


みい  2005-04-16 04:36:42  No: 120935

ブレークつけて1行ずつ動きを追っていった方がよいと思いますよ。


ザリガニ  2005-04-16 17:10:57  No: 120936

With MsGrid
  .rows=1
  i=1
  Do While wDyn.EOF = False
    .AddItem "",i

    .TextMatrix(i, 1) = wDyn.Fields("EMPNO").Value

    wDyn.MoveNext
    i = i + 1
  Loop
End With


るるー  2005-04-18 23:53:58  No: 120937

Dim i As Integer
        i = 1
        With MsGrid
            Do While wDyn.EOF = False
              .Rows = i
              .TextMatrix(i, 1) = wDyn.Fields("EMPNO").Value
              wDyn.MoveNext
              i = i + 1
            Loop
        End With

試してないけどこんな感じ?


特攻隊長まるるう  2005-04-19 00:46:23  No: 120938

オラクルのダイナセットは RecordCount のようなプロパティが無かった
と思うから、順に増やすか、一度コレクションみたいなものに格納して
数を調べるとか…まぁ ReDim とかで同じような質問なら過去ログに
あったけど…

>もちろん、行数ならRows,列数ならColsプロパティで変更できることは存じてます。
の発言でウンザリ。
最初の質問では明らかにそれを質問してるのに、…知ってるなら質問するな。
先の回答を丸っきり無駄にしてるよね?。他人の時間を無駄に浪費して何も
思わないような人間は、質問する資格無し。


ブッ込み隊長  2005-04-20 19:48:20  No: 120939

123


いな  2005-04-20 19:59:20  No: 120940

参考まで
http://www.redout.net/data/osietekun.html

以下引用
>上級テクニックとして、
>「そんなことはもう試しました。」とか、
>「そこまで初心者じゃありません。」などと言って、
>回答者の神経を逆なでしておけば完璧である。

教えて君上級者と思われ


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加