• 締切済み

VB6のMsFlexGridコントロールについて

取得したデータ数分の行にデータを表示して その後10カラム目のデータでソートしているのですが 行選択状態の表示が消えてしまいます。 MSFlexGrid1.Col = 10   MSFlexGrid1.Sort = flexSortGenericDescending '* 降順にソート MSFlexGrid1.Row = 1 どうやら、Col、Rowプロパティに値を設定した時点で消えているようです。 これらをやらないと1行目が選択状態と なっています。表示後カーソルでクリックすると 行選択状態になります。 表示時点で行選択状態にさせたいのですがなにか 手段があれば教えてください。 設定しているプロパティは下記の通りです。 HighLight=1:(選択を強調表示) SelectionMode=1:(行全体を選択) よろしくおねがいします。

みんなの回答

回答No.2

MSFlexGrid1.Col = 10   MSFlexGrid1.Sort = flexSortGenericDescending MSFlexGrid1.Row = 1 の後に SendKeys "{Left}" とかやってみてはどうでしょうか。

braveheart
質問者

お礼

以下のように解決できたんですが なるほど、これは怪しそうですね。 あしたやってみます。ありがとうございました。

braveheart
質問者

補足

SendKeysでは、選択状態になりませんでした。 ColとColselでやるしかないみたいです。 ありがとうございました。

回答No.1

試していませんが、カラム指定時にTextMatrixで場所指定できませんか? いまVBが手元にありせんけど……

braveheart
質問者

お礼

回答ありがとうございます。 できました。 この後改めて、 grid.col=0 grid.colsel=10 を付け加えたら選択状態になってました。 すいません。またよろしくお願いします。

