vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 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

Visual-Basic Einsteiger
Re: Mehrere Controls (Labels, Linien, Checkbox ..) per Maus markieren und verschiebe 
Autor: Dirk
Datum: 26.05.09 16:34

Ich habe hier mal ein Beispiel, musst es dann noch anpassen. Du brauchst ein Form und auf dem Form 2 Labels (Label(0), Label(1)), das ist der Klasse CMultiSelect aber egal!

Leider flackern die Labels, vielleicht geht das ja noch zu verhindern ...

Code Form:
Option Explicit
 
Private m_MSelect As CMultiSelect
 
Private Sub Form_Load()
 
  Set m_MSelect = New CMultiSelect
  m_MSelect.Init Me, Label(0), Label(1)
 
End Sub
Klasse CMultiSelect:
Option Explicit
 
Private Const gc_GridSpace As Long = 40
 
Private WithEvents m_Form As Form
Private m_Controls As Collection
 
Private m_Enabled As Boolean
'Save start coordinates of selection rectangle
Private m_StartX As Single
Private m_StartY As Single
'Save last position to whipe out old previous rectangle
 
Private m_OldX As Single
Private m_OldY As Single
 
Private m_NowX As Single
Private m_NowY As Single
 
Private m_Visible As Boolean
Private m_Area As Long
 
'-- oder evtl Collection mit Controls übergeben
Public Function Init(ByRef rForm As Form, ParamArray parControls())
 
  Dim c
 
  m_Enabled = False
  m_Visible = False
 
  Set m_Form = rForm
 
  Set m_Controls = New Collection
 
  For Each c In parControls
 
    If TypeOf c Is Control Then
      m_Controls.Add c
    End If
 
  Next c
 
End Function
 
Private Sub m_Form_MouseDown(Button As Integer, Shift As Integer, X As Single, _
  Y As Single)
'
  m_StartX = X
  m_StartY = Y
  m_OldX = X
  m_OldY = Y
  m_Enabled = True
  UnselectControls
 
End Sub
 
Private Sub m_Form_MouseMove(Button As Integer, Shift As Integer, X As Single, _
  Y As Single)
'
  If m_Enabled Then
 
    m_NowX = X
    m_NowY = Y
 
    If (Abs(m_OldX - X) > gc_GridSpace) Or _
       (Abs(m_OldY - Y) > gc_GridSpace) Then
 
      m_Visible = True
      m_OldX = X
      m_OldY = Y
      m_Form.Refresh
 
    End If
  Else
    m_Visible = False
  End If
 
End Sub
 
Private Sub m_Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y _
  As Single)
'
  If m_Visible Then
    m_Visible = False
    SelectControls
    m_Form.Refresh
  End If
  m_Enabled = False
 
End Sub
 
Private Sub m_Form_Paint()
  If m_Enabled Then
    Draw
  End If
End Sub
 
Private Sub Draw()
 
  Dim dStyle As Long
 
  If m_Visible Then
    dStyle = m_Form.DrawStyle
    m_Form.DrawStyle = vbDash
    m_Form.Line (m_StartX, m_StartY)-(m_NowX, m_NowY), vbRed, B
    m_Form.DrawStyle = dStyle
  End If
 
End Sub
 
Private Sub SelectControls()
 
  Dim c As Control
 
  On Error Resume Next
 
  For Each c In m_Controls
 
    Select Case True
 
      Case TypeOf c Is Label
        Dim l As Label
 
        Set l = c
        If m_StartX < l.Left Then
          If m_NowX > l.Left + l.Width Then
            If m_StartY < l.Top Then
              If m_NowY > l.Top + l.Height Then
                l.BackColor = vbRed
              End If
            End If
 
          End If
        End If
 
      Case Else
 
    End Select
 
 
  Next c
 
End Sub
 
Private Sub UnselectControls()
 
  Dim c As Control
 
  On Error Resume Next
 
  For Each c In m_Controls
    c.BackColor = vbGrayed  'nur Beispiel
  Next c
 
 
End Sub

Gruß
Dirk

--
?Get it right the first time

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Mehrere Controls (Labels, Linien, Checkbox ..) per Maus mark...2.107jasmina26.05.09 11:56
Re: Mehrere Controls (Labels, Linien, Checkbox ..) per Maus ...722jasmina26.05.09 14:24
Re: Mehrere Controls (Labels, Linien, Checkbox ..) per Maus ...812Dirk26.05.09 16:34
Re: Mehrere Controls (Labels, Linien, Checkbox ..) per Maus ...683jasmina26.05.09 16:53

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