Form ohne Rand mit Maus größer u. kleiner ziehen? Verfasst am: 02.04.2008, 15:07
Hey how,
hat jemand von Euch eine Ahnung, wie ich
einen Button, Grafik, ... auf meiner Form platziere,
mit dessen Hilfe ich die Form Größer ziehen kann?
Also so eine Art resize bei drag and drop eines Elements
auf der Form. Ach so: Das ganze hat keinen Fensterrahmen.
Sonst bräuchte ich diese Funktion ja net
ob du mir das gegenteil beweisen kannst bleibt dir überlassen
@bluespoon
ich hab grad keinen code und keine zeit
aber grundsätzlich mit mousedown und mousemove und so...
wenn mit der maus auf das steuerelement gecklickt wird (formbla_mousedown) dann wird ne variable auf true gesetzt. (bei _mouseup wieder auf false)
wenn man die maus über das steuerelement bewegt (_mousemove) dann wird die form vergrößert, je nachdem, wie weit die maus beweget wird... irgendwie so
sollniss_ Coder
Anmeldedatum: 08.09.2007 Beiträge: 212
Verfasst am: 03.04.2008, 14:57
wenn ich wüsste wie ichs geht hätte ich das "ich sag einfach mal" weg gelassen, es war nur ein vorschlag wie es gehen KÖNNTE @ dcm _________________ http://sollniss.1x.to/
bluespoon_ Tutorial Leser
Anmeldedatum: 11.11.2007 Beiträge: 22
Verfasst am: 04.04.2008, 06:52
hm ... also ich versuche es einfach mal
mit rechnen. Also aktuelle Mausposition
auf dem Bildschirm, auf dem Formular
und eben die zurückgelegten Strecken/
Bewegungen. Anschließend Breite/Höhe
plus oder minus.
Das ist mit sicherheit nicht die eleganteste
Lösung, sollte aber funktionieren. Wenn ich
Montag 'ne Lösung hab', dann schreibe ich
sie hier rein.
Vielen Dank erst einmal und ein schönes
Wochenende ...
413X_ « Moderator »
Anmeldedatum: 16.12.2006 Beiträge: 266
Verfasst am: 04.04.2008, 08:28
sollniss hat Folgendes geschrieben:
wenn ich wüsste wie ichs geht hätte ich das "ich sag einfach mal" weg gelassen, es war nur ein vorschlag wie es gehen KÖNNTE @ dcm
Dann haettest du deinen Post auch ganz sein lassen koennen, denn so koennte es sowieso nich gehen. _________________ http://www.413x.dl.am
Tod den 1337-Scriptkiddies xD
bluespoon_ Tutorial Leser
Anmeldedatum: 11.11.2007 Beiträge: 22
Gelöst Verfasst am: 07.04.2008, 08:57
So ... geschafft. Hier meine Lösung:
Bei MouseMove und Gedrückthalten der linken Maustaste auf meinem
"Größe-Ändern-Button" ermittle ich die aktuelle Mausposition auf dem
Monitor und multipliziere sie mit 15 um auf vernünftige Maßangaben zu
kommen. Anschließend rechne ich davon jeweils die left- und top-Position
des Formulars ab und passe die x- und y-Maße dementsprechend an.
Und da ich weder will, dass mein Formular zu klein wird, noch dass die
Maße in den negativen Bereich gehen und somit einen Fehler verursachen,
begrenze ich das ganze mit Hilfe von Abfragen (hier auf min. 2000).
Der Button (hier eine Picturebox) wird naturlich auch angepasst:
x-Pos = Formularbreite - Pictureboxbreite
y-Pos = Formularhöhe - Pictureboxhöhe
Code:
' 1 Picturebox, unten rechts angeordnet
Option Explicit
' PointAPI
Private Type POINTAPI
X As Long
Y As Long
End Type
' API
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
' Größe anpassen
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim MausPosition As POINTAPI
GetCursorPos MausPosition
If Button = vbLeftButton Then
If ((MausPosition.X * 15) - (Me.Left)) > 2000 Then
Me.Width = (MausPosition.X * 15) - (Me.Left)
End If
If ((MausPosition.Y * 15) - (Me.Top)) > 2000 Then
Me.Height = (MausPosition.Y * 15) - (Me.Top)
End If
Picture1.Left = (Me.Width - Picture1.Width)
Picture1.Top = (Me.Height - Picture1.Height)
End If
End Sub