Einzelnen Beitrag anzeigen

MCXSC
(Gast)

n/a Beiträge
 
#3

Re: ListView Elemente Gruppieren: Terminierung der IDs?!

  Alt 2. Mär 2005, 21:57
Okay, dann werde ich nochmal etwas weiter ausholen:

Ich habe eine Liste mit Filmen (ich sitze auch an einer Filmverwaltung), diese will ich gruppieren

Ich habe dazu verschiedene Prozeduren und Arrays erstellt (Alphabet, Genre, Format, etc.).

In jeder Procedure steht folgendes (angepasst natürlich):

Delphi-Quellcode:
group.cbSize := sizeof(TLVGroup);
group.mask := LVGF_HEADER or LVGF_GROUPID;
group.pszHeader := pwidechar(widestring('Testgruppe'));
group.cchHeader := lstrlenW('Testgruppe');
group.iGroupId := 1;
ListView_InsertGroup(lv1.Handle,-1,group);

for i := 0 to lv1.Items.Count - 1 do begin
ZeroMemory(@lv60,sizeof(TLVItem60));
lv60.mask := LVIF_GROUPID;
lv60.iItem := i;
lv60.iGroupId := 1;
SendMessage(lv1.Handle,LVM_SETITEM,0,LPARAM(@lv60));
Das Wechseln der Gruppierung über die Proceduren funktioniert auch einwandfrei, solange bei "group.iGroupId := 1;" und "lv60.iGroupId := 1;" der rechte Wert so ist, dass alle IDs unterschiedlich sind (habe es z.B. gelöst indem ich eine Zahl hinzuaddiert habe, sodass die Ids eine Reihe ergeben (z.B.: "lv60.iGroupId := 1+20;")).

Sobald dies nicht der Fall ist (ich also den Code so belasse) und ich die Gruppierung wecheln will, gruppiert er zwar richtig, aber die Gruppennamen sind noch immer so, wie sie vorher waren (sogar mit den entsprechenden IDs).

Wenn ich jedoch das Programm neustarte und dann die Gruppe wähle funktioniert es. Es funktioniert nur immer dann nicht, wenn ich vorher bereits eine Gruppe ausgewählt hatte.

Nun will ich aber, dass automatisch die alten IDs gelöscht werden und die neuen geladen werden...

Hoffe jetzt ist es für dich verständlicher?!

MCXSC
  Mit Zitat antworten Zitat