ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 10.01.2000

Diese Seite wurde zuletzt aktualisiert am 10.01.2000
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Zurück...


Anzeige

(-hg) mailto:hg_movelistitem@aboutvb.de

Das Verschieben eines Elements in einer ListBox oder einer ComboBox an eine andere Position ist nicht ganz trivial. Zum einen muss berücksichtigt werden, dass sich der Ziel-Index geändert hat, wenn das zu verschiebende Element vor oder (zufällig bereits) an der gewünschten Ziel-Position steht und zum Verschieben vorübergehend aus der Liste entfernt wird. Zum anderen sollte auch der Inhalt der ItemData-Eigenschaft für das Element beim Verschieben nicht verloren gehen. Außerdem sollte auch noch definierbar sein, auf welches Element nach dem Verschieben der ListIndex zeigt.

Die beiden Funktionen MoveListBoxItem und MoveComboBoxItem sorgen für ein korrektes Verschieben des im Parameter Index1 angegebenen Elements an die im Parameter Index2 angegebene Index-Position. Sind zufällig Index1 und Index2 gleich oder ist Index2 nur um 1 größer als Index1, geschieht nichts - es ist sinnlos, ein Element an die gleiche Position oder vor sich selbst schieben zu wollen. Um ein Element ans Ende der Liste zu schieben, übergeben Sie in Index2 den Wert -1.

Im optionalen Parameter SelectMode legen Sie fest, ob der ListIndex auf das Element, das sich nach dem Verschieben an der Ausgangsposition befindet oder auf das verschobene Element zeigen soll, oder ob der ListIndex gelöscht werden (= -1) oder unverändert bleiben soll.

Der Rückgabewert der Funktionen enthält die tatsächliche neue Position des verschobenen Elements.

Public Enum MoveSelectConstants
  mvSelectDefault
  mvSelectNone
  mvSelectInserted
  mvSelectStart
End Enum

Public Function MoveListBoxItem(ListBox As ListBox, _
 ByVal Index1 As Long, ByVal Index2 As Long, _
 Optional ByVal SelectMode As MoveSelectConstants = mvSelectInserted) _
 As Long

  Dim nItemData As Long
  Dim nItem As String
  
  If Index1 >= 0 Then
    With ListBox
      nItemData = .ItemData(Index1)
      nItem = .List(Index1)
      Select Case Index2
        Case -1
          .RemoveItem Index1
          .AddItem nItem
        Case 0 To .ListCount - 1
          Select Case Index1
            Case Index2, Index2 - 1
              Exit Function
            Case Is < Index2
              .RemoveItem Index1
              .AddItem nItem, Index2 - 1
            Case Is > Index2
              .RemoveItem Index1
              .AddItem nItem, Index2
          End Select
        Case Else
          MoveListBoxItem = -1
          Exit Function
      End Select
      .ItemData(.NewIndex) = nItemData
      Select Case SelectMode
        Case mvSelectNone
          .ListIndex = -1
        Case mvSelectInserted
          .ListIndex = .NewIndex
        Case mvSelectStart
          .ListIndex = Index1
      End Select
      MoveListBoxItem = .NewIndex
    End With
  End If
End Function

Public Function MoveComboBoxItem(ComboBox As ComboBox, _
 ByVal Index1 As Long, ByVal Index2 As Long, _
 Optional ByVal SelectMode As MoveSelectConstants = mvSelectInserted) _
 As Long

  Dim nItemData As Long
  Dim nItem As String
  
  If Index1 >= 0 Then
    With ComboBox
      nItemData = .ItemData(Index1)
      nItem = .List(Index1)
      Select Case Index2
        Case -1
          .RemoveItem Index1
          .AddItem nItem
        Case 0 To .ListCount - 1
          Select Case Index1
            Case Index2, Index2 - 1
              Exit Function
            Case Is < Index2
              .RemoveItem Index1
              .AddItem nItem, Index2 - 1
            Case Is > Index2
              .RemoveItem Index1
              .AddItem nItem, Index2
          End Select
        Case Else
          MoveComboBoxItem = -1
          Exit Function
      End Select
      .ItemData(.NewIndex) = nItemData
      Select Case SelectMode
        Case mvSelectNone
          .ListIndex = -1
        Case mvSelectInserted
          .ListIndex = .NewIndex
        Case mvSelectStart
          .ListIndex = Index1
      End Select
      MoveComboBoxItem = .NewIndex
    End With
  End If
End Function

Mit den Funktionen MoveListBoxItem und MoveComboBoxItem verschieben Sie problemlos ein Listen-Element an eine beliebige andere Position in der Liste


Modul modMoveListItem (modMoveListItem.bas - ca. 3,2 KB)






Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche



Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer