Zwei Objekte, die sich berühren

  • Word

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von akhof.

    Zwei Objekte, die sich berühren

    Hallo!

    Ich habe zwei Objekte (Labels), die sich bewegen. Falls sich diese berühren soll eine MEssageBox angezeigt werden. Im Internet gibt es dazu zwar schon Themen, leider haben keine funktioniert. Ich muss für die Schule Makros von Word benutzen (nicht VB-Studio). Hat jemand einen Tipp für mich?

    Leibe Grüße


    Edit by Manschula: Da es sich hierbei wohl um VBA handelt --> Thema verschoben

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Manschula“ ()

    Rectangles haben eine Funktion InersectsWith wenn sie mit einem anderen Rectangle kollidieren. Bei Controls ist das Rectangle um das Control Control.Bounds, also in deinem Beispiel

    Visual Basic-Quellcode

    1. If Label1.Bounds.IntersectsWith(Label2.Bounds) Then
    2. Messagebox("")
    3. End If
    Willkommen im Forum. :thumbup:
    Gib Deinem Lehrer die rote Karte und sag ihm, der RodFromGermany hat gesagt, er soll Euch das Programmieren ordentlich lehren.
    Da gibt es nämlich Rectangles, und die kann man fragen, ob sie mit anderen Rectangles gemeinsame Punkte haben.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke!
    Das habe ich auch gefunden. Leider scheint es so zu sein, dass beim Makros die Label die Funktion Bounds nicht besitzen! :(


    Edit by Manschula: Unnötiges Vollzitat entfernt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Manschula“ ()

    akhof schrieb:

    Leider scheint es so zu sein, dass
    ich Hilfe für VBA benötige und Hilfe in VB.NET erhalten habe. :S
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Du bist hier im VB-Grundlagen-Forum gelandet, Du bist auf den Post von @TGenius: angesprungen, er hat aber nicht deinen WORD-Makro-Text gelesen.
    Ich hab den Thread schon zum erschieben ins VBA-Forum gemeldet.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo akhof,
    probier' mal dies:

    Visual Basic-Quellcode

    1. ' Controls: 2 * Label
    2. Private XD!, YD!
    3. Private Sub UserForm_Activate()
    4. Label1.ZOrder
    5. End Sub
    6. Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    7. XD = X
    8. YD = Y
    9. End Sub
    10. Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    11. If Button = 1 Then
    12. With Label1
    13. .Move .Left + X - XD, .Top + Y - YD
    14. End With
    15. End If
    16. If Intersect(Label1, Label2) = True Then
    17. Me.Caption = "Kollision"
    18. Else
    19. Me.Caption = "Keine Kollision"
    20. End If
    21. End Sub
    22. Private Function Intersect(ByVal Ctrl1 As Control, ByVal Ctrl2 As Control) As Boolean
    23. If (((Ctrl1.Left < (Ctrl2.Left + Ctrl2.Width)) And (Ctrl2.Left < (Ctrl1.Left + _
    24. Ctrl1.Width))) And (Ctrl1.Top < (Ctrl2.Top + Ctrl2.Height))) Then
    25. Intersect = (Ctrl2.Top < (Ctrl1.Top + Ctrl1.Height))
    26. Else
    27. Intersect = False
    28. End If
    29. End Function

    Label mit der Maus verschieben.
    Gruss,

    Neptun