Microsoft Access 掲示板

フォームの境界線スタイル「なし」の設定で、サイズ調整可能の設定時と同等の機能を実装したい / 2

3 コメント
views
4 フォロー
2

なるほど! SendMessageにこんな使い道があったとは! コードがすごくシンプルに実装できますね。
あと実装して分かったことですが、サブフォームやListBoxの範囲内でドラッグを開放した場合ラベルやイメージのコントロールが背面に隠れてしまい再度ドラッグすることが不可能になってしまいました。
対策としては、初期の画面サイズ(InsideWidth or InsideHeight)を記憶してそれ以下に縮小しないように規制するコードを試行錯誤してみようと思います。
なにはともあれ、短時間でこのようなアイデアを教授頂き大変有り難うございます。

通報 ...
  • 3

    ↑で書き込んだ「ラベルやイメージのコントロールが背面に隠れてしまい」の部分ですがアンカーを使用した場合は、初期表示の画面サイズ以下でドラッグを開放すると画面が見切れてしまい操作不能という表現が正しかったです。
    初期画面以下に縮小できないように規制するコードも思っていたよりも簡単に出来たので参考までに載せておきます。

    Option Compare Database
    Option Explicit
    
    Private originX As Long
    Private originY As Long
    
    Private Sub Form_Load()
        originX = Me.InsideWidth
        originY = Me.InsideHeight
    End Sub
    
    Private Sub img_Resize_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If Button And acLeftButton Then
            ReleaseCapture
            Call SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, HTBOTTOMRIGHT, 0&)
        End If
    End Sub
    
    Private Sub img_Resize_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
        If originX >= Me.InsideWidth Then Me.InsideWidth = originX
        If originY >= Me.InsideHeight Then Me.InsideHeight = originY
    End Sub
    

    以上、ありがとうございました。