[jak] aktualizacja elementów Combo Box'ów?

Tematy związane z tworzeniem dużych aplikacji. Zaganiednia dotyczące architektury oraz zasad tworzenia optymalnych rozwiązań.
Awatar użytkownika
ky3orr
Posty: 149
Rejestracja: 10 gru 2006 00:00
Wersja środowiska: LabVIEW 8.6
Lokalizacja: Siechnice
Kontakt:

[jak] aktualizacja elementów Combo Box'ów?

Post autor: ky3orr »

Witam!

pisząc program pomiarowy doszedłem do momentu, w którym muszę wymyślec jak poradzic sobie z combo boxami.
Mianowicie mam tor pomiarowy, w którym elementy łączone są za pomocą kabli transmisyjnych. Jest ich sporo i dla tego mają swoje nazwy, określoną długośc i zmierzone opóźnienie dla transmitowanych sygnałów.
Chcę te dane wrzucic w bazę, a w programie umozliwic wybieranie kabli przy pomocy combo boxów.

Problem pojawia się gdy chcę, aby aplikacja zachowywała się tak by wybranie kabla w jednym z combosów powodowało jego usuinięcie z wariantów wyboru w innych combosach, aby nie wybra dwa i więcej razy tego samego kabla.
Nie mam pojęcia jak się zabrac za temat - mam przeczucie, że należy robi aktualizację wariantów combosów korzystając z eventów i value changed.
Dodatkowo, gdy wybiorę specjalny kabel o nazwie "niepodłaczony" to kabel który dotąd był zajęty staje się wszędzie indziej dostępny.

przy okazji mam pytanie dodatkowe: czy combosy mogą zwraca więcej danych niż indeks wybranego wariantu? chciałbym mie możliwośc uzyskania np. ID kabla, wyciągniętego z bazy, adekwatne do dokonanego wyboru. Próbowałem czegoś podobnego zapisując do combo Strings and Values gdzie w Strings były nazwy, a w Values ID. niestety wystąpił jakiś problem z sortowaniem elementów na liście.

jeśli macie jakieś pomysłuy na przytoczony problem z satysfakcją przeczytam o tym.

pozdrawiam
Ostatnio zmieniony 14 lip 2008 19:04 przez ky3orr, łącznie zmieniany 1 raz.
KY3ORR

Okablowanie audio / RF -> www.CabLAB.eu
Awatar użytkownika
bartus
Posty: 141
Rejestracja: 07 maja 2007 00:00
Wersja środowiska: LabVIEW 2009
Lokalizacja: Wrocław/Żory

[jak] aktualizacja elementów Combo Box'ów?

Post autor: bartus »

probowales wybrany element dodawac jako disabled items ? property node -> disabled items moze to zahula?
Jest pare rzeczy dla których warto zyc - TO,UE i nie zmienia sie nic :)
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: [jak] aktualizacja elementów Combo Box'ów?

Post autor: jogurt_owocowy »

property node -> disabled items moze to zahula?
Nie zahula z prostego powodu w Combo Boksie nie ma możliwości dezaktywowania elementów.
czy combosy mogą zwraca więcej danych niż indeks wybranego wariantu?
Używasz kontrolki Combo Box czy Ring? To jest różnica.
mam przeczucie, że należy robi aktualizację wariantów combosów korzystając z eventów i value changed
Dobre przeczucie.
Wewnątrz eventu sprawdzasz czy wybrano "niepodłączony" (1) czy inny (2). Teraz w pętli przelatujesz przez tablicę referencji wszystkich Combo Boxów i dla każdej kontrolki poza tą, która odpaliła event: (1) dodajesz do listy zwolniony element (OldVal) (2) modyfikujesz listę elementów (usuwając, dezaktywując wybrany element)
Jeśli taki opis jest za mało jasny, to pisz.
niestety wystąpił jakiś problem z sortowaniem elementów na liście
Niestety trochę za mało treściwy opis błędu.
Awatar użytkownika
ky3orr
Posty: 149
Rejestracja: 10 gru 2006 00:00
Wersja środowiska: LabVIEW 8.6
Lokalizacja: Siechnice
Kontakt:

Re: [jak] aktualizacja elementów Combo Box'ów?

Post autor: ky3orr »

Witam wszystkich!
Po ostatnim poscie jogurta_owocowego wzialem do siebie uwagi Kolegi i po ciezkich probach trwajacych 3 dni udalo mi sie w 100% wykonac postawione na poczatku watku zadanie.
Bloczek dziala na dowolnej liczbie comboboxow, ktorych tabele referencji podaje jako jedna z danych wejsciowych. Obsluga combosow odbywa sie w petli event gdzie wykrywane jest zdarzenie value changed kazdego z combosow w ramach jednego eventa. Do bloczka podawane sa dodatkowo wartosci OldVal i NewVal, oraz referencja comboboxa wywolujacego zdarzenie.
Nastepnie iteracyjnie (poza combosem, ktory wywolal zdarzenie) modyfikowana jest tablica Strings and Values i na koncu calosc jest sortowana zeby lista jakos schludnie wygladala.
Przykladowo zalozylem, ze element o wartosci 99 jest neutralny i moze sie powtarzac natomiast kazdy inny ma prawo pojawic sie, jako wybrany, tylko raz.
Wymogiem koniecznym do zaskoczenia softu jest zainicjowanie wszystkich combosow, by nie pojawialy sie w nich powtarzajace sie elementy wybrane (nie dotyczy to elementu o wartosci neutralnej).
Zainteresowanych zapraszam do wyprobowania zalaczonego przykladu i podzielenia sie swoimi spostrzezeniami.
Jeszcze raz dzieki wszystkim za pomoc i zmuszenie do nauki :)
Ostatnio zmieniony 25 lip 2008 05:48 przez ky3orr, łącznie zmieniany 1 raz.
KY3ORR

