Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ListBox einträge ändern (https://www.delphipraxis.net/111133-listbox-eintraege-aendern.html)

maxmax 30. Mär 2008 11:08


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:
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;
wenn ich nun aber diese procedure im programm aufrufe, passiert nichts! warum?

marabu 30. Mär 2008 11:13

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:
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;
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.

ghost007 30. Mär 2008 11:15

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;

Die Muhkuh 30. Mär 2008 11:19

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:
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;
So z.B. funktioniert das ganze wieder.

ghost007 30. Mär 2008 11:20

Re: ListBox einträge ändern
 
Zitat:

Zitat von Die Muhkuh
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.

habe deswegen meinen beitrag grade editiert ;)

MfG - Ghost007

Die Muhkuh 30. Mär 2008 11:21

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?

maxmax 30. Mär 2008 11:39

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.

Die Muhkuh 30. Mär 2008 11:40

Re: ListBox einträge ändern
 
Unter Win32 ist die.

Zitat:

Eure Vorschläge zum ändern von oben funktionieren auch ned!!!
Gibt es keine Kekse für das Krümelmonster? :gruebel:

maxmax 30. Mär 2008 11:46

Re: ListBox einträge ändern
 
Zitat:

Zitat von Die Muhkuh
Unter Win32 ist die.

Zitat:

Eure Vorschläge zum ändern von oben funktionieren auch ned!!!
Gibt es keine Kekse für das Krümelmonster? :gruebel:

ich habs auch grad gefunden 8)

das versteh ich jetzt nicht!
Was muss ich jetzt ändern das alles funktioniert?

Die Muhkuh 30. Mär 2008 11:47

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.

maxmax 30. Mär 2008 11:50

Re: ListBox einträge ändern
 
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;
das hab ich jetzt mal genommen. aber wenn ich auf den ändern button klick tut sich garnix! ich check jetzt nix mehr^^

patti 30. Mär 2008 12:18

Re: ListBox einträge ändern
 
Ich würde es so machen:

Delphi-Quellcode:
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;
(Ungetestet)

Und ändere mal den Namen des Edits "Name". Das ist ein reservierter Bezeichner!

Patti

maxmax 31. Mär 2008 15:25

Re: ListBox einträge ändern
 
Deine Lösung gefällt mir, aber sie geht auch nicht!
Ich weiß nicht woran das liegt!

Die Muhkuh 31. Mär 2008 15:27

Re: ListBox einträge ändern
 
Hi,

machst Du zufällig was im OnChange mit der ListBox?

Die Lösungen funktionieren ohne Probleme bei mir.

patti 31. Mär 2008 16:01

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!

maxmax 1. Apr 2008 17:15

Re: ListBox einträge ändern
 
ich checks gleich nommal ab! danke für die posts

maxmax 1. Apr 2008 17:24

Re: ListBox einträge ändern
 
ja ich hab name schon geändert! aber es funzt nicht!

Die Muhkuh 1. Apr 2008 17:41

Re: ListBox einträge ändern
 
Kannst das Projekt mal anhängen?

maxmax 1. Apr 2008 19:36

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