Delphi-PRAXiS
Seite 1 von 2  1 2      

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz