» »

[C++ in Win32 API] Pomoč pri ListView kontrolniku

[C++ in Win32 API] Pomoč pri ListView kontrolniku

Srachko ::

Delam na enem programu in naletel sem na težavice pri kontrolniku imenovanem ListView. Moj problem pa je v tem, da mi ne uspe pridobiti željene predstavitve podatkov v tem kontrolniku. Problem tiči v sami kodi, ki je zadolžena za vstavljanje/prikaz podatkov v tem kontrolniku.

Imam podatkovno strukturo, ki hrani podatke o izdelku (naziv, id, nabavna cena, maloprodajna cena, zaloga ...). Te izdelke bi rad "predstavil" v ListView kontrolniku v stilu poročila (report). Kar se tiče resourcev za ta kontrolnik, je vse v redu in vse deluje lepo in prav.

Matra me le to, da v ta kontrolnik lako zbašem samo id izdelka, ki služi kot ključ za sortiranje. Poleg tega bi pa rad v tem kontrolniku prikazal še tudi ostale podatke o izdelku. Da poenostavim stvar. Zadeva naj bi izgledala približno tako, kot takrat ko v Windows Explorerju kliknete v neki mapi na prazno mesto in iz menija izberete View->Details (Pogled->Podrobnosti).

Uporabil sem Google in dobil veliko linkov, nekateri do zelo zanimivih člankov, vendar pa nisem našel nobenega, ki bi mi pomagal pri moji težavici. Ob nekaj skodelicah kave in dolgih urah brskanja po MSDN-ju tudi nisem našel ustrezne rešitve. Ugotovil sem, kako se da v ListView kontrolnik dodati "item" (tako piše v MSDN) in ena izmed možnih rešitev, bi naj bila ta, da ostale podatke dodajam kot "sub-item", vendar ne vem, če ga slučajno kje kiksam ali pa zadeva ne deluje na tem principu.

Zatorej, če ima kdo kaj izkušenj s to tematiko ali sorodno tematiko, bi prosil, če mi lahko poda kakšen link ali pa kakšen nasvet, košček programske kode ali kaj podobnega.

Za pomoč se že vnaprej zahvaljujem.
I can see clearly now, the brain has gone...

'FireSTORM' ::

Po malo sklepanja sem prišel do zaključka da uporabljaš C++ z MFC. Ali pač?
Koliko se še spomnim listView v MFC moraš dodat najprej item z addItem() funkcijo in kasneje še sub-items z addSubItem() funkcijo.
Na pamet res ne vem, MSDN pa se mi ne da it zdaj dekodirat da ga bom razumel ker je za moje pojme preveč zapleten in zakompleksan sistem.
Lahko pa pastaš delček kode kje in kako dodajaš elemente na seznam.

Zgornji dve funkciji sta lahko drugačni, ker je že nekaj časa minilo odkar sem se igračkal z tem v MFC.
Those penguins.... They sure aint normal....

Srachko ::

Delam brez MFC-ja, kar je tudi izvor mojih težav, vendar bi vseeno zadevo rad speljal z Win32 API, ki je malo zahtevnejši od MFC-ja, vendar pa MFC baje temelji na tem. :)

Našel sem nek članek o sorodni zadevi, ki ga poskušam dekodirati (pisan je v španskem jeziku, a koda pa je le v C++). Edino kar me moti pri tem članku pa je da so tudi vsi komentarji napisani v španščini tako da moram kar precej tuhtat, da pogruntam kaj se dela. Upam, da mi bo uspelo, saj je ta programček mogoče le korak do malo več $$$ v lajfu. :D
I can see clearly now, the brain has gone...

iztok04 ::

Sledeca funkcija doda ITEM v ListView1 tako, da v prvi stolpec doda "Property", v drugega pa "Value". Za morebitne nadaljnje stolpce postopas enako kot v drugem primeru (ITEM->SubItems->Add(Value2)).
Seveda moras prej na komponenti stolpce dodati. To naredis tako: desni klik->Column Editor->Add New.

void NekClass::ADDListViewItem(AnsiString Property, AnsiString Value)
{
TListItem *ITEM;
ITEM = ListView1->Items->Add();
ITEM->Caption = Property;
ITEM->SubItems->Add(Value);
}

Ce pa zelis za prikaz podatkov uporabiti pop-up menu, pa v ITEM->Data (ki je void pointer) dodas pointer na strukturo (v tvojem primeru na dolocen izdelek).

LP

Srachko ::

Problem sem uspel razrešiti. Ugotovil sem, da sem spet bil površen pri branju
MSDN-ja, saj sem preletel kar nekaj pomembnih odstavkov. Problem pa je tičal
v tem, da si nisem "omogočil" vstavljanja podelementov (subitems). Tičal pa
je v sledečih vrsticah.

Moje vrstice so bile take. S tem sem lahko v stolpec vstavil nek element samo
z besedilom, kar pa se ostalega tiče (formatiranje, širina stolpca,
podelementi, etc) pa je bilo ignorirano, saj sem imel nastavljene napačne
flag-e. Pred popravki je moja koda bila taka:

LV_COLUMN lv_col_Izdelki_Stolpec;
lv_col_Izdelki_Stolpec = LVCF_TEXT;

Ko sem pa to malce popravil, pa vse deluje tako kot je treba. Sedaj lahko z lahkoto vstaljam podelemente in jim po potrebi nastavim tudi željeno širino stolpca, poravnavo besedila, ...

LV_COLUMN lv_col_Izdelki_Stolpec;
lv_col_Izdelki_Stolpec = LVCF_TEXT | LVCF_FMT | LVCF_SUBITEM | LVCF_WIDTH;

Priznam, da bi si z uporabo MFC-ja lahko prihranil veliko živcev, truda in časa, vendar sem se odločil, da to speljem z Win32 API, saj mi tukaj manjkajo izkušnje. In na koncu koncev to tudi ni tako težko kot pa v začetku izgleda.
I can see clearly now, the brain has gone...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

C# WPF nalaganje info. iz XML dokumenta

Oddelek: Programiranje
61028 (848) MrStein
»

C# in DateTime

Oddelek: Programiranje
101352 (1172) FiDeK
»

[Visual C#] "Format" shranjevanja?

Oddelek: Programiranje
10969 (754) c0dehunter
»

Qt Designer -> KDevelop C++ Error

Oddelek: Programiranje
352121 (1651) 'FireSTORM'
»

C#, Dodajanje podatkov v Arraylist z Gumbom

Oddelek: Programiranje
82282 (2121) Beezgetz

Več podobnih tem