Falsche Rückgabe TListView bei Anzahl Spalten SubItems...
-
Hallo
ein TListView (frm17_lvTabelle) hat 5 Columns (1 Caption, 4 SubItems). Diese lege ich (wie immer) direkt im IDE über Columns an. Dann zeichne ich die TListView mit OwnerDraw selbst. Im Quellcode hole ich mit iAnz= die Anzahl der Subspalten. Was bis jetzt immer funktioniert hat, bringt jetzt immer die Zahl 6; egal ob ich im IDE bei Columns Spalten lösche oder hinzufüge. Habe den Quellcode schon komplett aus dem Projekt entfernt und neu hinzugefügt, die obj. vom Form17 gelöscht usw. Alles ohne Erfolg. Kennt jemand dieses Phänomen?

void __fastcall TForm17::frm17_lvTabelleDrawItem(TCustomListView *Sender, TListItem *Item, TRect &ARect, TOwnerDrawState State) {try { // Fehlerroutine Start Integer iSymb,iAnz,iB,iStil,iItem,iTage; AnsiString z1,z2; // Vars definieren TColor f1,f2; TCanvas *ACanvas; // Vars definieren TRect CRect; // Rect Strukt vorbereiten Graphics::TBitmap *bmp; // Bitmap vorbereiten TListView *LView= dynamic_cast<TListView *> (Sender); // Versuchen, Sender als TListView anzusprechen z1 =" "+Item->Caption; // aktuelle Spalte iAnz =Item->SubItems->Count; // Anzahl Subspalten iItem =Item->Index; // Index ermitteln ACanvas=LView->Canvas; // Canvas übergeben f1 =clWhite; // Voreinstellung HG in ws f2 =clMaroon; // Textfarbe iStil =DT_LEFT; // Ausrichtung Form17->Caption="Anzahl Columns: "+IntToStr(iAnz)+" Name: "+LView->Name;Alle anderen Werte stimmen 100%, z.B. der Name mit LView->Name usw.
Verstehe die Welt nicht mehr...
Gruss Stefan
-
Hallo
Bei TListView können sich die Anzahl der angezeigten Spalten des Controls und die Anzahl der Subitems einer Zeile sehr wohl unterscheiden, bzw. bei der Änderung der Anzahl Spalten bleiben beim gleichen Items-Einlesealgo trotzdem die gleichen Subitems.
Die echte Anzahl Spalten des Controls kannst du mitiAnz = ListView->Columns->Count;abfragen.
Form17
Hast du wirklich 17 Formulare mit Standardnamen? Wie wäre es mit aussagekräftigen Namen?bis bald
akari
-
Die Forms nummeriere ich nach Standardvorgabe durch; der Name der CPP ist dann bei mir eindeutig z.B. Form17 = Termine.cpp
Ich brauche aber vom Zeileneintrag die SubItems Anzahl, da diese ja variieren kann (eben je Zeile). Die LView->Columns kann von den SubItems Anzahl her abweichen.
..und während ich das hier schreibe ist mir auch klar wo der Fehler ist.
Ich habe in einen anderen CPP nämlich die Subs zuviel anhgehängt (eben mehr als
die Columns vorhanden sind und daher dann der Fehler) Von daher hat Dein Hinweis mir geholfen, vielen Dank!!!Grüsse Stefan
-
Hallo
Die Forms nummeriere ich nach Standardvorgabe durch; der Name der CPP ist dann bei mir eindeutig z.B. Form17 = Termine.cpp
Dann würde ich empfehlen auch die Formklasse entsprechend zu benennen, zum Beispiel TTerminForm.
bis bald
akari