| Autor |
Beitrag |
Blamaster
      
Beiträge: 164
|
Verfasst: Di 12.02.08 15:05
Hallo,
ich habe eine List view erstellt und das eintragen und löschen von Einträgen klappt auch super. Nur würde ich gerne in der 1. Spalte eine Vortlaufente Eintragsnummer haben. Sprich der 1 Eintrag wird erstellt, in der der Spalte steht eine 1. Nächster Eintrag wird gemacht und bekommt die Nummer 2. Wenn ich einen Eintrag aus der Liste lösche, soll die Eintragsnummerierung jedoch nicht unterbrochen werden, sondern alle Eintragsnummer sollten sich wieder anpassen.
Kann mir da wer helfen ?
mfg Blamaster
|
|
Regan
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: Di 12.02.08 15:09
Ich würde dir eine For-Schleife empfehlen, mit der du alle Einträge durchgehst und neu nummerierst.
|
|
Blamaster 
      
Beiträge: 164
|
Verfasst: Di 12.02.08 16:33
Hm, aber von was bis was soll er denn in der for zählen. Die for weiß ja auch nicht wie viele Einträge in der Liste sind.
|
|
Xong
      
Beiträge: 113
WIN 2000
Borland Developer Studio 2006
|
Verfasst: Di 12.02.08 16:38
Blamaster hat folgendes geschrieben: | | Hm, aber von was bis was soll er denn in der for zählen. |
Von 1 bis Anzahl der Einträge in der Liste.
Blamaster hat folgendes geschrieben: | | Die for weiß ja auch nicht wie viele Einträge in der Liste sind. |
Das musst du ihr ja auch sagen... -.-
(Edit: LV.Items.Count dürfte dir weiterhelfen.)
Zuletzt bearbeitet von Xong am Di 12.02.08 16:41, insgesamt 1-mal bearbeitet
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Di 12.02.08 16:38
Delphi-Quelltext 1:
| for I := 0 to ListView1.Items.Count -1 do |
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
Blamaster 
      
Beiträge: 164
|
Verfasst: Di 12.02.08 16:59
Mit Listview Items Count hat das soweit auch schonmal ganz gut geklappt.
Hab folgenden code gesetzt für die Zuweisung: Additem.Caption:= IntToStr(ListView1.Items.Count);
Nun besteht ebend nur das wenn ich eine Liste mit folgenden Einträgen habe:
1.
2.
3.
4.
und nun Eintrag 3. Lösche, dann hat die Liste folgende nummerierung:
1.
2.
4.
Wenn das Problem noch zu lösen ist, bin ich wieder ein großes Stück weiter 
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Di 12.02.08 17:01
durchlaufe einfach meine Schleife und nummeriere neu durch!
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
Blamaster 
      
Beiträge: 164
|
Verfasst: Di 12.02.08 17:18
Hoi,
bin in Delphi momentan nicht mehr alzu fit. Ich habe 2 buttons einen zum Eintragen und einen zum löschen. Wohin kommt nun am gescheitesten der codeschnipsel ? Und müsste nicht noch was hinter die do Anweisung ?
mfg Blamaster
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Di 12.02.08 17:27
(a) Soll ich dein Programm schreiben?
(b) Wie hast Du denn die 1.Nummerierung hinbekommen?
(c) schreibe dir ein Prozedur, die die Einträge durch nummeriert und rufe dies nach dem Einfügen und Löschen auf!
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
Blamaster 
      
Beiträge: 164
|
Verfasst: Di 12.02.08 17:32
(a) Hab ich das behauptet ? Würde ich fragen, wenn ich es wüsste oder genau verstanden hätte ? Frage ich weil ich kein Interesse am Programmieren habe ? Warst du auch mal "anfänger" ? Dann sollte das ja gegessen sein.
(b) Wie oben geschrieben. Momentan erfolgt die Nummerierung so. Der Button mit dem die Einträge gespeichert werden enthält unteranderem: Additem.Caption:= IntToStr(ListView1.Items.Count); welches momentan die Nummerierung macht.
(c) Wenn ich so genau wüsste wie die procedur aussehen müsste, hätte ich das bereits getan.
mfg Blamaster
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Di 12.02.08 17:43
dann schreibe doch genau dies in die Schleife, nur statt AddItem musst Du die Items des Litsviews durchlaufen
Delphi-Quelltext 1: 2:
| for I := 0 to ListView1.Items.Count-1 do ListView1.Items[I].Caption := IntToStr(I)+'.'; | (ungetestet, ev. leistet die F1-Taste gute Dienste)
sollte klappen!
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
Blamaster 
      
Beiträge: 164
|
Verfasst: Di 12.02.08 17:58
Hi,
wielen Dank. Manchmal sieht man echt den Wald vor lauter bäumen nicht naja was solls.
Wollte das ganze ebend noch so anpassen, das er mit der Nummerierung nicht bei 0 sondern bei 1 beginnt. Dazu habe ich den For I := 1 gesetzt. Das bringt aber noch nicht den passenden Effekt. Aber nach meinen Verständnis setzt er doch jetzt zuerst ListView1.Items[1].Caption := IntToStr(1); ein. Dann zählt er immer höher bis Items Count -1 zurück gibt.
mfg Blamaster
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Di 12.02.08 18:07
IntToStr(i+1);wäre besser als die Schleife zu ändern!
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
Blamaster 
      
Beiträge: 164
|
Verfasst: Di 12.02.08 18:56
Hm, geht dann immernoch nicht. Die 1. Stelle wo vorher die 0 stand ist jetzt leer.
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Di 12.02.08 19:14
dann schreibe wieder
for I := 0 hin!
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
Blamaster 
      
Beiträge: 164
|
Verfasst: Di 12.02.08 19:18
Das ist ja das Problem dann passierte ja das selbe. Also wieder das Feld beim ersten Eintrag leer und dann beim 2. steht ne 1.
Hier nochmal der ganze code:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Button1Click(Sender: TObject); begin Additem := ListView1.Items.Add;
for I := 1 to ListView1.Items.Count -1 do
ListView1.Items[I].Caption := IntToStr(I); Additem.SubItems.Add(pchar(Combobox1.Text)); Additem.SubItems.Add(pchar(Combobox2.Text)); Additem.SubItems.Add(Edit2.Text);
end; |
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Di 12.02.08 19:20
Delphi-Quelltext 1: 2:
| for I := 0 to ListView1.Items.Count-1 do ListView1.Items[I].Caption := IntToStr(I+1)+'.'; |
wenn das so da steht, dann erscheint auch in jedem Feld "xx."!
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Di 12.02.08 19:21
neee, nicht wirklich oder
setze die Schleife ans Ende!
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
Blamaster 
      
Beiträge: 164
|
Verfasst: Di 12.02.08 19:32
Ups. Jop verguggt. jetzt geht das auch problemlos. Thx nochmal 
|
|