Okablowanie audio / RF -> www.CabLAB.eu
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: [jak] aktualizacja elementów Combo Box'ów?

Post autor: jogurt_owocowy »

Dołącz jeszcze brakujący subvi wyszukanie_indeksu_wiersza.vi.
Awatar użytkownika
ky3orr
Posty: 149
Rejestracja: 10 gru 2006 00:00
Wersja środowiska: LabVIEW 8.6
Lokalizacja: Siechnice
Kontakt:

[jak] aktualizacja elementów Combo Box'ów?

Post autor: ky3orr »

juz poprawiłem zawartość archiwum. zapraszam do testów :)

czy ktoś przetestował? jakieś komentarze?
Ostatnio zmieniony 28 lip 2008 13:04 przez ky3orr, łącznie zmieniany 1 raz.
KY3ORR

Okablowanie audio / RF -> www.CabLAB.eu
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: [jak] aktualizacja elementów Combo Box'ów?

Post autor: jogurt_owocowy »

Jak dla mnie jest git.
Dlaczego używasz User Event do inicjalizacji Combo Boxów?
Awatar użytkownika
ky3orr
Posty: 149
Rejestracja: 10 gru 2006 00:00
Wersja środowiska: LabVIEW 8.6
Lokalizacja: Siechnice
Kontakt:

[jak] aktualizacja elementów Combo Box'ów?

Post autor: ky3orr »

kod jest wycinkiem większej aplikacji. muszę inicjalizować comboboxy zanim będę na nich pracować, a dane zaciągane do combosów (opisy i wartości) pochodzą z bazy danych której obsługa jest dostępna tylko w pętli while okalającej strukturę event. stąd wywołuję w drugiej pętli (obsługującej program) eventa ładującego dane do combosów.
KY3ORR

Okablowanie audio / RF -> www.CabLAB.eu
luke76a
Posty: 12
Rejestracja: 26 sty 2009 01:56
Kontakt:

Re: [jak] aktualizacja elementów Combo Box'ów?

Post autor: luke76a »

Witam,
Oprócz aktualizacji combo box podczas programu chciałbym zachować zmiany i móc je po ponownym uruchomieniu programu wczytać. Nie mogę sobie z tym poradzić. Próbuję w ten sosób: property node (Strings[])->wrzucić do tablicy i zapisać.
Awatar użytkownika
Cuspy1
Posty: 39
Rejestracja: 12 cze 2009 09:31
Lokalizacja: Warszawa
Kontakt:

[jak] aktualizacja elementów Combo Box'ów?

Post autor: Cuspy1 »

Witam,

Luke76a napisz co rozumiesz poprzez wrzucenie do tablicy i zapis.
Osobiście zapisuję takie rzeczy do pliku, lub jeśli program na to pozwala, do bazy danych.
Załącz do postu VI, na którym pracujesz to postaram się pomóc.

Pozdrawiam
luke76a
Posty: 12
Rejestracja: 26 sty 2009 01:56
Kontakt:

Re: [jak] aktualizacja elementów Combo Box'ów?

Post autor: luke76a »

Witam,
Dziękuję Cuspy1 za zainteresowanie i chęć pomocy. Tak jak widać na obrazku chcę zapisać tablicę stringów poprzez "Write To Spreadsheet File", jednak wyskakuje błąd połączenia.
Awatar użytkownika
coolfon
Posty: 232
Rejestracja: 01 gru 2007 08:59
Wersja środowiska: LabVIEW 2009
Kontakt:

Re: [jak] aktualizacja elementów Combo Box'ów?

Post autor: coolfon »

Gdzie Ci ten błąd wyskakuje? Co sygnalizuje LabVIEW? Najedź na to połączenie i zobacz co masz w pomocy kontekstowej.

Twój bloczek ciut inaczej wygląda (która wersja LV?), ale może też ma dwa wejścia: 2D data i 1D data. Na pewno dobrze podpinasz? Jeśli nie zależy Ci na możliwości edycji danych w pliku (np przez notatnik) to równie dobrze możesz zapisać te dane jako Binary File.

U mnie żadnego błędu z Write To Spreadsheet File nie ma.
luke76a
Posty: 12
Rejestracja: 26 sty 2009 01:56
Kontakt:

Re: [jak] aktualizacja elementów Combo Box'ów?

Post autor: luke76a »

Właśnie sprawdziłem w wersji 8.6, że z podpięciem nie ma problemu (podpinam do 1D) W wersji 7.1 (w tej muszę napisać program) jest błąd, że podpinam dwie zmienne innego typu.
Awatar użytkownika
Cuspy1
Posty: 39
Rejestracja: 12 cze 2009 09:31
Lokalizacja: Warszawa
Kontakt:

[jak] aktualizacja elementów Combo Box'ów?

Post autor: Cuspy1 »

Witam,

W wersji LV 8.6 write to spreadsheet file jest VI polimorficznym ustawionym na auto wykrywanie.
Nie pamiętam jak to było w wersji 7.1 ale być może musisz ręcznie zmienić typ danych na STR. W tym celu kliknij na VI prawym klawiszem myszy i poszukaj w menu czegoś w stylu "select type".
Daj znać czy się udało.

Pozdrawiam
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: [jak] aktualizacja elementów Combo Box'ów?

Post autor: jogurt_owocowy »

Niestety nie uda się - w 7.1 funkcja Write To Spreadsheet File nie umie zapisywać tablic stringów (porównanie ver. 7.1 vs. ver. 8.2), ale można sobie łatwo poradzić samemu.
Sposób na obrazku.
Pozdrawiam
ODPOWIEDZ