Войти

Показать полную графическую версию : [решено] Проблема с кнопкой выделить все


asacyra
11-03-2013, 08:26
я использую лист бокс. Он мне показывает результаты, но я все обыскал в интернете, но так и не нашел как к нему прикрутить кнопку или контекстное меню выделить все.
Заранее спасибо.

LilLoco
11-03-2013, 10:06
asacyra, в чем именно проблема?
Для выделения - пройтись по всем элементам и выделить.

asacyra
11-03-2013, 13:21
как видно на рисунке оно во одному отмечается а как сделать чтобы все сразу я вот именнно это не пойму

lxa85
11-03-2013, 13:32
asacyra, вам надо ввести отдельное поле или кнопку, назвать ее "Выделить всё". А по событию Click, Check или любому понравившемуся, создать обработчик, внутри которого поместить цикл, который "пробежится" по всем значениям listbox, и поставит статус checked=true или checked=1(по обстоятельствам).

Кстати, можете попробовать, хоть я и не уверен, ввести обработку нажатых клавиш. Я не знаю, позволяет ли listbox такое делать. И тогда в обработчике Ctrl+A сделать цикл.

asacyra
11-03-2013, 13:48
получается код
procedure TForm1.Button3Click(Sender: TObject);
begin
if select=true
then
begin
Listbox1.Checked:=true;
select:=false;
Button3.Caption:='Отменить все';
end
else
begin
Listbox1.Checked:=false;
select:=true;
Button3.Caption:='Выделить все';
end;
end;

asacyra
11-03-2013, 14:24
просто у меня экзамен по программированию и я все сделал все работает а с кнопкой этой проблемы

lxa85
11-03-2013, 14:48
asacyra, Не понятно, что этот код делает.
Чему равен select? Это глобальная переменная? Почему она используется?
Listbox1.Checked:=true;
Нет такого свойства у ListBox'ов!
Прикрепите проект. Можете убрать лишнее, если боитесь за ... "чего-то там".

asacyra
11-03-2013, 22:25
это проект взят из delphi sources на основе него я делаю работу. Брал его на основе шаблона посмотреть и понять что как делается

lxa85
11-03-2013, 23:39
ListView, а не ListBox.

Свойство Checkboxes определяет отображение индикатора с флажком около каждого элемента списка. Индикаторы можно устанавливать программно или их может изменять пользователь во время выполнения. Тогда узнать программно, установлен ли индикатор в некотором элементе Items[i], можно проверкой его свойства Checked. Например:
for i:=0 to ListView1.Items.Count-1 do
if ListView1.Items[i].Checked then
...;
ListView1.Items[i].Checked := true;
Взято здесь (http://beluch.ru/progr/100comp/3_6_3.htm)

Iska
12-03-2013, 00:29
Я думал, что речь таки про выделение ;).

asacyra
12-03-2013, 01:53
тоесть
procedure TMainForm.Button5Click(Sender: TObject);
var
i: Integer;
begin
for i:=0 to ListView1.Items.Count-1 do
ListView1.Items.Item[i].Selected:=true;


end;

lxa85
12-03-2013, 07:15
Iska, Там есть процедура SelectAll но что она делает я толком не понял.
И я думаю это не имеет смысла.
asacyra, да, именно так.

asacyra
12-03-2013, 07:51
большое всем спасибо за помощь :oszone:




© OSzone.net 2001-2012