Marcin Ziemian
2006-03-24 07:37:53 UTC
Witam.
Googlałem, googlałem i nic nie wygooglałem sensownego :/
Mam stworzony na formularzu Accessowym (mdb) listbox z opcją extended
multiselect. Do tego mam niezwiązane pole tekstowe i 2 przyciski, które mają
za zadanie wstawiać i usuwać pozycje z listy.
Wstawianie - no problem, bo wstawiam pojedynczo wartość pola tekstowego.
Natomiast chciałbym umożliwić użytkownikom możliwość usuwania grupowo
zaznaczonych w listbox-ie pozycji.
Problem tkwi w tym, że przy usunięciu jakiejś pozycji zmienia się indeksacja
pozycji, które były zaznaczone, a zaznaczenie zostaje wyzerowane (w sumie
jest to dość logiczne, choć denerwujące z punktu widzenia usuwania
pozycji ;)).
W pocie czoła wysmażyłem coś takiego:
Private Sub Polecenie56_Click()
ilosc = Me.Lista51.ItemsSelected.Count
If ilosc > 1 Then
indeksy = ""
For Each varItm In Me.Lista51.ItemsSelected
indeksy = indeksy & " " & CStr(varItm)
Next varItm
indeksy = Split(Trim(indeksy), " ", , vbTextCompare)
For i = 0 To ilosc - 1
Me.Lista51.RemoveItem CInt(indeksy(i))
'Korekcja indeksow w zwiazku ze zmiana liczby elementow
'listbox-a
For j = i + 1 To ilosc - 1
indeksy(j) = CStr(CInt(indeksy(j)) - 1)
Next j
Next i
Else
Me.Lista51.RemoveItem Me.Lista51.ItemsSelected
End If
End Sub
Jest to dość chyba zakręcone i nie wiem, czy na dłuższą metę będzie się
sprawdzać, więc moje pytanie brzmi: czy można prościej i skuteczniej?
Z góry dzięki za wszelkie odpowiedzi
Pozdro
Googlałem, googlałem i nic nie wygooglałem sensownego :/
Mam stworzony na formularzu Accessowym (mdb) listbox z opcją extended
multiselect. Do tego mam niezwiązane pole tekstowe i 2 przyciski, które mają
za zadanie wstawiać i usuwać pozycje z listy.
Wstawianie - no problem, bo wstawiam pojedynczo wartość pola tekstowego.
Natomiast chciałbym umożliwić użytkownikom możliwość usuwania grupowo
zaznaczonych w listbox-ie pozycji.
Problem tkwi w tym, że przy usunięciu jakiejś pozycji zmienia się indeksacja
pozycji, które były zaznaczone, a zaznaczenie zostaje wyzerowane (w sumie
jest to dość logiczne, choć denerwujące z punktu widzenia usuwania
pozycji ;)).
W pocie czoła wysmażyłem coś takiego:
Private Sub Polecenie56_Click()
ilosc = Me.Lista51.ItemsSelected.Count
If ilosc > 1 Then
indeksy = ""
For Each varItm In Me.Lista51.ItemsSelected
indeksy = indeksy & " " & CStr(varItm)
Next varItm
indeksy = Split(Trim(indeksy), " ", , vbTextCompare)
For i = 0 To ilosc - 1
Me.Lista51.RemoveItem CInt(indeksy(i))
'Korekcja indeksow w zwiazku ze zmiana liczby elementow
'listbox-a
For j = i + 1 To ilosc - 1
indeksy(j) = CStr(CInt(indeksy(j)) - 1)
Next j
Next i
Else
Me.Lista51.RemoveItem Me.Lista51.ItemsSelected
End If
End Sub
Jest to dość chyba zakręcone i nie wiem, czy na dłuższą metę będzie się
sprawdzać, więc moje pytanie brzmi: czy można prościej i skuteczniej?
Z góry dzięki za wszelkie odpowiedzi
Pozdro
--
M.Z.
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
M.Z.
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/