アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

MSFlexGridの余白部分について質問があります。
(セルが全く無いデフォルトで灰色の地帯です)


現在、グリッドに数行のデータを設定して、
クリックしたらカレント行全体が選択されるようにしています。
問題は行の無い余白部分のことなのですが、もし○行目をカレントとして選択している時、
次に余白部分をクリックしたら今の行選択を解除したいと考えているのですが、上手くいきません。

”行選択を解除する”というのは.Rows=0で出来そうなのですが、
グリッドにはリストビュー等のように.Hittestのプロパティがない為余白部分が押されたことを知るには
どうしたら良いか検討が付きません。


どなたか知っている方がいらっしゃれば教えてください。
よろしくお願いします。

A 回答 (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

参考URL:http://www.vbforums.com/showthread.php?t=355726
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

上記のコードを使わせて頂いた所、ちゃんと上手くいきました。

やはり質問のようなことを実現するプロパティは用意されていないのでしょうか。
あまりややこしい手段を取りたくないので、これで良いかちょっと考えています。

もう少し分かりやすい方法がありましたら教えてください。

お礼日時:2011/08/25 16:30

単純に座標計算しか思い浮かびません。


セル幅×セル数の単純計算とマウスの座標 x y だけだと、
スクロールできるほどデータが多い場合に判定できないので、
表示しているセルの情報も考慮しないといけないのかな。
TopRow とか LeftCol ?・・・固定セルも考慮に入れないと
いけないのかも?

#1は
余白部分を選択してもカレントセルが動く事を利用して
その下方向範囲外だったら。。。というアイデアですね。

右方向範囲外の条件を加えるだけで、とりあえずは
それっぽく動きそうです。穴が無いとは言い切れないけど、
ざっと動かした限りでは問題なさそうでした。

カレントセルの動きをプログラムで制限してるとかだと
だめだけどね。
    • good
    • 0
この回答へのお礼

>単純に座標計算しか思い浮かびません。
やはりそうなんですか・・・
自分も散々探して回っているのですが、思うようなものは見つかっていません。
座標から求めるのがもっとも正しい手法なのかもしれないですね。

回答ありがとうございます。

お礼日時:2011/08/25 16:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!