Autor Beitrag
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 07.03.03 11:14 
Ich habe eine TListbox, mit Objekten dahinter. Der String, der in der Listbox erscheint, "berechnet" sich aus verschiedenen Werten des Objektes.
Das Objekt kann vom User verändert werden. Das heisst, auch die für den Eintrag relevanten Werte. Frage:

Wie kann ich den String in der Liste einfach verändern? Geht das nur über
ausblenden Quelltext
1:
2:
listbox1.deleteselected; // das zu bearbeitende Objekt war markiert
listbox1.additem(neuerstring, bearbeitetesObjekt)

oder gibt es da ne andere Möglichkeit?
Wenn nicht, wie erreiche ich es dann, dass der zuletzt eingefügte Eintrag markiert wird?
ausblenden Quelltext
1:
listbox1.selected[listbox1.count-1]:=true;					

geht nicht, da die Liste sortiert ist. Muss ich da wirklich die komplette Liste durchlaufen und den Eintrag suchen?

_________________
We are, we were and will not be.
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Fr 07.03.03 11:24 
Hallo

Zitat:

Wie kann ich den String in der Liste einfach verändern? Geht das nur über

ausblenden Quelltext
1:
2:
if lisbtox1.itemindex<>-1 then
  listbox1.items[listbox1.itemindex]:='blablabla';


Zitat:

Wenn nicht, wie erreiche ich es dann, dass der zuletzt eingefügte Eintrag markiert wird?

ausblenden Quelltext
1:
listbox1.itemindex := listbox1.items.add('blabla');					

ungetestet, ob das bei sortierten listen funktioniert, weiß ich nicht.
ansonsten
ausblenden Quelltext
1:
listbox1.itemindex := listbox1.items.indexof('mein hinzugefügter String');					

alles ungestest wie gesagt

Mfg Frank

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Fr 07.03.03 11:26 
Hallo,

den ausgewählten String in der Liste kannst Du folgendermaßen ändern:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
var x:Integer;

...
  x:=ListBox1.ItemIndex; // ausgewählter Eintrag
  ListBox1.Items[i]:='Mein neuer Text';
...

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
Gausi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 07.03.03 13:08 
danke für die schnellen Antworten.
@smiegel:
Die Lösung mit
ausblenden Quelltext
1:
ListBox1.Items[i]:='Mein neuer Text';					

gefällt mir sehr gut, nur leider geht dadurch die Sortierung der Liste kaputt, d.h wenn ich den Eintrag von "zacharias" auf "Anton" setze, dann bleibt Anton unten in der Liste.
@Keldorn:
Scheint auch mit sortierten Listen zu klappen, nur verwende ich
ausblenden Quelltext
1:
listbox1.itemindex :=listbox1.Items.AddObject('blabla',Objekt);					

aber das ist ja die selbe Idee.

_________________
We are, we were and will not be.