Skocz do zawartości

Kolumny w ListView


Nemo

Recommended Posts

Chyba źle przeczytałem lekcje lub źle ją zrozumiałem bo nie umię wstawić tekstu do innej kolumny niż pierwszej.

Ja robie tak:

  LVITEM lvi;

        lvi.mask = LVIF_TEXT;
        lvi.iItem = index;
        lvi.iSubItem = column;
        lvi.pszText  = text;
        lvi.cchTextMax = strlen(text);
        ListView_InsertItem(hListView, &lvi);

Jeśli dobrze myśle to iSubItem to numer kolumny do której ma wstawić text a iItem to numer wiersza.

Ale pewnie coś źle robie więc jak by ktoś mógł napisać w czym popełniłem błąd to byłoby super ;)

Link do komentarza
Udostępnij na innych stronach

Dobrze masz wszystko. Nie potrzeba tak robic jak mowi Twardy. Tylko musisz pamietac o zwiekszaniu column jak chcerz do innej kolumny. A mozliwe ze blad popelniles w momencie kiedy dodawals kolumny.

LV_COLUMN Column;
Column.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
Column.fmt = LVCFMT_LEFT;
Column.cx = 101;
Column.pszText = "Kolumna zerowa";
Column.iSubItem = 0; //ten numer to wlasnie numer kolumny ktory ja identyfukuje. Ten numer wpisujesz do iSubItem przy dodawaniu.

LV_COLUMN Column;
Column.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
Column.fmt = LVCFMT_LEFT;
Column.cx = 101;
Column.pszText = "Kolumna pierwsza";
Column.iSubItem = 1;

Link do komentarza
Udostępnij na innych stronach

Podpowiedz Twardego działa, a niestety mimo ze odp Niconaa jest sesnowna to nie działa :| albo znowu coś chrzanie

Ale coś dalej nie gra - jak dodoaje pola to mi je sortuje malejąco, a mam tylko te znaczniki przy tworzenu ListView:

LVS_AUTOARRANGE|LVS_REPORT|LVS_EX_FULLROWSELECT|LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_GROUP
Link do komentarza
Udostępnij na innych stronach

Co do tego pierwszego to wprowadziłem Cię w błąd. Faktycznie nie używa się InsertItem, a ListView_SetItem(HWND hwnd, const LPLVITEM pitem); Tak masz trochę wygodniej, bo nie podajesz do makra odrazu danych, a definiujesz sonie poprostu LVITEM. A co do drugiego to może usuń ten LVS_AUTOARRANGE, bo jak sama nazwa wskazuje to sortuje ci ListView. A jak koniecznie chcesz sortowanie to możesz to ładanie zrobić po kliknięciu na sortheader.

Link do komentarza
Udostępnij na innych stronach

W pierwszej podpowiedzi Nicona to chyba on nie kapnol sie o co ci dokladnie chodzi, bo podal strukture do doania nowej kolumny.
a ListView_SetItem sluzy do zmiany czesci lub calych atrybutow etykiety.
Nierozumie Nicona, czemu uwaza, zew to co napisalem to jest zle. Przecierz wlasnie to sluzy do tego czego szukasz. Jedno tylko makro i wszystko.
A madrze sie tak bo wlasnie robie program wykorzystujacy listview ze stylem LVS_REPORT.

Link do komentarza
Udostępnij na innych stronach

Rzeczywiscie w pierwszym poscie wprowadzilem go w blad. Ale drugi jest poprawny. Da sie tak zrobic, bo sam tak robie u siebie w programie. Nie mowie ze Twoja wypowiedz jest bledna. Jest jaknajbardziej poprawna, tylko wydaje mi sie, ze wygodnej jest przy wczytywaniu paru rzeczy na raz zdefiniowac poprostu strukture LVITEM, i wstawic ja do makra. A z tymi kolumnami to jaknajbardziej zrozumialem, tylko chcialem zwrocic uwage, ze jesli dodawal kolumny i pomylil te numerki ktore opisalem to nie bedzie mu dzialac wstawianie. Sorki Twardy jesli odebrales to jako krytyka ;), bo to wogole nie mialo tak zabrzmiec :) .

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...