関連するQ&A

  • MSFlexGrid 行選択状態

    現在VBを勉強しております。(WindowsXP、VB6.0) http://oshiete1.goo.ne.jp/qa996239.html ↑の質問と同じ内容で悩んでいるんですが、回答を見ても理解出来ず、解決出来ていません(>_<) 1.処理起動時に、テキストファイルからデータを読み込み、グリッドへ表示した後。 2.ソートした後。 3.「検索」処理にてデータを絞り込んで表示した後。 以上3点の時に、行選択状態でなくなってしまうので、それを修正したいんですが、方法が分かりません(;_:) 現在は、グリッドのフォーカスイベントに MSFlexGrid1.SelectionMode = flexSelectionByRow を設定しているだけです。 以上、よろしくお願いいたしますm(__)m

  • VB6 MSFlexGridとPictureBox

    お世話になります。 Visual Basic6.0(SP6)で開発している素人です。 (質問1) PictureBoxのBackColorが変色できません。 Picture1.BackColor = &H80FF80 '緑色。色は問いません。 PictureBoxは色の変更はできないものなんでしょうか? (質問2) MSFlexGridでexcelの内容をセル指定して表示できたのですが、 指定のMSFlexGridの行の色を変えられません。20行3列で、○行目の1~3列を 色を変えたいです。 MSFlexGrid1.Row = 2 MSFlexGrid1.BackColorSel = QBColor(11) MSFlexGrid1.CellForeColor = QBColor(11) いづれもうまくいきませんでした。。。 (質問3) MSFlexGridでexcelの内容をセル指定して表示できたのですが、行の高さを 変更できません。 MSFlexGrid1.RowHeight(-1) = 800  '標準の行高さ指定(-1で全部を変更) と、やっても MSFlexGrid1 .RowHeight(0) = 800 '0行目の高さを800に MSFlexGrid1 .RowHeight(1) = 800 '1行目の高さを800に と、やっても 一番上の行しか高さが変わりません。 優先順位は 質問3 > 質問1 > 質問2 です。 急いでいますので、どなたかお願いします!

  • VB6.0 MSFlexGridのMouseRowプロパティについて

    研修中の新人です。 テキストファイルからランダムアクセスをしMSFlexGridに表示させる課題を作成しています。 MSFlexGridに表示させた行の更新、削除について考えています。 MouseRowプロパティで得られる行の番号というのはMSFlexGridに表示させている行の番号でしょうか。 それとも検索で得られた行全体の中の番号でしょうか。 例えば検索で50件得られMSFlexGridに表示したとします。 MSFlexGridは10件ずつしか表示しないとします。 41件目から50件目をスクロールして表示させ50件目をクリックしたとき、 MouseRowは"10"を返すのでしょうか。それとも"50"を返すのですか。 もし、"10"をかえしてしまうのなら列幅を0にしてファイルの行番数を格納しておくような列をつくります。(行番号は表示させてはいけない) そうではなく、"50"を返すなら配列に検索一致したファイルの行番数を格納しておく方法でコードを書こうと思います。 ご存知の方お願いします。

  • MSFlexgrid

    はじめましてVB初心者です。 MSFlexgridでアクセスDBの内容を取り込んで 別のフォームのテキストに表示させたいのですが MSFlexgridの欲しい行をクリックしても表示はテーブルの 一番上のになってしまいます。 欲しい行は色が変わるので選択できていると思うのですが・・・ どなたか教えてください。 環境はwin2000,VB5(SP3),ACCESS97です。 宜しくお願いします

  • VB6のMSFlexGridでセルをマージしたい

    お世話になります VB6のMSFlexGridでセルをマージしたいのですがうまくいきません 行イメージは以下になります。 ------------------ | AA | 1 | 2 | 3 |    ------------- |   | A | B | C | ------------------ | AA | 4 | 5 | 6 |    ------------- |   | D | E | F | ------------------ | BB | 1 | 2 | 3 |    ------------- |   | A | B | C | ------------------ | BB | 4 | 5 | 6 |    ------------- |   | D | E | F | ------------------ 1行目と2行目の先頭をマージしてtext="AA" 3行目と4行目の先頭をマージして上と同じtext="AA" 5行目と6行目の先頭をマージしてtext="BB" 7行目と8行目の先頭をマージして上と同じtext="BB" flexMergeFreeもMergeRowも試したつもりなのですが、うまくいきませんでした。 記述の順番なのかな? With oObjGrid .Col = 0 .Row = 0 .Text = "AA" .Row = 1 .Text = "AA" ' ※ここでマージ処理を試したつもり .Row = 2 .Text = "AA" .Row = 3 .Text = "AA" ' ※ここでマージ処理を試したつもり .Row = 4 .Text = "BB" .Row = 5 .Text = "BB" ' ※ここでマージ処理を試したつもり .Row = 6 .Text = "BB" .Row = 7 .Text = "BB" ' ※ここでマージ処理を試したつもり End With ※以下を色々な順番で試したのですが、だめでした .MergeCells = flexMergeFree .MergeRow(0) = True .MergeRow(1) = True .MergeCells = 2 'マージの指定 .MergeCells = 3 'マージの指定

  • MSFLEXGRIDについて

    MSFLEXGRIDを使ってデータベースの内容を表示させようと考えています。 使い方としてはデータベースからfilterをつかって対象を絞ったデータをMSFLEXGRIDで項目を並び替えて表示させようとしたときにうまくいきません。 sqlで項目を並び替えてdatagridを使うしかないのでしょうか? なぜMSFLEXGRIDにこだわるかというと表示させた結果に対し、特定の行をダブルクリックすると別のフォームに移動するといったプログラムを作ろうとしているため、この方法がいいのかなと考えているからです。 どうかご教授のほどよろしくお願いします。 サーバー 2000 SQLサーバ2003 開発クライアントPC W2K VB6

  • VB6 MSFlexGrid行数指定について

    はじめまして VB初心者です。 いまさらですが、VB6.0 MSFlexGridの行数指定で悩んでいます。 過去の質問等私なりに調べたのですが、うまく検索することができなかったため、質問させていただきます。 現在、MSFlexGridに5万件程度のデータを表示しようと思っています。 その際、行数を指定するための「Rows」プロパティに行数を設定したいのですが、32767件を超えると、設定できなくなってしまいます。 ヘルプを見る限りではRowsの値はLONGと記載されていますので、設定可能では?っと思っています。 何かお気づきの点がございましたら教えていただけると助かります。 以下大した内容ではありませんが、行数設定部分の記述です。 Dim nCnt As Long nCnt = ReadDataSheet(txtFileName.Text) With flxDataSheet .Cols = 5 .Rows = nCnt + 1 End With

  • WinXPでMSFlexGridの表示が遅い

    VB6で作ったアプリをWin2Kで動かすと、それなりに動くのですが、WinXPで動かすとやたら遅くなります。 何が遅くなっているか調べたら、MSFlexGridの表示でした。 10列×100行くらいの表で、ROW指定して10列×10行くらい表示更新すると、7~8秒かかります。 (Win2Kだと2秒くらい) って、こんなもんですか? ちなみに、WinXPの方がCPU.グラフィック性能は上です。 どなたか教えてください。

  • MSFlexGridとDataGridの違いについて

    VBの勉強をしております。 WindowsXP、VB6.0です。 標記の件について質問させてください。 MSFlexGridは、グリッドの結合や色を付けたりするのに適している。 DataGridはエクセルのように、直接グリッド内を編集できるが、結合は無理で、色付けの設定はグリッド単位では指定できない。 2つのグリッドのどちらを使えば良いのか分からず、自分で調べてみた所、以上のような違いがあるのでは、という所までは分かりました。 行いたい処理は、 ・ファイルからデータを取り出し、グリッドへ表示。データの追加、修正、削除を行い、ファイルへ保存する。 機能として、検索とソートを行える。 また、データをクリックした際に、セルではなく、行全体の色を変更し、「行が選択されている」という見た目にしたい。 以上のような考えがあるのですが、実装が簡単なのはどちらのグリッドなのでしょうか? また、他に上記のような処理が可能なコントロールがあれば教えていただけないでしょうか? 以上、初心者なもので、文章が理解しづらいかもしれないですが、よろしくお願いいたします。

  • MSFlexGridで↑や↓押下時の処理

    現在VBの勉強をしております(WindowsXp、VB6.0) MSFlexGridの行を選択すると、行のデータをテキストボックスへ表示する、といった処理を実装したんですが、キーボードの「↑」や「↓」押下時に、選択行は変わるんですが、クリックイベントでもフォーカスイベントでも処理を拾えません・・・。 まだ試してはいないんですが、keyDownイベントで、「↑」「↓」を判断し、更にグリッドにフォーカスが存在する場合に、1行上(または下)のデータをテキストボックスに表示する。 という処理をしないと不可能でしょうか? どう考えても上記の方法はスマートでは無いなぁと思い、何か良い方法があれば教えていただきたく質問させていただきました。 よろしくお願いいたしますm(__)m

専門家に質問してみよう