Problem z CheckListBox

dział ogólny

Problem z CheckListBox

Nowy postprzez mglinski » wtorek, 22 lipca 2008, 10:03

Witam,

Pracuję właśnie nad aplikacją, która wczytuje pliki CSV i wyświetla wykres.

Mam problem z obiektem CheckListBox.

Przed wczytaniem pliku obiekt jest wyświetlany prawidłowo - 3 checkboxy (screen1.jpg).

Po wczytaniu pliku CheckListBox wyświetla jakies dziwne rzeczy (screen2.jpg).

Będę wdzięczny za sugestię co może być tego powodem. Może w swojej praktyce trafiliście na taki właśnie problem.

pozdr,
Mariusz
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
mglinski
 
    NieznanyNieznana

Re: Problem z CheckListBox

Nowy postprzez Cyfrowy Baron » wtorek, 22 lipca 2008, 10:11

Przecież te obrazki nie są w stanie nic powiedzieć o Twoim problemie.
Nie wiadomo czemu służy obiekt CheckListBox, i co z nim nie tak.
Nie pokazałeś jak nimi sterujesz, jakie dane i jak do niego wczytujesz i dlaczego nie działa prawidłowo, co to są te dziwne rzeczy?!? :roll: :roll: :roll:
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4730
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Problem z CheckListBox

Nowy postprzez mglinski » wtorek, 22 lipca 2008, 10:21

No to jedziemy po kolei - myślałem, że spotkaliście się z czymś podobnym już wcześniej.

Przy pomocy przycisku Otworz otwieram plik CSV i wczytuje kolejno linia po linii do tablicy.

Ponizej fragment kodu:

void __fastcall TForm1::BitBtnOpenFileClick(TObject *Sender)
{
CheckListBox1->Checked[0]=TRUE;
CheckListBox1->Checked[1]=TRUE;
CheckListBox1->Checked[2]=TRUE;

ifstream infile;
OpenDialogMain = new TOpenDialog(this);
OpenDialogMain->Filter = "CSV files (*.csv)";
OpenDialogMain->Execute();

if (OpenDialogMain->FileName!="")
{
infile.open(OpenDialogMain->FileName.c_str());

//..........................................................// tutaj kod do wczytywania poszczegolnych wartosci z pliku CSV

infile.close();
}
else ShowMessage("Nie wskazano odpowiedniego pliku !!!");

OpenDialogMain->Free();

PageControl1->ActivePage = TabSheetChart; //przejście do zakładki z wykresem
}

Jedyne co zmienia się w CheckListBox w tym kodzie to checkowanie wszystkich pól.

Poszczególne pola służą sterowaniem, które wartości będą wyświetlane na wykresi: max, min czy mean.
Avatar użytkownika
mglinski
 
    NieznanyNieznana

Re: Problem z CheckListBox

Nowy postprzez Cyfrowy Baron » wtorek, 22 lipca 2008, 11:14

No to już wiem jak działa mechanizm wczytywania, ale wciąż nie wiem w czym tkwi problem, co jest nie tak z CheckListBox, bo na rysunkach to zupełnie nic nie widać.
Pytanie:
    Co jest nie w porządku z CheckListBox?
    Na czym polega problem?
    Co nie działa?
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4730
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Problem z CheckListBox

Nowy postprzez mglinski » wtorek, 22 lipca 2008, 11:36

Nie w porządku jest to, że po wczytaniu pliku CSV CheckListBox nie wyswietla 3 checkboxow tak jak to robi przed wczytaniem pliku. Zamiast tego wyswietlana jest dziwna grafika. Teraz zauważyłem, że ta "dziwna" grafika wyglada jak powiekszony "ptaszek" ;) Zalaczam ponownie screenshoty - tym razem po powiekszeniu. Mam nadzieję ze beda widoczne
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
mglinski
 
    NieznanyNieznana

Re: Problem z CheckListBox

Nowy postprzez Cyfrowy Baron » wtorek, 22 lipca 2008, 11:50

Najlepiej jakbyś dołączył w załączniku en program, by można to było zobaczyć (max. załącznika 1MB).
Jeżeli zdecydujesz się załączyć to pamiętaj, żeby skompilować program razem z bibliotekami, w przeciwnym razie nie uruchomi się.
Jeżeli rozmiar załącznika przekracza 1MB wyślij mi go e-mailem, nie więcej niż 2 MB.

Wygląda mi to na jakiś błąd w przetwarzaniu grafiki. CheckListBox działa w oparciu o zdarzenie OwnerDraw więc możliwe że występuje tutaj problem odświeżania.
Sugerowałbym odświeżyć kontrolkę na której znajduje się CheckListBox lub sam komponent zawsze gdy następuje wczytanie pliku:
   CheckListBox1->Repaint();
   CheckListBox1->Invalidate();
   CheckListBox1->Refresh(); <- to akurat mało prawdopodobne.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4730
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Problem z CheckListBox

Nowy postprzez mglinski » wtorek, 22 lipca 2008, 12:43

Zmieniłem CheckListBox na 3 CheckBoxy i działa normalnie.

Dzięki za sugestie ale:

CheckListBox1->Repaint();
CheckListBox1->Invalidate();
CheckListBox1->Refresh();

nie zadziałały.

pozdrawiam,
Mariusz
Avatar użytkownika
mglinski
 
    NieznanyNieznana


  • 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 4 gości

cron