AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Selected ListView-Query-Ergebnis in Variable speichern
Thema durchsuchen
Ansicht
Themen-Optionen

Selected ListView-Query-Ergebnis in Variable speichern

Ein Thema von Yikes · begonnen am 5. Sep 2016 · letzter Beitrag vom 5. Sep 2016
Antwort Antwort
Yikes

Registriert seit: 2. Sep 2016
7 Beiträge
 
#1

Selected ListView-Query-Ergebnis in Variable speichern

  Alt 5. Sep 2016, 14:41
Hallo, ich brauche mal wieder Hilfe. Eigentlich habe ich so ziemlich dasselbe Problem wie letztes Mal. Irgendwie krieg ich das ganze noch nicht so in den Kopf rein...

Ich habe mir eine ListView erstellt:

Delphi-Quellcode:
ListView1.BeginUpdate;
  try
    while not FDStoredProc1.eof do
    begin
      LItem := ListView1.Items.Add;

      LItem.Detail := FDStoredProc1.FieldByName('Vorname').AsString + ' ' + FDStoredProc1.FieldByName('Name').AsString;
      FDStoredProc1.Next;
    end;
  finally
    ListView1.EndUpdate;
    ListView1.Visible := true;
  end;
Bei einem Klick auf den ListView-Button, soll das Ergebnis eines Queries in einer Variable gespeichert werden.

Delphi-Quellcode:
procedure TForm1.ListView1ButtonClick(const Sender: TObject;
  const AItem: TListItem; const AObject: TListItemSimpleControl);
var
  LLocal : TRec;
begin

  if Assigned(ListView1.Selected) then begin
    LLocal.wert1 := FDStoredProc1.FieldByName('SpalteA').AsFloat;
    LLocal.wert2 := FDStoredProc1.FieldByName('SpalteB').AsFloat;
  end;
end;
Das bringt mir leider nur die allerletzten Werte aus der Datenbank. Ist mir auch relativ klar, warum ich nur den letzten Wert bekomme, allerdings weiß ich nicht, wie ich diesen Fehler beheben kann.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Selected ListView-Query-Ergebnis in Variable speichern

  Alt 5. Sep 2016, 14:54
Ich würde die benötigten Werte zusätzlich im ListViewItem hinterlegen ( Objects oder Tag)
Markus Kinzler
  Mit Zitat antworten Zitat
Yikes

Registriert seit: 2. Sep 2016
7 Beiträge
 
#3

AW: Selected ListView-Query-Ergebnis in Variable speichern

  Alt 5. Sep 2016, 15:16
Ich würde die benötigten Werte zusätzlich im ListViewItem hinterlegen ( Objects oder Tag)
Sorry, wenn ich jetzt irgendwas offensichtliches nicht kapiert habe...

Bei Objects bekomme ich die Meldung, dass es eine Read-Only Eigenschaft ist und Tag nimmt anscheinend nur Int-Werte.
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Selected ListView-Query-Ergebnis in Variable speichern

  Alt 5. Sep 2016, 15:30
Man kann in ListViewItem.Tag einen Wert, z.B. die ID des zugehörigen Objekts in der Datenbank, speichern.
Im OnClick kannst du den Tag dann auslesen und weisst, welche Daten du aus der Datenbank holen muss (die mit der ID, die in Tag steht).
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Selected ListView-Query-Ergebnis in Variable speichern

  Alt 5. Sep 2016, 15:37
Delphi-Quellcode:
var
  TitInfo = class
    ID: Integer;
    A, B: Float
  end;
Delphi-Quellcode:
it: TitInfo;

...

ListView1.BeginUpdate;
  try
    while not FDStoredProc1.eof do
    begin
      it := TitInfo.Create;
      it.A := FDStoredProc1.FieldByName('SpalteA').AsFloat;
      it.B := FDStoredProc1.FieldByName('SpalteB').AsFloat;

      LItem := ListView1.Items.Add;
      LItem.Detail := FDStoredProc1.FieldByName('Vorname').AsString + ' ' + FDStoredProc1.FieldByName('Name').AsString;
      LItem.Tag := Integer( it);
       
      FDStoredProc1.Next;
    end;
  finally
    ListView1.EndUpdate;
    ListView1.Visible := true;
  end;
Delphi-Quellcode:
procedure TForm1.ListView1ButtonClick(const Sender: TObject;
  const AItem: TListItem; const AObject: TListItemSimpleControl);
var
  LLocal : TRec;
  it: TitInfo;
begin

  if Assigned(ListView1.Selected) then begin
    it := TitInfo(AItem.Tag);
    LLocal.wert1 := it.A;
    LLocal.wert2 := it.B;
  end;
end;
Markus Kinzler
  Mit Zitat antworten Zitat
bra

Registriert seit: 20. Jan 2015
711 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: Selected ListView-Query-Ergebnis in Variable speichern

  Alt 5. Sep 2016, 15:55
Ähm... ist das korrekt, dass die Klasse ins Property Tag gespeichert wird? Sollte das nicht eher ins Data oder Object sein (hab Delphi gerade nicht zur Hand).
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Selected ListView-Query-Ergebnis in Variable speichern

  Alt 5. Sep 2016, 15:58
Man kann es, wie geschrieben auch zu Objects hinzufügen. Funktioniert aber auch so.

Man darf halt nicht vergessen beim Freigeben der Liste auch die verlinkten Objekte mit freizugeben ( wenn kein ARC)
Markus Kinzler
  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 06: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