![]() |
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:
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.
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; Vielleicht habt ihr ja einen Hinweis für mich, Danke im Vorraus |
Re: Listbox DeleteSelected und Ini Erasesections
Hi,
diese Abfrage
Delphi-Quellcode:
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.
if Favoriten_ListBox.Selected[Favoriten_ListBox.ItemIndex] then
Und ja, es fehlt eine Schleife :wink: : Statt
Delphi-Quellcode:
müsstest du folgendes schreiben:
Ini_favoriten.EraseSection(Favoriten_ListBox.Items[Favoriten_ListBox.ItemIndex]);
Delphi-Quellcode:
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.
for i := 0 to Favoriten_ListBox.Count - 1 do
if Favoriten_ListBox.Selected[i] then Ini_favoriten.EraseSection(Favoriten_ListBox.Items[i]); |
Re: Listbox DeleteSelected und Ini Erasesections
Stimmt, nun geht es auch.
Ich danke dir :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 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