CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - ListBox działanie na zaznaczonych elementach

ListBox działanie na zaznaczonych elementach

dział ogólny

ListBox działanie na zaznaczonych elementach

Nowy postprzez mirekpl6 » poniedziałek, 5 grudnia 2016, 15:39

Witam. Poniższy kod zaznacza wyszukiwany tekst w ListBoxie1(często jest to kilka elementów) (we właściwościach: MultiSelect ustawiony na true).
Do tego zaznacza elementy o tych samych indeksach w ListBoxie2. Zmienna ilosc zlicza ilość zaznaczonych elementów,a k określa ostatni zaznaczony element. Listbox2 zawiera liczby.
Poniższy kod działa prawidłowo.

KOD cpp:     UKRYJ  
 
for(int i=0;i<ListBox1->Items->Count;++i)
 {
ListBox1->Selected[i]=ListBox1->Items->Strings[i]==tekstwysz;

 if(ListBox1->Items->Strings[i]==tekstwysz)
 {
 ilosc++;
 k=i;
 }

ListBox1->Selected[i]=ListBox2->Selected[i];
 }
 



Problem w tym,że nie wiem jak do tego dorobić (lub jako osobny kod) instrukcje,które sprawią,że w ListBoxie3 pojawią się wpisy(kolejno),które będą zawierać wynik: zaznaczony element w ListBox2,od którego zostanie odjęty poprzedni zaznaczonych element,aż wykona się to dla wszystkich zaznaczonych elementów w ListBox2.
Kod nie będzie działał,gdy zaznaczony jest tylko 1 element w Listbox2(to wiem jak zrobić: wykorzystać zmienna ilosc)
Avatar użytkownika
mirekpl6
Bladawiec
Bladawiec
 
Posty: 15
Dołączył(a): piątek, 11 listopada 2016, 13:53
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Windows 8 Pro 64bit
Kompilator: C++Builder 10.1 Berlin
Gadu Gadu: 0
    Windows 7Chrome

Re: ListBox działanie na zaznaczonych elementach

Nowy postprzez polymorphism » poniedziałek, 5 grudnia 2016, 19:31

KOD cpp:     UKRYJ  
int prev = -1;

for (int i = 0; i < ListBox2->Items->Count; ++i)
{
        if( !ListBox2->Selected[i] ) continue;

        if(prev != -1)
        {
                /*
                        i - indeks zaznaczonego
                        prev - indeks poprzedniego zaznaczonego
                       
                        tu dodajesz do ListBox3 nową pozycję, czy co tam...
                */
     
        }

        prev = i;
}

O to chodzi?
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
mirekpl6
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox

Re: ListBox działanie na zaznaczonych elementach

Nowy postprzez mirekpl6 » wtorek, 6 grudnia 2016, 21:21

@polymorphism Dzięki o to chodziło.
Avatar użytkownika
mirekpl6
Bladawiec
Bladawiec
 
Posty: 15
Dołączył(a): piątek, 11 listopada 2016, 13:53
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Windows 8 Pro 64bit
Kompilator: C++Builder 10.1 Berlin
Gadu Gadu: 0
    Windows 7Chrome

Re: ListBox działanie na zaznaczonych elementach

Nowy postprzez mirekpl6 » poniedziałek, 12 grudnia 2016, 23:17

Doszedłem do wniosku,że wystarczyłoby, żeby działania wykonywałyby się na max. 11 ostatnich zaznaczonych elementach w ListBox2
Mam zmienną ilosc,która przechowuje ilość zaznaczonych elementów,z której można, ale nie trzeba korzystać.

Jak przerobić kod od @polymorphism(podany 2 posty wyżej)? Jak to zrobić?
Avatar użytkownika
mirekpl6
Bladawiec
Bladawiec
 
Posty: 15
Dołączył(a): piątek, 11 listopada 2016, 13:53
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Windows 8 Pro 64bit
Kompilator: C++Builder 10.1 Berlin
Gadu Gadu: 0
    Windows 7Chrome

Re: ListBox działanie na zaznaczonych elementach

Nowy postprzez Cyfrowy Baron » wtorek, 13 grudnia 2016, 17:03

Chyba chodzi ci o to:

KOD cpp:     UKRYJ  
int start = ListBox2->Items->Count - 11;
for (int i = start; i < ListBox2->Items->Count; ++i)
{
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows 7Firefox

Re: ListBox działanie na zaznaczonych elementach

Nowy postprzez mirekpl6 » wtorek, 13 grudnia 2016, 17:45

Dzięki, ale nie o to chodziło. Mam ListBox2 w którym tylko niektóre elementy są zaznaczone(które są zaznaczone zależy od wyszukiwanego tekstu).
Chodzi o to, żeby wykonać działania na max. 11 ostatnich zaznaczonych elementach, a nie 11 ostatnich(co @Cyfrowy Baronie Twój kod robi). Podkreśliłem max bo może być ich mniej lub więcej.
Avatar użytkownika
mirekpl6
Bladawiec
Bladawiec
 
Posty: 15
Dołączył(a): piątek, 11 listopada 2016, 13:53
Podziękował : 4
Otrzymał podziękowań: 0
System operacyjny: Windows 8 Pro 64bit
Kompilator: C++Builder 10.1 Berlin
Gadu Gadu: 0
    Windows 7Chrome

Re: ListBox działanie na zaznaczonych elementach

Nowy postprzez Cyfrowy Baron » wtorek, 13 grudnia 2016, 18:29

Musisz więc najpierw do jakiejś tymczasowej listy zapisać wszystkie zaznaczone elementy, a potem wykonać operację licząc tą listę od końca do początku.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows 7Firefox

Re: ListBox działanie na zaznaczonych elementach

Nowy postprzez polymorphism » środa, 14 grudnia 2016, 11:10

Ewentualnie przeszukaj ListBoxa od końca i po znalezieniu 11 zaznaczonych elementów zastosuj algorytm, który podałem wcześniej (startując z pozycji ostatniego znalezionego).
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows 7Firefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 9 gości