Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit entfernen von ListBox einträgen (https://www.delphipraxis.net/96977-problem-mit-entfernen-von-listbox-eintraegen.html)

01001 2. Aug 2007 13:18


Problem mit entfernen von ListBox einträgen
 
Wie der Titel des Themas schon sagt hab ich ein Problem mit dem löschen eines bestimmten Beitrags in einer TListBox. In einer ListBox habe ich ein paar einträge. Diese einträge sind auch in einer .ini Datei hinterlegt. Wenn ich jetzt zum beispiel die Einträge: Eintrag1, Eintrag2 und Eintrag3 in der ListBox habe und dann Eintrag3 aus der ListBox und aus der .Ini datei entfernen will löscht der in der ListBox Eintrag1 und Eintrag3 aber in der .Ini datei nur Eintrag3 :?:
Hier ist der Abschnitt der fürs löschen verantwortlich ist:
Delphi-Quellcode:
begin
 if Form2.ListBox1.Items.IndexOf(Edit1.Text) > -1 then
 begin
 try
    Ini:=TIniFile.Create(Result + 'Test.ini');
    ini.DeleteKey('Themen', Edit1.Text);
  finally
    Ini.Free;
  end;
  DeleteFileToRecycleBin(Result + Edit1.Text + '.txt');
  for i:=0 to Form2.ListBox1.Items.Count-1 do
  begin
    Form2.ListBox1.Items[i]:=Edit1.Text;
    Form2.ListBox1.Items.Delete(i);
  end;
  Form11.Visible := False;
 end
 Else
   begin
   Showmessage('Datei wurde nicht gefunden');
   Form11.Visible := False;
  end;
 end;
Kann mir jemand sagen wo der Fehler ist?

Luckie 2. Aug 2007 13:22

Re: Problem mit entfernen von ListBox einträgen
 
Überleg mal, was der Code:
Delphi-Quellcode:
  for i:=0 to Form2.ListBox1.Items.Count-1 do
  begin
    Form2.ListBox1.Items[i]:=Edit1.Text;
    Form2.ListBox1.Items.Delete(i);
  end;
macht. Löscht er einen Eintrag oder alle Einträge aus der Listbox?

marabu 2. Aug 2007 13:26

Re: Problem mit entfernen von ListBox einträgen
 
Hi,

weder noch - er löscht jeden mit geradem Index. Besser so:

Delphi-Quellcode:
var
  iDelete: Integer;
begin
  // ...
  iDelete := Form2.ListBox1.Items.IndexOf(Edit1.Text);
  if iDelete > -1 then
  begin
    try
      Ini := TIniFile.Create(Result + 'Test.ini');
      ini.DeleteKey('Themen', Edit1.Text);
    finally
      Ini.Free;
    end;
    DeleteFileToRecycleBin(Result + Edit1.Text + '.txt');

{
    for i:=0 to Form2.ListBox1.Items.Count-1 do
    begin
      Form2.ListBox1.Items[i]:=Edit1.Text;
      Form2.ListBox1.Items.Delete(i);
    end;
}
    Form2.ListBox1.Items.Delete(iDelete);

    Form11.Visible := False;
  end Else
  begin
    Showmessage('Datei wurde nicht gefunden');
    Form11.Visible := False;
  end;
end;
Grüße vom marabu

Luckie 2. Aug 2007 13:28

Re: Problem mit entfernen von ListBox einträgen
 
Zitat:

Zitat von marabu
weder noch - er löscht jeden mit geradem Index. Besser so:

OK, so genau wollte ich es nicht wissen. ;)

01001 2. Aug 2007 13:32

Re: Problem mit entfernen von ListBox einträgen
 
@marabu: Danke jetzt geht es.

RobSteward 10. Nov 2007 01:25

Re: Problem mit entfernen von ListBox einträgen
 
Ich hänge mich mal dran, das Thema ist ja nicht so alt.

Ich würde gerne einen bestimmten Eintrag (den markierten) aus meiner Liste löschen. DAs Löschen ansich ist nicht mein Problem, sondern das finden des markierten Eintrages. Leider bietet die ListBox nach meinen Infos keine Funktion, die einem den Int-Wert des markierten Eintrags zurück gibt. Über Selected geht es auch nicht und sonst weiß ich keine Lösung...

Hier der Code:
Code:
procedure Tf_ereignis.ereignis_listClick(Sender: TObject);
begin
 if ereignis_list.Selected[HIER MUSS DER INT WERT REIN] then b_loeschen.Enabled:=True else b_loeschen.Enabled:=False;
end;
In der Prcedure b_loeschenClick wird natürlich dann der Eintrag gelöscht...

Für Hilfe wäre ich euch sehr verbunden. Die Delphi Hilfe lässt einem zu dem Thema im Stich...

Matze 10. Nov 2007 06:59

Re: Problem mit entfernen von ListBox einträgen
 
Hallo,

Zitat:

Zitat von RobSteward
Leider bietet die ListBox nach meinen Infos keine Funktion, die einem den Int-Wert des markierten Eintrags zurück gibt.

Ich nehme an, mit dem "Int-Wert" meinst du den Index des gewählten Eintrags. Dieser steht in Delphi-Referenz durchsuchenItemIndex.

Noch einfacher geht es jedoch so:

Delphi-Quellcode:
ListBox.DeleteSelected;
Grüße

DeddyH 10. Nov 2007 08:49

Re: Problem mit entfernen von ListBox einträgen
 
Ich glaube, hier geht es nur um das "Switchen" eines Buttons. Da gibt es IMO 2 Möglichkeiten je nach Einstellung von Multiselect.
Wenn MultiSelect eingeschaltet ist:
Delphi-Quellcode:
procedure Tf_ereignis.ereignis_listClick(Sender: TObject);
begin
  b_loeschen.Enabled:=ereignis_list.SelCount > 0;
end;
Ansonsten:
Delphi-Quellcode:
procedure Tf_ereignis.ereignis_listClick(Sender: TObject);
begin
  b_loeschen.Enabled:=ereignis_list.ItemIndex > -1;
end;

Nuclear-Ping 10. Nov 2007 08:52

Re: Problem mit entfernen von ListBox einträgen
 
Delphi-Quellcode:
procedure Tf_ereignis.ereignis_listClick(Sender: TObject);
begin
 if ereignis_list.Selected[HIER MUSS DER INT WERT REIN] then b_loeschen.Enabled:=True else b_loeschen.Enabled:=False;
end;
Tipp:

Delphi-Quellcode:
procedure Tf_ereignis.ereignis_listClick(Sender: TObject);
begin
  b_loeschen.Enabled := ereignis_list.Selected[ereignis_list.ItemIndex];
  // oder
  // b_loeschen.Enabled := (ereignis_list.SelCount > 0);
end;

RobSteward 10. Nov 2007 13:13

Re: Problem mit entfernen von ListBox einträgen
 
Ah endlich mal eine Hilfe die ich gebrauchen kann. Danke

Danke an Matze...den IntWert des gewählten EIntrags brauche ich später noch.

Danke an Nuclear-Ping...hab garnicht dran gedacht das ich den true wert des einen fürs was anderes nehmen kann :)

Aber natürlich auhc danke an den Rest...

Eine Frage noch. Bei ereignis_list.ItemIndex gibt er mir immer den int-wert des gewählten eintrags zurück? Dachte das bezieht sich auf die ganze Liste...?!


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.
Seite 1 von 2  1 2      

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