Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Flytta rad i listbox

Postades av 2001-05-07 16:04:00 - Peter Bladh, i forum visual basic - allmänt, Tråden har 4 Kommentarer och lästs av 543 personer

Hej
Någon som har något tips på hur man kan flytta en rad i en listbox. Alltså antag att det finns två rader, på den översta står det rad1 och på den understa rad2. Jag vill att användaren skall kunna drag&drop'a rad1 så att den kommer under rad2. Det hade varit super om ItemData't hängde med oxå!

Det skall även fungera att "klämma in en rad emellan"


Svara

Sv: Flytta rad i listbox

Postades av 2001-05-08 16:14:00 - Lars Karlsson

Du kan lägga ett par knapper på sidan om ListView. Markera en rad i listan och klicka på en av knapperna för att flytta upp resp. ned.
ItemData flyttas också.

cmdNed_Click
Dim readitemindex As Integer
Dim readitem As String
Dim readitemData As Integer
If List2.ListIndex = -1 Then Exit Sub 'inget är valt i listan
If List2.ListCount > 1 Then 'Det finns fler än två rader i listan
'Kolla om man redan står på sista raden
If Not List2.ListIndex + 1 = List2.ListCount Then
'Spara texten, indexet och ItemData
readitem = List2.List(List2.ListIndex)
readitemindex = List2.ListIndex
readitemData = List2.ItemData(List2.ListIndex)
'ta bort raden
List2.RemoveItem (List2.ListIndex)
'den nedanför åker upp och jag lägger dit min nya
List2.AddItem readitem, readitemindex + 1
'tala om att nytt index ska gälla
List2.ListIndex = readitemindex + 1
List2.ItemData(List2.NewIndex) = readitemData
End If
End If
End Sub


cmdUpp_Click
Dim readitemindex As Integer
Dim readitem As String
Dim readitemData As Integer
If List2.ListIndex = -1 Then Exit Sub 'inget är valt i listan
If Not List2.ListIndex = 0 'Man står redan längst upp
'Spara texten, indexet och ItemData
readitem = List2.List(List2.ListIndex)
readitemindex = List2.ListIndex
readitemData = List2.ItemData(List2.ListIndex)
'ta bort raden
List2.RemoveItem (List2.ListIndex)
'den nedanför åker upp och jag lägger dit min nya
List2.AddItem readitem, readitemindex - 1
'tala om att nytt index ska gälla
List2.ListIndex = readitemindex - 1
List2.ItemData(List2.NewIndex) = readitemData
End If
End If
End Sub


Du kan säkert snygga till det så att även multiselect och dra och släpp fungerar. Den här koden fungerar bara om listan har egenskapen multiselect = 0

Du kan säkert baka ihop bägge delarna till en procedur och skicka med upp resp ned som parametrar.


/Lasse


Svara

Sv: Flytta rad i listbox

Postades av 2001-05-08 18:23:00 - Peter Bladh

Tack skall du ha!

Men det hade nog ändå varit smidigare om man kunde darg & drop'a. Någon som har koll på detta?


Svara

Sv: Flytta rad i listbox

Postades av 2001-05-08 20:52:00 - Andreas Hillqvist

'Modul: Module1 -------------------
Option Explicit

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Long) As Long

Private Const LB_GETITEMHEIGHT = &H1A1

Public Function ListRowCalc(lstTemp As ListBox, ByVal Y As Single) As Integer
Dim ItemHeight As Integer
'Determines the height of each item in ListBox control in pixels
ItemHeight = SendMessage(lstTemp.hWnd, LB_GETITEMHEIGHT, 0&, 0&)
ListRowCalc = Min(((Y / Screen.TwipsPerPixelY) \ ItemHeight) + lstTemp.TopIndex, lstTemp.ListCount - 1)
End Function

Function Min(X As Integer, Y As Integer) As Integer
If X > Y Then Min = Y Else Min = X
End Function

Sub ListRowMove(lstTemp As ListBox, ByVal OldRow As Integer, ByVal NewRow As Integer)
Dim List As String
Dim ItemData As Long
Dim i As Integer
If OldRow <> NewRow Then
List = lstTemp.List(OldRow)
ItemData = lstTemp.ItemData(OldRow)
If OldRow > NewRow Then
For i = OldRow To NewRow + 1 Step -1
lstTemp.List(i) = lstTemp.List(i - 1)
lstTemp.ItemData(i) = lstTemp.ItemData(i - 1)
Next i
Else
For i = OldRow To NewRow - 1
lstTemp.List(i) = lstTemp.List(i + 1)
lstTemp.ItemData(i) = lstTemp.ItemData(i + 1)
Next i
End If
lstTemp.List(NewRow) = List
lstTemp.ItemData(NewRow) = ItemData
End If
End Sub


'Form: Form1 -------------------

Option Explicit

Private DragIndex As Integer

Private Sub Form_Load()
List1.Clear
List1.AddItem "Adam"
List1.AddItem "Bob"
List1.AddItem "Charles"
List1.AddItem "David"
List1.AddItem "Eric"
List1.AddItem "Frank"
List1.AddItem "George"
End Sub

Private Sub List1_DragDrop(Source As Control, X As Single, Y As Single)
ListRowMove Source, DragIndex, ListRowCalc(Source, Y)
End Sub

Private Sub List1_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
If Button = vbRightButton Then
DragIndex = ListRowCalc(List1, Y)
List1.Drag
End If
End Sub


Laggt till ItemData, annars skiljer sig den inte mycket från orginal artikeln på :

http://support.microsoft.com/support/kb/articles/q167/7/46.asp


Svara

Sv: Flytta rad i listbox

Postades av 2001-05-09 12:54:00 - Peter Bladh

Tackar!


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 619
27 953
271 709
571
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies