| Autor |
Nachricht |
mexx
       
Beiträge: 1183
|
Verfasst: Do 06.07.06 09:24
Hallo,
mit ListBox.Items.Append(String) füge ich einer ListBox einen Eintrag hinzu. Ich möchte aber nicht, dass die Eintäge unten hinzugefügt werden, sondern immer oben. Wie kann ich das machen, ohne den Index nach dem Append zu ändern?
_________________ Das Unsympathische an den Computern ist, dass sie nur ja oder nein sagen können, aber nicht vielleicht.
|
| |
|
|
Werbung ausblenden? Dann registriere Dich kostenlos.
Weitere Gründe für eine Registrierung.
Werbung ausblenden? Dann registriere Dich kostenlos.
Weitere Gründe für eine Registrierung.
|
|
crowley
       
Beiträge: 406
Win XP, Win Vista, Mandriva, Ubuntu
Delphi 4-8, Delphi 2006, Delphi 2007
|
Verfasst: Do 06.07.06 09:33
schau mal nach
Items.Insert
C.
|
| |
|
|
mexx 
       
Beiträge: 1183
|
Verfasst: Do 06.07.06 09:48
Dann muss ich ja den Index des bestehenden Eintrages ändern. Das ist ungünstig und bei vielen Einträgen sicherlich Ressourcenaufwendig!
_________________ Das Unsympathische an den Computern ist, dass sie nur ja oder nein sagen können, aber nicht vielleicht.
|
| |
|
|
crowley
       
Beiträge: 406
Win XP, Win Vista, Mandriva, Ubuntu
Delphi 4-8, Delphi 2006, Delphi 2007
|
Verfasst: Do 06.07.06 10:09
hmm ? moment... du willst einen eintrag irgendwo in deiner Liste einfügen, aber dafür darf sich der Index nicht verschieben ? das haut nicht wirklich hin  denn wenn du was einfügst, verschiebt sich der Index aller nachfolgenden Einträge o_O
daher mal so als Tip...
BeginUpdate und EndUpdate verwenden... und wenn du den neuen Wert NACH einem bestimmten Eintrag setzen willst, dann mach es so wie ich oben mit IndexOf(..)+1... wenn es VOR dem bestehenden Eintrag sein soll, dann lass das +1 weg 
|
| |
|
|
mexx 
       
Beiträge: 1183
|
Verfasst: Do 06.07.06 10:10
Dann muss ich ja den Index des bestehenden Eintrages ändern. Das ist ungünstig und bei vielen Einträgen sicherlich Ressourcenaufwendig!
_________________ Das Unsympathische an den Computern ist, dass sie nur ja oder nein sagen können, aber nicht vielleicht.
|
| |
|
|
mexx 
       
Beiträge: 1183
|
Verfasst: Do 06.07.06 10:12
Ich glaube Du hast mich verstenden. Ich will meinen Eintrag einfach nur oben haben nicht unten in der Liste, sondern immer oben drauf!
_________________ Das Unsympathische an den Computern ist, dass sie nur ja oder nein sagen können, aber nicht vielleicht.
|
| |
|
|
crowley
       
Beiträge: 406
Win XP, Win Vista, Mandriva, Ubuntu
Delphi 4-8, Delphi 2006, Delphi 2007
|
Verfasst: Do 06.07.06 10:16
obiger code fügt dir 200 zufällige Zahlen immer an den Anfang deiner Liste an...
|
| |
|
|
mexx 
       
Beiträge: 1183
|
Verfasst: Do 06.07.06 10:22
Ok, nochmal.
Ich habe folgende Inhalte. a,b,c,d,e,...
Ungewiss wieviele, also ist eine for-schleife schon mal unmöglich!
Wenn ich nun ListBox.Items.Append(String) mache, habe ich eine Liste, die jeden Eintrag nacheinander von oben nach unten auflistet.
a
b
c
d
e
...
Ich möchte aber
...
e
d
c
b
a
Keine Vorschleife mit kein zufälligen Index, weil die Daten ja nicht irgendwo stehen sollen und auch keine alphabetische Sortierung, weil a,b,c,d,e,... nur ein Beispiel waren und die Daten keine Sortierung erlauben.
_________________ Das Unsympathische an den Computern ist, dass sie nur ja oder nein sagen können, aber nicht vielleicht.
|
| |
|
|
crowley
       
Beiträge: 406
Win XP, Win Vista, Mandriva, Ubuntu
Delphi 4-8, Delphi 2006, Delphi 2007
|
Verfasst: Do 06.07.06 10:44
antwort siehe oben:
Ich hatte das in eine Schleife gepackt hatte, um dir zu demonstrieren, wie man es mit VIELEN Items macht... und wenn du es mit mehreren Items machst, bietet sich nun mal eine Schleife an... dabei solltest du dann auch BeginUpdate..try..finally..EndUpdate..End benutzen...
denke, ein bißchen Transferleistung sollte ich ja erwarten können... etwas denken hilft manchmal weiter...
|
| |
|
|
mexx 
       
Beiträge: 1183
|
Verfasst: Do 06.07.06 10:52
Bei Deiner Methode steht doch dann jeder Eintrag an irgendeiner Stelle! So ist das nicht gewollt. Wenn ich die Schaltfläche drücke, soll einfach nur der nächste Eintrag oben hinzugefügt werden!
_________________ Das Unsympathische an den Computern ist, dass sie nur ja oder nein sagen können, aber nicht vielleicht.
|
| |
|
|
crowley
       
Beiträge: 406
Win XP, Win Vista, Mandriva, Ubuntu
Delphi 4-8, Delphi 2006, Delphi 2007
|
Verfasst: Do 06.07.06 11:09
nein... bei mir wird der neue eintrag IMMER OBEN angefügt
|
| |
|
|
crowley
       
Beiträge: 406
Win XP, Win Vista, Mandriva, Ubuntu
Delphi 4-8, Delphi 2006, Delphi 2007
|
Verfasst: Do 06.07.06 11:24
lbx.Items.Insert(0, neues_item);
die 0 ist die Position, an der das neue Item eingefügt werden soll... 0 ist das oberste Item in der Listbox...
wenn bei dir das so nicht funktionieren sollte... hast du vielleicht Sorted oder etwas anderes, dass die Reihenfolge der Items in der Listbox verändert, aktiviert ?
|
| |
|
|
krampi
Hält's aus hier
Beiträge: 11
|
Verfasst: Di 15.01.08 00:12
Wenn ich zum Thema eine weitere Frage einwerfen darf - (um nicht einen neuen Thread zu öffnen) - wie kann ich ein Item in einer Listbox hinzufügen, wenn diese auf eine Textdatei zurückgreift?
|
| |
|
|
XUDO
      
Beiträge: 45
Win-98SE, Win-XP/1
Delphi-7P, Turbo-Pascal-6
|
Verfasst: Di 06.01.09 20:26
mexx hat folgendes geschrieben : | | Wenn ich die Schaltfläche drücke, soll einfach nur der nächste Eintrag oben hinzugefügt werden! |
Hallo mexx,
der erste Eintrag in einer Listbox hat immer den Index 0 und der letzte den Index Listbox1.items.Count. Das ist die Anzahl der Einträge -1, da die Liste bei 0 beginnt. Ein neuer Eintrag oben muss also zwangsläufig den Index 0 bekommen.
Du kommst also nicht drumherum anzuweisen: Listbox1.items[0]:=[neuer Eintrag];
Willst du nicht, daß der ursprüngliche Eintrag 0 = items[0] dadurch überschrieben wird und damit "weg" ist, bleibt Dir eine vorher (als vor dem neuen 0-Eintrag) "veranstaltete" Schiebescheife mit dem Endwert .Count nicht erspart, die allen items vom neuen letzten an den Inhalt des "darüberstehenden" items zuweist und damit den alten Nulleintrag in items[1] kopiert, womit dann [0] überschrieben werden darf, ohne Einträge zu verlieren.
Falls irgendwo im Programm ein Array/eine Ordnung existiert, die auf die einzelnen Items bzw. deren Index hinweist, muß hier natürlich ebenfalls "geschoben" werden.
Gruß Udo
|
| |
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Di 06.01.09 21:00
_________________ PROGRAMMER: A device for converting coffee into software.
|
| |
|
|
Dude566
      
Beiträge: 1485
Erhaltene Danke: 72
W7, Vista, XP, Ubuntu
Delphi XE2 Pro, Turbo Delphi, Java/Eclipse, Notepad++
|
Verfasst: Mi 07.01.09 15:30
Mit 0 im obigen Code ist die Stelle in der Listbox angegeben, und nach dem Komma kommt dann die Variable. Also wird es einfach immer vorne angefügt und die hinteren weiter nach hinten verschoben so dass vorne Platz ist.
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
| |
|
|
Yogu
       
Beiträge: 2544
Erhaltene Danke: 137
Windows 7 Home Premium
Visual C# 2010 Express
|
Verfasst: Mi 07.01.09 16:06
krampi hat folgendes geschrieben : | | Wenn ich zum Thema eine weitere Frage einwerfen darf - (um nicht einen neuen Thread zu öffnen) - wie kann ich ein Item in einer Listbox hinzufügen, wenn diese auf eine Textdatei zurückgreift? |
Einmal angenommen, du meinst mit "auf eine Textdatei zurückgreifen" "eine Textdatei geladen haben", macht das keinen Unterschied. Du kannats genauso die Prozeduren ListBox1.Items.Add und ListBox1.Items.Insert verwenden.
|
| |
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Do 08.01.09 00:00
_________________ PROGRAMMER: A device for converting coffee into software.
|
| |
|
|
Yogu
       
Beiträge: 2544
Erhaltene Danke: 137
Windows 7 Home Premium
Visual C# 2010 Express
|
Verfasst: Do 08.01.09 00:31
|
| |
|
|
Blackheart666
      
Beiträge: 2195
XP
D3Prof, D6Pers.
|
Verfasst: Do 08.01.09 01:02
Wir sind doch hier in einem Forum wo der Sinn darin besteht Fragen zu beantworten, egal wie alt sie sind. Dadurch brauchen andere User die eventuell die selbe Frage haben und die Suche bemühen eine entsprechende Antwort finden (Wenn mann nicht um löschung des Themas bittet, warum auch immer)
"Kopfschüttelsmilie nicht gefunden"
Moderiert von Narses: überflüssige Umbrüche entfernt
_________________ Blackheart666
Der Irrsinn ist bei Einzelnen etwas Seltenes, - aber bei Gruppen, Parteien, Völkern, Zeiten die Regel. (Friedrich Nietzsche)
|
| |
|
|