TListView

Rund um die LCL und andere Komponenten
jesus
Beiträge: 8
Registriert: So 18. Feb 2007, 13:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Berlin
Kontaktdaten:

TListView

Beitrag von jesus »

Hallo,

ich habe ein kleines Delphi-Projekt nach Lazarus übersetzt und mein Programm ist jetzt auch am laufen, aber mir ist aufgefallen, dass im ListView gar kein 'Itemindex' existiert ?

In welcher Variablen steht denn, welche Zeile gerade selektiert ist ?

Grüße jesus

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Herzlich willkommen im Forum.

also bei mir in der 9.21 gibt es sehr wohl ein ItemIndex ;)

steht zwar nicht im OI, aber über den Quelltext jederzeit verfügbar; definiert in der StdCtrls:

Property ItemIndex

jesus
Beiträge: 8
Registriert: So 18. Feb 2007, 13:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Berlin
Kontaktdaten:

Beitrag von jesus »

mmh na gut ich hab die 9.20 Beta ... aber ich habe gerade gesehen, man bekommt es über

ListView.Selected.index :)

Grüße jesus

jesus
Beiträge: 8
Registriert: So 18. Feb 2007, 13:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Berlin
Kontaktdaten:

Beitrag von jesus »

Also ich krieg's nicht gebacken ... ich dachte zwar ich könnte mit selected.index, das selektrierte Item auslesen, aber jedenmal wenn ich versuche diese Variable zu lesen, krieg ich ne Exception ...

Außerdem kann ich mit listView.Clear die liste nciht löschen ? Warum nicht ? Was macht den Clear, eigentlich ?

Kann es sein, das das TListView in Lazarus 0.9.20 noch nicht richtig funktionert ?

Grüße jesus :)

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

bei selected musst du erst prüfe ob die variabel ungleich nil ist dann sollte es gehen also sowas:
if selected NIl then begin
.....
end;

versuch mal
ListView1.items.Clear
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Ich kann mir nicht wirklich vorstellen, das es ItemIndex bei der 20er nicht geben soll.

aber geh einfach alle durch:

Code: Alles auswählen

i := -1
for i := 0 to Listbox.Items.Count do
  if Listbox.Selected[i] = true then
    break;
//i enthält Index ds selektierten Item, wenn nichts selektiert wurde ist i = -1
Wenn du dagegen nur den Text des Items brauchst, kannst du auch gleich ListBox.GetSelectetdText verwenden.

versuch mal
ListView1.items.Clear
Pluto, was soll das denn? Danach ist leer und auch nchts mehr selectiert.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich verstehe deine einwende nicht !
Wenn ich ListView1.items.clear sage ist die liste leer und genau das wollte er doch oder nicht ?
MFG
Michael Springwald

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

ups, hatte nur den ersten Teil der Frage im Kopf, natürlich löst das das Löschproblem :oops:

jesus
Beiträge: 8
Registriert: So 18. Feb 2007, 13:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Berlin
Kontaktdaten:

Beitrag von jesus »

also ich bilde mir ein ich hätte auch ein ListView1.items.Clear ausprobiert und das gleiche Ergebnis gehabt ... aber danke für Eure Tipps, ich werd's mir mal ansehen wenn ich mein Projekt mal wieder vor der nase habe :)

jesus :)

jesus
Beiträge: 8
Registriert: So 18. Feb 2007, 13:49
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Berlin
Kontaktdaten:

Beitrag von jesus »

Keine der drei folgenden Methoden funktioniert :

Code: Alles auswählen

ListView1.items.clear
 
 for i:= 0 to Phonebooklist.ListView1.Count-1 do
     ListView1.Items.Delete(i);
 
 ListView1.Clear;
... ich schau mich mal um, wo die .21 für win zu kriegen ist ...
Grüße jesus

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

es gibt da noch eine möglichkeit:
die ist änlich wie die von monta

Code: Alles auswählen

function GetListviewIndex(lv:TListView);
var
  i,z:Integer;
begin
  z:=-1;
  for i:=0 to lv.items.count-1 do begin
    if lv.items[i].selecetet = true then begin
      z:=i;
      break;
    end;     
  end;
  result:=z;
end;
der bezeichnet selecetet ist leider falschgeschrieben, sollte aber so änlich heißen !
Das muss gehen.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Also habe gerade alle 3 Methoden mit der .21 probiert klappt hervorragend.

wobei ich doe for schleife abgeändert habe.

while ListView1.Items.Count > 0 do
ListView1.Items.Delete(0);

In deiner Variante wird es bei der hälfte der Eintrgäe + einem eine Av gaben und ab da bei jedem weiteren Löschversuch eine :) na we weiss warum hrhr :p
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

@Pluto

z := ListView1.Selected.Index;

macht gemau das selbe wie dein code und ist noch ne strecke weit optimierter.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

naja das stimmt schon aber er schreibt doch das monta funktion nicht geht.
die setzt ja auch auf Selected und meine setzt da nicht drauf auf !

Das war eigentlich der gedanke !
ich kann das ja mal testen unter windows habe ich noch die alte lazarus version.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Deine setzt genauso auf Selected nur auf Selected vom Item und nicht von TListbox.Selected das dürfte beides das selbe sein. Hast du denn deine Variante ausprobiert ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten