- ベストアンサー
【VB6】フレックスグリッドの余白部分の使い方について
- MSFlexGridの余白部分について質問があります。現在、グリッドにデータを設定していますが、行の無い余白部分をクリックした時にカレント行の選択を解除したいです。
- 余白部分をクリックした時にカレント行の選択を解除する方法について検討しています。しかし、グリッドには.Hittestのプロパティがなく、余白部分が押されたことを知る方法が分かりません。
- MSFlexGridの余白部分をクリックした時にカレント行の選択を解除する方法について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
マウスが押されたときに、どこで押されたかを調べておいて、余白であったら .rowや.rowselなどを強制的に指定しちゃうという手があるね。 下記コードはそのものではないけどきっと参考になるでしょう。 Private mblnIgnoreDblClick As Boolean Private Sub MSFlexGrid1_DblClick() If Not mblnIgnoreDblClick Then Debug.Print MSFlexGrid1.MouseRow, MSFlexGrid1.MouseCol End If End Sub Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) mblnIgnoreDblClick = (y + 60) > (MSFlexGrid1.CellTop + MSFlexGrid1.CellHeight) End Sub
その他の回答 (1)
- MARU4812
- ベストアンサー率43% (196/452)
単純に座標計算しか思い浮かびません。 セル幅×セル数の単純計算とマウスの座標 x y だけだと、 スクロールできるほどデータが多い場合に判定できないので、 表示しているセルの情報も考慮しないといけないのかな。 TopRow とか LeftCol ?・・・固定セルも考慮に入れないと いけないのかも? #1は 余白部分を選択してもカレントセルが動く事を利用して その下方向範囲外だったら。。。というアイデアですね。 右方向範囲外の条件を加えるだけで、とりあえずは それっぽく動きそうです。穴が無いとは言い切れないけど、 ざっと動かした限りでは問題なさそうでした。 カレントセルの動きをプログラムで制限してるとかだと だめだけどね。
お礼
>単純に座標計算しか思い浮かびません。 やはりそうなんですか・・・ 自分も散々探して回っているのですが、思うようなものは見つかっていません。 座標から求めるのがもっとも正しい手法なのかもしれないですね。 回答ありがとうございます。
お礼
回答ありがとうございます。 上記のコードを使わせて頂いた所、ちゃんと上手くいきました。 やはり質問のようなことを実現するプロパティは用意されていないのでしょうか。 あまりややこしい手段を取りたくないので、これで良いかちょっと考えています。 もう少し分かりやすい方法がありましたら教えてください。