[リストへもどる]
一括表示

投稿時間:2003/03/27(Thu) 13:36
投稿者名:匿名1412
Eメール:
URL :
タイトル:
ダブルクリックで MSFlexGrid の列幅を変更
MSFlexGrid1.AllowUserResizing = 1 'flexResizeColumns
MSFlexGrid1.FixedRows = 1
プロパティを上のように設定しています。

一番上の固定行の列と列の間にマウスカーソルを移動させると、
マウスカーソルが "←→" のような形になります。
ここでドラッグすれば列の幅を変更できるのですが、
この状態でダブルクリックした時も
Excel のように列幅を変更したいです。
しかし、マウスカーソルが "←→" の時は、
イベントが発生しないみたいです。

このような処理は無理でしょうか?

投稿時間:2003/03/27(Thu) 14:20
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: ダブルクリックで MSFlexGrid の列幅を変更
以前の掲示板で下記のような回答がありましたが

No.4001 Re: MSHFlexGridの列幅を変更時のイベントを取得したい  投稿者:K.J.K. [02/3/04(月)15:33分]

そのままではないので、サブクラス化またはメッセージフックで、WM_SIZEか
WM_NCCALCSIZE辺りでも捕えてみるしかないかもしれません。

投稿時間:2003/03/27(Thu) 14:50
投稿者名:匿名1412
Eメール:
URL :
タイトル:
Re^2: ダブルクリックで MSFlexGrid の列幅を変更
> そのままではないので、サブクラス化またはメッセージフックで、WM_SIZEか
> WM_NCCALCSIZE辺りでも捕えてみるしかないかもしれません。

マウスカーソルが "←→" の状態で
ダブルクリックイベントを取得するのは、むづかしそうですね。

別の方法を考えます。
ありがとうございました。

投稿時間:2003/03/28(Fri) 03:00
投稿者名:Starfish
Eメール:
URL :
タイトル:
Re^3: ダブルクリックで MSFlexGrid の列幅を変更
 イベントが上がらないのを利用するのもありかなということで、列幅のみであれば
こんな感じでDblClickイベントのコメントのところに、幅を変更する処理を入れれば
いいのでは。(列と幅を両方とも変更する場合は、1行目と1列目の区別が付かないので
後一工夫必要です。)

Dim mblnMouseDown As Boolean

Private Sub MSFlexGrid1_Click()
    mblnMouseDown = True
End Sub

Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
    mblnMouseDown = True
End Sub

Private Sub MSFlexGrid1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
    mblnMouseDown = False
End Sub

Private Sub MSFlexGrid1_DblClick()
    If Not mblnMouseDown Then
        ' MSFlexGrid1.MouseCol の列幅を変更する
    End If
End Sub

投稿時間:2003/03/28(Fri) 10:40
投稿者名:匿名1412
Eメール:
URL :
タイトル:
Re^4: ダブルクリックで MSFlexGrid の列幅を変更
Starfish さん、ありがとうございました。
意図していたことができるようになりました。

●お詫び●
こんがらがっていて、質問文が少し変でしたね。
マウスカーソルが "←→" の状態では
DblClick イベントが発生しないようなことを書いていましたが、
実際は発生します。発生しないのは Click イベントです。

問題にしていたのは、
マウスカーソルが矢印の時に(列の真中あたりで)ダブルクリックされたのか
それとも "←→" の状態の時に(列と列の間で)ダブルクリックされたのか
を知りたいということでした。

花ちゃんさんも Starfish さんも分かっていてくれたみたいですね。