CheckListBox: удалить выбранные итемсы
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
- Сейчас_не_спящий
- Сообщения: 46
- Зарегистрирован: 26 янв 2007, 17:06
- Откуда: Беларусь, Гомель
- Контактная информация:
Доброго времени суток.
Проблема такая: есть CheckListBox. Добавить в него строку или очистить полностью я могу без проблем, а вот удалить из списка выбранные компоненты никак. Плиз помогите, тот бред что я писал для решения этой задачи (код) писать не буду, не хочу позориться, лучше один раз посмотреть на правильный код. Заранее благодарю.
Проблема такая: есть CheckListBox. Добавить в него строку или очистить полностью я могу без проблем, а вот удалить из списка выбранные компоненты никак. Плиз помогите, тот бред что я писал для решения этой задачи (код) писать не буду, не хочу позориться, лучше один раз посмотреть на правильный код. Заранее благодарю.
Всё не знает никто, но важно найти того кто знает нужное...
- Сейчас_не_спящий
- Сообщения: 46
- Зарегистрирован: 26 янв 2007, 17:06
- Откуда: Беларусь, Гомель
- Контактная информация:
А хотя вообще причём тут позориться, все так начинали, ну, может почти все
Вот код. Исправьте или напишите правильный плиз.
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
for i := 0 to CheckListBox1.Count -1 do
if CheckListBox1.Checked then
CheckListBox1.Items.Delete(i);
end;
Вот код. Исправьте или напишите правильный плиз.
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
for i := 0 to CheckListBox1.Count -1 do
if CheckListBox1.Checked then
CheckListBox1.Items.Delete(i);
end;
Всё не знает никто, но важно найти того кто знает нужное...
-
- Сообщения: 273
- Зарегистрирован: 30 июн 2005, 14:53
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
i:=0;
while i<CheckListBox1.Count do
if CheckListBox1.Checked then CheckListBox1.Items.Delete(i) else Inc(i);
end;
var
i : integer;
begin
i:=0;
while i<CheckListBox1.Count do
if CheckListBox1.Checked then CheckListBox1.Items.Delete(i) else Inc(i);
end;
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
- Сейчас_не_спящий
- Сообщения: 46
- Зарегистрирован: 26 янв 2007, 17:06
- Откуда: Беларусь, Гомель
- Контактная информация:
! Супер ! Или скорее ужас.. Как я раньше не додумался через Пока сделать.. Мдя...
Пока спал даже придумал свой способ, не через While (Наверное тупейший способ который можно придумать, но всё же способ): через if not, тут считываются те что не выбраны и присваиваются переменной или записываются в файл, потом Items.Clear и записать итемсы из файла или считать с переменной... Вот такое может присниться ночью..=))
Благодарю за помощь.
Пока спал даже придумал свой способ, не через While (Наверное тупейший способ который можно придумать, но всё же способ): через if not, тут считываются те что не выбраны и присваиваются переменной или записываются в файл, потом Items.Clear и записать итемсы из файла или считать с переменной... Вот такое может присниться ночью..=))
Благодарю за помощь.
Всё не знает никто, но важно найти того кто знает нужное...
- Сейчас_не_спящий
- Сообщения: 46
- Зарегистрирован: 26 янв 2007, 17:06
- Откуда: Беларусь, Гомель
- Контактная информация:
Ещё раз благодарю, код работает стабильно, но есть одно но: я не по школьной программе учу Дэлфи (т.е. мне дайте код, а я принесу и от меня отвяжутся или тип того), а для себя ( т.е. ещё и пытаюсь разобраться в коде). Итого к делу: что за оператор Inc? В учебниках найти его не смог. Если можно по подробнее о нём (тип, что выполняет, исключения и т.д.) Заранее благодарен." писал(а):Inc(i);
Всё не знает никто, но важно найти того кто знает нужное...
-
- Сообщения: 273
- Зарегистрирован: 30 июн 2005, 14:53
...........Сейчас_не_спящий писал(а):Итого к делу: что за оператор Inc?
i:=i+1
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
Вообще хелп есть
inc(i) -> i:=i+1;
inc(i,x) -> i:=i+x;
inc(i) -> i:=i+1;
inc(i,x) -> i:=i+x;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
-
- Сообщения: 340
- Зарегистрирован: 22 ноя 2004, 19:15
- Откуда: Минск
- Контактная информация:
Сейчас_не_спящий писал(а):А хотя вообще причём тут позориться, все так начинали, ну, может почти все
Вот код. Исправьте или напишите правильный плиз.
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
for i := 0 to CheckListBox1.Count -1 do
if CheckListBox1.Checked then
CheckListBox1.Items.Delete(i);
end;
Опиш твою ошибку тоже так раньше попадалась
Допустми у тебя 50 итемов в твоем листе
Ты ставишь галочки с 1-20
Идет твой цикл 1-20 удалились все нормально.
И число итемов уже осталось 30
НО в цикле у тебя бежит до 50 (как было изначально)
И когда заходит на items[30]. возникакет ошибка
поэтому самылй лучший выход использовать while or repeat
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
- Сейчас_не_спящий
- Сообщения: 46
- Зарегистрирован: 26 янв 2007, 17:06
- Откуда: Беларусь, Гомель
- Контактная информация:
Есть ещё одна проблемка, хотя может для неё уже надо было бы создать новую тему, но, всё же, так сказать не отходя далеко от темы.
Вот занулёванный код (все имена компонентов по дэфолту и убрано всё лишнее):
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CheckLst;
type
TForm1 = class(TForm)
CheckListBox1: TCheckListBox;
Button1: TButton;
Button2: TButton;
ComboBox1: TComboBox;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
CheckListBox1.Items.Add(ComboBox1.Text);
ComboBox1.SetFocus;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i : integer;
begin
i := 0;
while i < CheckListBox1.Count do
if CheckListBox1.Checked then
CheckListBox1.Items.Delete(i)
else
Inc (i);
end;
end.
Как исходя из него сдалать так, чтобы в случае если ни один компонент не выбран Батон2 был не активный? Вариантов несколько было придумано (все основаны на onClickCheck и SelCount - может это изначально не правильно
), но любой в какой-то момент даёт сбой. Плиз хэлп.
Вот занулёванный код (все имена компонентов по дэфолту и убрано всё лишнее):
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CheckLst;
type
TForm1 = class(TForm)
CheckListBox1: TCheckListBox;
Button1: TButton;
Button2: TButton;
ComboBox1: TComboBox;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
CheckListBox1.Items.Add(ComboBox1.Text);
ComboBox1.SetFocus;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i : integer;
begin
i := 0;
while i < CheckListBox1.Count do
if CheckListBox1.Checked then
CheckListBox1.Items.Delete(i)
else
Inc (i);
end;
end.
Как исходя из него сдалать так, чтобы в случае если ни один компонент не выбран Батон2 был не активный? Вариантов несколько было придумано (все основаны на onClickCheck и SelCount - может это изначально не правильно

Всё не знает никто, но важно найти того кто знает нужное...
-
- Сообщения: 340
- Зарегистрирован: 22 ноя 2004, 19:15
- Откуда: Минск
- Контактная информация:
Что ты имееш ввиду под
если ни один компонент не выбран
если ни один компонент не выбран
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.