AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TListItem direkt in TListView einfügen

Ein Thema von scouty · begonnen am 15. Jan 2004 · letzter Beitrag vom 16. Jan 2004
Antwort Antwort
scouty

Registriert seit: 27. Nov 2003
Ort: Dresden
47 Beiträge
 
#1

TListItem direkt in TListView einfügen

  Alt 15. Jan 2004, 20:27
Hi Leute ich habe folgendes Problem: Ich will in eine Liste (TListView) ein Item (TListItem) einfügen. Das mache ich auf die folgende Art:

Delphi-Quellcode:
var
Item: TSlcCriterion; //TSlcCriterion = class(TListItem)

 Item := TSlcCriterion.Create(LvCrt.Items, TField(LvFld.Selected.Data));
  
 LvCrt.Items.AddItem(Item);

Nun, meine Frage, warum wird mir mein Objekt nicht in der Liste angezeigt?!?
Ich habe mit LvCrt.Items.Count geprüft, ob das Objekt einfügt wurde, und der Count hat sich erhöht. Nur sehen tu’ ich in der Liste nix. Ich wäre sehr dankbar, wenn mir jemand von Euch vielleicht ein Tipp geben könnte.

Vielen Dank schon mal….

Scouty

PS.: Wenn ich ein normals ListItem (TListItem) auf die selbe Weise einfügen will, wird das auch nicht angezeit. Daher dürfte es an meiner Klasse nicht liegen.
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: TListItem direkt in TListView einfügen

  Alt 16. Jan 2004, 18:16
Hallo

ich seh hier überhaupt nicht durch. Ich weiß nicht, warum du eine eigene Klasse für ein Listitem erstellst und warum du die Items so komisch versuchst hinzuzufügen. additem is zwar public, aber in der oh steht nix drin.

warum nicht nach dem Prinzip wie in der OH?
Delphi-Quellcode:
Var Listitem:Tlistitem;
begin
  Listitem:=Listview.items.add;
  Listitem.caption:='blablabla';
...

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
scouty

Registriert seit: 27. Nov 2003
Ort: Dresden
47 Beiträge
 
#3

Re: TListItem direkt in TListView einfügen

  Alt 16. Jan 2004, 18:40
Die Sache ist ganz einfach. Ich will die Objekte selbst in der List darstellen, das erspart mir Methoden zu implementieren, die dann jedes Mal Änderungen an den ListItems über Item.Data oder so ähnlich auf die Objekte übertragen, die die ListItems ja eigentlich repräsentieren sollen. Außerdem kann ich dann meine Objekte auch gleich in der Liste speichern und habe die Daten nicht redundant. Da die Objekt nicht sonderlich umfangreich sind, erschien es mir sehr praktisch, diese alle als Erben von TListItem zu deklarieren. Ich kann also die TListView nicht nur als Präsentation meiner Objekte nutzen, sondern gleich als deren direkter Administrator.

Was nun mein konkretes Problem angeht, so bin ich durch Probieren von selbst auf die Lösung gekommen. Allerdings gefällt mir diese noch nicht, weil viel zu viel Quelltext. –Am liebsten würde ich es so machen, wie’s in letzten auskommentieren Zeile steht - Ich habe herausgefunden, dass ich nur nach dem Einfügen des Items mittels AddItem() die Caption setzen muss. Aber eigentlich sollte das im Konstruktor von TSlcCriterion geschehen. Die Caption des Items wird also erst in der TListView angezeigt, wenn ich nach dem Einfügen, die Caption setze. Der Wert der Caption vor dem Einfügen wird nicht berücksichtigt. Na ja, also wenn jemand weiß, wie ich die Caption davor auch noch berücksichtigen kann, mir also das nachträgliche Setzen sparen kann, dann wäre ich für eine Tipp sehr dankbar.

Code:
procedure CreateListItem(Field: TField);
  var
    Item: TSlcCriterion;
  begin
    //ToDo evtl. vereinfachen
    Item := TSlcCriterion.Create(LvCrt.Items, Field);
    LvCrt.Items.AddItem(Item);
    Item.Caption := Field.FieldName;  
    //LvCrt.Items.AddItem(TSlcCriterion.Create(LvCrt.Items, TField(LvFld.Selected.Data)));
  end;
Greetings Scouty
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz