Hi Marlis,
über einen kleinen Trick lässt sich Dein Vorhaben realisieren.
Wenn man das Objekt mit einem dicken Fensterrahmen ausstattet, so lässt sich das Objekt dann automatisch - ohne Dein weiteres Zutun - in seiner Größe verändern.
Das einzige, worum Du Dich kümmern musst, ist das Setzen/Entfernen des Dicken Rahmens = Ein/Ausschalten der Größenänderung...
<code><font color=green>' zunächst die benötigten API-Deklarationen</font>
Private Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" (ByVal hwnd As Long, _
ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, ByVal x As Long, _
ByVal y As Long, ByVal cx As Long, ByVal cy As Long, _
ByVal wFlags As Long) As Long
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOZORDER = &H4
Private Const SWP_NOMOVE = &H2
Private Const SWP_DRAWFRAME = &H20
Private Const GWL_STYLE = (-16)
Private Const WS_THICKFRAME = &H40000
<font color=green>' Ermöglicht die Größe eines Objekts zur Laufzeit zu ändern
'
' bStatus = True, Größenänderung einschalten
' bStatus = False, Größenänderung abschalten
' =====================================================</font>
Public Sub DoResize(hWndParent As Long, _
hWndObject As Long, ByVal bStatus As Boolean)
Dim Result As Long
Result = GetWindowLong(hWndObject, GWL_STYLE) Or _
WS_THICKFRAME
If Not bStatus Then _
Result = Result - WS_THICKFRAME
SetWindowLong hWndObject, GWL_STYLE, Result
SetWindowPos hWndObject, hWndParent, 0, 0, 0, 0, _
SWP_NOZORDER Or SWP_NOSIZE Or SWP_NOMOVE Or _
SWP_DRAWFRAME
End Sub</code> Am besten ist es, wenn Du den gesamten obigen Code in Modul "packst".
Um das Beispiel zu testen, plazierst Du eine PictureBox auf die Form und irgendwo daneben einen CommandButton.
Beim ersten Klicken auf den CommandButton wird die Größenänderung eingeschaltet, d.h. jetzt kann die Objektgröße verändert werden. Durch einen nochmaligen Klick auf den CommandButton wird die Größenänderung ausgeschaltet.
<code><font color=green>' Größen-Änderung ein/ausschalten</font>
Private Sub Command1_Click()
With Command1
Select Case .Tag
Case "Resize"
.Tag = ""
DoResize Me.hwnd, Picture1.hwnd, False
Case Else
.Tag = "Resize"
DoResize Me.hwnd, Picture1.hwnd, True
End Select
End With
End Sub</code> Viel Spaß mit dem Code.
Cu
Dieter |