vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Allgemeine Diskussionen
Re: Rect zeichnen (wie bei Maus->Desktop) 
Autor: wincnc
Datum: 21.04.06 01:15

Hallo, vesruch´s mal mit diesem Code.
Kopiere den Code einfach in eine Form und füge ein paar Controls hinzu.
Private Declare Function IntersectRect Lib "user32" (lpDestRect As RECT, _
  lpSrc1Rect As RECT, lpSrc2Rect As RECT) As Long
 
Private Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type
 
Private oldX As Single
Private oldY As Single
Private StartX As Single
Private StartY As Single
Private Auswahl() As String
 
Private Sub Form_Load()
  Me.AutoRedraw = True
  Me.DrawStyle = vbDot ' oder vbDashDotDot oder vbDash oder vbDashDot
End Sub
 
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y _
  As Single)
  StartX = X
  StartY = Y
  oldX = StartX
  oldY = StartY
  Me.Cls
End Sub
 
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y _
  As Single)
Dim sm As Integer
 
  If Button = 1 Then
    sm = Me.DrawMode
     Me.DrawMode = vbInvert
      Me.Line (StartX, StartY)-(oldX, oldY), , B
       Me.Line (StartX, StartY)-(X, Y), , B
      oldX = X
     oldY = Y
    Me.DrawMode = sm
  End If
 
End Sub
 
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As _
  Single)
Dim C As Control
Dim E1 As RECT
Dim E2 As RECT
Dim E3 As RECT
Dim Zähler As Long
 
  E1.Left = IIf(StartX < oldX, StartX, oldX)
  E1.Top = IIf(StartY < oldY, StartY, oldY)
  E1.Right = IIf(oldX > StartX, oldX, StartX)
  E1.Bottom = IIf(oldY > StartY, oldY, StartY)
 
  Me.Cls
 
  For Each C In Me
    If Not C.Name = "Timer1" Then
      E2.Left = C.Left
      E2.Top = C.Top
      E2.Right = C.Left + C.Width
      E2.Bottom = C.Top + C.Height
      IntersectRect E3, E1, E2
        If E3.Left > 0 Then
          Me.DrawWidth = 5
           Me.Line (E2.Left, E2.Top)-(E2.Right, E2.Bottom), vbRed, B
            Me.DrawWidth = 1
            ReDim Preserve Auswahl(Zähler)
           Auswahl(Zähler) = C.Name
          Zähler = Zähler + 1
        End If
    End If
  Next
 
  If Zähler > 0 Then
    ReDim Preserve Auswahl(Zähler - 1)
      For N = 0 To UBound(Auswahl)
        MsgBox Auswahl(N)
      Next
  End If
 
End Sub
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Rect zeichnen (wie bei Maus->Desktop)1.525sXene Software20.04.06 16:27
Re: Rect zeichnen (wie bei Maus->Desktop)953vbtricks20.04.06 18:39
Re: Rect zeichnen (wie bei Maus->Desktop)826sXene Software20.04.06 19:45
Re: Rect zeichnen (wie bei Maus->Desktop)855vbtricks20.04.06 19:54
Re: Rect zeichnen (wie bei Maus->Desktop)990wincnc21.04.06 01:15
Re: Rect zeichnen (wie bei Maus->Desktop)873sXene Software21.04.06 01:18

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel