AGB  ·  Datenschutz  ·  Impressum  







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

TListView und auf Object zugreifen

Ein Thema von RWarnecke · begonnen am 23. Dez 2009 · letzter Beitrag vom 23. Dez 2009
Antwort Antwort
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

TListView und auf Object zugreifen

  Alt 23. Dez 2009, 19:29
Hallo zusammen,

anscheinend bin ich entweder zu blöd oder ich seh den Wald vor lauter Bäumen nicht. Ich befülle folgendermaßen eine ListView mit 2 Spalten :
Delphi-Quellcode:
  I := 0;
  LV_Kundendaten.Items.BeginUpdate;
  with DM_Main, DM_Main.UniQuery_KundenQ do
  begin
    Open;
    while not Eof do
    begin
      ListItem := LV_Kundendaten.Items.Add;
      ListItem.Caption := FieldByName('Feld1').AsString;
      ListItem.SubItems.Add(Format('V - %2.2d', [FieldByName('Feld2').AsInteger]));
      ListItem.SubItems.AddObject(IntToStr(FieldByName('Feld0').AsInteger), Pointer(I));
      I := I + 1;
      Next;
    end;
    Close;
  end;
  LV_Kundendaten.Items.EndUpdate;
Wie kann ich nun auf das Object zugreifen ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#2

Re: TListView und auf Object zugreifen

  Alt 23. Dez 2009, 19:33
LV_Kundendaten[0].Caption oder LV_Kundendaten.items[0].Caption oder LV_Kundendaten[0].SubItems[0]

edit: War zu schnell:
ListItem.SubItems.AddObject(IntToStr(FieldByName('Feld0').AsInteger), Pointer(I)); Das wird so nicht gehen, aber versuch mal folgendes statt Pointer nimm mal TObject(i) und dann mit Integer(LV_Kundendaten.items[0].Data) müsste eigentlich gehen, wenn nicht musst du dir eine eigene Klasse erstellen und die zuweisen.

edit02:
ListItem.SubItems.AddObject(IntToStr(FieldByName('Feld0').AsInteger), Pointer(I)); es währe auch noch folgendes denkbar: Integer(TObject(@LV_Kundendaten.items[0].Data))

Dazu gab es hier auch schon mal Beiträge...
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#3

Re: TListView und auf Object zugreifen

  Alt 23. Dez 2009, 20:11
Hallo Michael,

erstmal danke für Deine Antwort. Nur leider kapiere ich noch nicht so richtig wie ich das mit dem Data mache. Mein Ziel soll es sein, dass der Integer-Wert von Feld0 als unsichtbarer Wert mit zum dem ListView-Eintrag gespeichert wird. Dadurch möchte ich mir eine zusätzliche Abfrage auf die Datenbank sparen.

Nur kapiere ich immer noch nicht, wie mir da Data weiterhelfen kann ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#4

Re: TListView und auf Object zugreifen

  Alt 23. Dez 2009, 21:35
Jeder Eintrag in der ListView hat ein Feld Data. Dieser ist meine ich von Datentyp TObject. Jetzt gibt es zwei Wege:
Du fügst dein Eintrag so hinzu: ListView1.Items.AddObject(...,TObject(varInteger)) ; nur beim Zurückwandeln bin ich mir nicht mehr sicher: Integer(TObject(ListItems1.Items[0].Data)); könnte gehen. Data speichert das Objekt. Was auf jedenfall geht ist:
Delphi-Quellcode:
TMyClass = class
  myIntVar:Integer
end;

// Dann sieht das Hinzufügen so aus:
var
  myVar:TMyVar;
begin
  myVar:=TMyVar.Create;
  myVar.myIntVar:=20;
  ListView1.Items.AddObject(...,myVar);
// Der Zugriff erfolgt so:
  ShowMessage(IntTostr(TMyClass(ListView1.Items[0].Data)));
Wenn du mit AddObject ein Object Hinzufügt wird das in den Feld Data des Items gespeichert. Am einfachsten geht das mit Klassen.
Es geht aber auch ohne. Mit Pointern, da weiß ich im Moment jedoch nicht wie. Hier im Forum gab es mal dazu Beiträge / Thread. Ich suche sie mal...

Edit01: http://www.delphipraxis.net/internal...teger+listview etwas weiter unten siehst du das es so geht: Integer(ListView1.items[0].data); wenn du es ohne Klassen machen möchtest.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  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 07:19 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