Lehet hogy van ilyen csak én nem találtam.
Ugy akarok feltölteni egy listviewet hogy ne legyenek benne duplikátumok.
Ha már van akkor ne tegye bele
win32-n erre van "LVM_FINDITEM" üzenet
Vagy tényleg végig kell olvasni az egész listviewet, minden elem beszúrása előtt?
- 998 megtekintés
Hozzászólások
Szia,
Nem értek a GTK+-hoz, de szerintem ha nem rendezett a listview, akkor az ha van "LVM_FINDITEM" a GTK+-ban (vagy bármi más), annak is végig kell olvasni a listát. Ez máshogy nem megy. :-(
Én mindig készítek egy konténer osztályt (List, Tree, Map) a ComboBox, ListView, stb... GUI elemek mögé, és az végzi a hozzáadást, módosítást, törlést és a képernyő frissítését. Abban gyorsan tudsz keresni. Ez olyan mint a Model View Controller szemlélet a Qt-ban vagy a Java alatt a SWING, vagy a SWT (Eclipse) ablakkezelőkben/keretrendszerekben.
Perger Attila
- A hozzászóláshoz be kell jelentkezni
Miért a FIND nem megy rajta végig (amíg nem talál) ? :)
- A hozzászóláshoz be kell jelentkezni
ok, de biztos végigmegy,
csak az a kényelmetlen hogy gtk-ban ehhez az egész ciklust meg kell irni
win32-ben meg csak 1 hivás ami TRUE v. FALSE és kész.
- A hozzászóláshoz be kell jelentkezni
Köszönöm a javaslatokat , végülis igy megoldottam:
// check if already present
res=gtk_tree_model_get_iter_first(model,&iter); // check whole listview
gtk_tree_model_get (model, &iter, FILENAME, &text, -1);
if(strcmp(filename,text)!=0) {
while (res==TRUE) {
gtk_tree_model_get (model, &iter, FILENAME, &text, -1);
if(strcmp(filename,text)==0) break;
res=gtk_tree_model_iter_next(model,&iter);
}
if (res==FALSE) {
gtk_list_store_append (store, &iter);
gtk_list_store_set (store, &iter, ICON, pixbuf, FILENAME, filename,SIZE, buf2, MODIFIED, buf3, -1);
}
}
- A hozzászóláshoz be kell jelentkezni