Staram sie usuwac tekst z listboxa o tak:
var
wybra: integer;
begin
for wybra := 0 to (listbox1.items.count -1) do
begin
if listbox1.Selected[wybra] then
listbox1.Items.Delete(wybra);
end;
Ale kiedy klikam probuje usunac, wyskakuje mi komunikat "List Index out of
bounds".
Dodam jeszcze, ze tekst jest ladowany z pliku funkcja
listbox1.items.loadfromfile, jesli to cos pomoze.
Co robie zle?
Dziekuje za wszelka pomoc
Marek
"Marek Sleszynski" <mar...@lion.cc-nospam->
Staram sie usuwac tekst z listboxa o tak:
var
wybra: integer;
begin
for wybra := 0 to (listbox1.items.count -1) do
begin
if listbox1.Selected[wybra] then
listbox1.Items.Delete(wybra);
end;
Ale kiedy klikam probuje usunac, wyskakuje mi komunikat "List Index out of bounds".
...Co robie zle?
> Witam!
>
> Staram sie usuwac tekst z listboxa o tak:
>
> var
> wybra: integer;
> begin
> for wybra := 0 to (listbox1.items.count -1) do
> begin
> if listbox1.Selected[wybra] then
> listbox1.Items.Delete(wybra);
> end;
Nie bardzo rozumiem po co tak mieszać.
Nie lepiej:
ListBox1.Items.Delete(ListBox1.ItemIndex);
???
$ Marcin Lewandowski
$ mbi...@poczta.onet.pl
$ Nie mieć złudzeń jest rzeczą godną szacunku - i bezpieczną
$ - i korzystną - i nudną. (J. Conrad)
--
--
Archiwum grupy: http://niusy.onet.pl/pl.comp.lang.delphi
A gdyby tak ...
for wybra := ListBox.Items.Count - 1 downto 0
{reszta bez zmian}
????
--
Pozdrowienia dla wszystkich
Wojtek [ woi...@poczta.onet.pl ]
Oczywiscie, ze zle.
Zalozmy, ze listbox.items.count przy wejsciu w petle for wynosi 100
wiec petla wykona sie 100 razy (dla 100 elementow).
ale po usunieciu jednego tych elementow jest juz 99 itd.
a ilosc wykonania w petli for nie zmienia sie dynamicznie w przeciwienstwie
do ilosci itemow w listboxie ;)))
wiec trzeba
wybra:=listbox.selection.top;
while listbox.selected[wybra] do
listbox.delete(wybra);
Pozdrawiam
Jacek Korzewski