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 DeleteSelected und Ini Erasesections [gelöst] (https://www.delphipraxis.net/22014-listbox-deleteselected-und-ini-erasesections-%5Bgeloest%5D.html)

Doomlittle 11. Mai 2004 11:22


Listbox DeleteSelected und Ini Erasesections [gelöst]
 
Hallo Leute

Ich habe momentan ein kleines Problem mit meinem Programm, was sich im Großen und Ganzen um den Webbrowser dreht. Mit einer Listbox werden Einträge aus einer Ini Datei angezeigt, die dem Webbrowser als Favoriten dienen.

Nun möchte ich in der Listbox mehrere Einträge löschen was natürlich dann auch in der Ini Datei geschehen soll. Das tut es nur noch nicht.

Delphi-Quellcode:
procedure TMain_Form.Favoriten_ListBoxKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=vk_delete then
  if Favoriten_ListBox.Selected[Favoriten_ListBox.ItemIndex]
  then
  begin
    if MessageDlg( 'Willst du diese(n) Favoriten löschen?' , mtWarning,[mbYes,mbNo],0)=mrYes
    then
    begin
      try
      Ini_favoriten.EraseSection(Favoriten_ListBox.Items[Favoriten_ListBox.ItemIndex]);
      Favoriten_ListBox.DeleteSelected;
      except
      //
      end;
    end;
  end;
end;
Die Listbox ist zwar nach dieser Aktion leer, bei einem Neustart sind aber wieder fast alle selektierten Einträge da und nur einer (meist der Letzte) fehlt - die Ini wird also nicht wirklich um die ausgewählten Einträge beschnitten. Ich bin extra wegen der DeleteSelected Methode von Delphi 5 auf Delphi 7 umgestiegen und frage mich nun warum die Einträge nicht auch in der Ini gelöscht werden. Mir schwahnt zwar wieder einmal das dort eine Schleife fehlt, allerdings habe ich noch nicht herausgefunden wie man diese dort anwenden könnte.

Vielleicht habt ihr ja einen Hinweis für mich,
Danke im Vorraus

Niko 11. Mai 2004 12:10

Re: Listbox DeleteSelected und Ini Erasesections
 
Hi,
diese Abfrage
Delphi-Quellcode:
if Favoriten_ListBox.Selected[Favoriten_ListBox.ItemIndex] then
kannst du dir schon mal sparen. Ein Eintrag der den Fokus hat ist auch automatisch ausgewählt. Prüfen sollte man besser ob Favoriten_ListBox.SelCount <> -1 ist, d.h. ob überhaupt was ausgewählt wurde.
Und ja, es fehlt eine Schleife :wink: :
Statt
Delphi-Quellcode:
Ini_favoriten.EraseSection(Favoriten_ListBox.Items[Favoriten_ListBox.ItemIndex]);
müsstest du folgendes schreiben:
Delphi-Quellcode:
for i := 0 to Favoriten_ListBox.Count - 1 do
  if Favoriten_ListBox.Selected[i] then
    Ini_favoriten.EraseSection(Favoriten_ListBox.Items[i]);
Mit deiner Version wird nur der Eintrag aus der INI gelöscht der gerade den Fokus hat; die Schleife sorgt dafür, dass alle markierten Einträge gelöscht werden.

Doomlittle 11. Mai 2004 12:18

Re: Listbox DeleteSelected und Ini Erasesections
 
Stimmt, nun geht es auch.

Ich danke dir :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:11 Uhr.

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