![]() |
ListBox einträge ändern
jetzt hab ich abern och eine frage:
ich hab ein paar edits, die die ListBox1 inhalte auslesen und über die man die bestehenden inhalte der ListBox bearbeiten kann und zwar so:
Delphi-Quellcode:
wenn ich nun aber diese procedure im programm aufrufe, passiert nichts! warum?
procedure TForm1.AendernClick(Sender: TObject);
begin try if ListBox1.ItemIndex<>-1 then begin ListBox1.Items.Insert(ListBox1.ItemIndex, Name.Text+' | '+Ansprechpartner.Text+' | '+Strasse.Text+' | '+Ort.Text+' | '+Telefon.Text+' | '+Telefax.Text+' | '+Mobil.Text+' | '+EMail.Text); ListBox1.Items.Delete(ListBox1.ItemIndex); end else ShowMessage ('Es müssen Einträge markiert sein!'); except ShowMessage ('Falsche Eingaben!'); end; end; |
Re: ListBox einträge ändern
Hallo Max,
du fügst eine Zeile an einer bestimmten Stelle ein und löschst sie sofort wieder. Du möchtest aber eigentlich die nachfolgende Zeile löschen. Grüße vom marabu Bei genauem Hinsehen willst du weder Löschen noch Einfügen:
Delphi-Quellcode:
Du möchtest auch keine reservierten Wörter (name) als Komponentennamen verwenden. Außerdem möchtest du auch nicht, dass der Benutzer deines Programms den Button Aendern anklicken kann, wenn kein Item ausgewählt ist.
procedure TForm1.AendernClick(Sender: TObject);
begin with ListBox1 do if ItemIndex < 0 then ShowMessage ('Es muss ein Eintrag markiert sein!') else Items[ItemIndex] := Name.Text +' | ' + Ansprechpartner.Text + ' | ' + Strasse.Text + ' | ' + Ort.Text + ' | ' + Telefon.Text + ' | ' + Telefax.Text + ' | ' + Mobil.Text + ' | ' + EMail.Text; end; |
Re: ListBox einträge ändern
lol ^^ das könnte daranliegen, dass du den eintrag den du mit insert einträgst dannach wieder löschst :wink:
MfG - Ghost007 P.S. Änder das mal wie folgt ab //EDIT:
Delphi-Quellcode:
procedure TForm1.AendernClick(Sender: TObject);
var tmp:integer; begin try if ListBox1.ItemIndex<>-1 then begin tmp:=ListBox1.ItemIndex; ListBox1.Items.Insert(tmp+1, Name.Text+' | '+Ansprechpartner.Text+' | '+Strasse.Text+' | '+Ort.Text+' | '+Telefon.Text+' | '+Telefax.Text+' | '+Mobil.Text+' | '+EMail.Text); ListBox1.Items.Delete(tmp); end else ShowMessage ('Es müssen Einträge markiert sein!'); except ShowMessage ('Falsche Eingaben!'); end; end; |
Re: ListBox einträge ändern
Das geht so auch nicht, Christian.
Wenn Du das Item löscht, ist der ItemIndex weg. Das heißt, Du musst Dir den ItemIndex erst aberspeichern und dann beim Insert den abgespeicherten verwenden.
Delphi-Quellcode:
So z.B. funktioniert das ganze wieder.
var
I: Integer; begin if ListBox1.ItemIndex<>-1 then begin I := ListBox1.ItemIndex; ListBox1.Items.Delete(I);//diese zeile von unten nach oben verschieben ListBox1.Items.Insert(I, 'Simple Test'); end; end; |
Re: ListBox einträge ändern
Zitat:
MfG - Ghost007 |
Re: ListBox einträge ändern
Ja, ich hab auch gerade gesehen. :tongue:
Btw. Max: Ich weiß nicht, was Du vor hast, aber wäre eine TListView für Dein Vorhaben nicht besser geeignet? |
Re: ListBox einträge ändern
Eure Vorschläge zum ändern von oben funktionieren auch ned!!!
Wo finde ich die TListView?? EDIT: ahh ich hab scho gefunden. |
Re: ListBox einträge ändern
Unter Win32 ist die.
Zitat:
|
Re: ListBox einträge ändern
Zitat:
das versteh ich jetzt nicht! Was muss ich jetzt ändern das alles funktioniert? |
Re: ListBox einträge ändern
Naja, erstmal solltest Du uns nochmal den Code zeigen, weil die Vorschläge von Christian und mir funktionieren ohne Probleme.
|
Re: ListBox einträge ändern
Delphi-Quellcode:
das hab ich jetzt mal genommen. aber wenn ich auf den ändern button klick tut sich garnix! ich check jetzt nix mehr^^
procedure TForm1.AendernClick(Sender: TObject);
var tmp:integer; begin try if ListBox1.ItemIndex<>-1 then begin tmp:=ListBox1.ItemIndex; ListBox1.Items.Insert(tmp+1, Name.Text+' | '+Ansprechpartner.Text+' | '+Strasse.Text+' | '+Ort.Text+' | '+Telefon.Text+' | '+Telefax.Text+' | '+Mobil.Text+' | '+EMail.Text); ListBox1.Items.Delete(tmp); end else ShowMessage ('Es müssen Einträge markiert sein!'); except ShowMessage ('Falsche Eingaben!'); end; end; |
Re: ListBox einträge ändern
Ich würde es so machen:
Delphi-Quellcode:
(Ungetestet)
procedure TForm1.AendernClick(Sender: TObject);
var n : integer; begin try if ListBox1.ItemIndex > -1 then begin n := ListBox1.ItemIndex; ListBox1.Items[n] := Name.Text + ' | ' + Ansprechpartner.Text + ' | '+Strasse.Text + ' | ' + Ort.Text + ' | ' + Telefon.Text + ' | '+Telefax.Text + ' | ' + Mobil.Text + ' | ' + EMail.Text; end else ShowMessage('Es müssen Einträge markiert sein!'); except ShowMessage('Falsche Eingaben!'); end; end; Und ändere mal den Namen des Edits "Name". Das ist ein reservierter Bezeichner! Patti |
Re: ListBox einträge ändern
Deine Lösung gefällt mir, aber sie geht auch nicht!
Ich weiß nicht woran das liegt! |
Re: ListBox einträge ändern
Hi,
machst Du zufällig was im OnChange mit der ListBox? Die Lösungen funktionieren ohne Probleme bei mir. |
Re: ListBox einträge ändern
Bist du dir sicher, dass du "Name" schon geändert hast? Ein Komponenten-Name darf niemals ein reserviertes Wort sein. Wenn es immer noch nicht gehen sollte, dann müsstest du wohl etwas mehr Code posten!
|
Re: ListBox einträge ändern
ich checks gleich nommal ab! danke für die posts
|
Re: ListBox einträge ändern
ja ich hab name schon geändert! aber es funzt nicht!
|
Re: ListBox einträge ändern
Kannst das Projekt mal anhängen?
|
Re: ListBox einträge ändern
nur die projektdatei oder nur den quelltext??
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz