Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.07.2011, 13:38   #1
fezilk25
Форумчанин
 
Регистрация: 01.08.2010
Сообщений: 124
По умолчанию ListView выделение нескольких элементов без Ctrl

Собсно нужно сделать мультивыделение простыми кликами, без Ctrl..
Чтобы строки в ListView были наподобие чекбоксов - нажал - выделил, нажал ещё раз - снял выделение.

Спасибо.
fezilk25 вне форума Ответить с цитированием
Старый 29.07.2011, 13:57   #2
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Свойства ListView:
Код:
Checkboxes := True;
ViewStyle := vsList;
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 29.07.2011, 14:35   #3
fezilk25
Форумчанин
 
Регистрация: 01.08.2010
Сообщений: 124
По умолчанию

необходим ViewStyle := vsReport;
чекбоксы появляются, но строка выделенной не остается
fezilk25 вне форума Ответить с цитированием
Старый 29.07.2011, 14:50   #4
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Цитата:
Сообщение от fezilk25 Посмотреть сообщение
необходим ViewStyle := vsReport;
Delphi 2009, работает отлично с vsList, а вот как раз с vsReport и не работает...

Цитата:
Сообщение от fezilk25 Посмотреть сообщение
чекбоксы появляются, но строка выделенной не остается
Код:
procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
//var
//  Item: TListItem;
begin
 Item := ListView1.GetItemAt(X, Y);
 if Item <>nil then
  Item.Selected := True;
end;
EDIT:
Код:
procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem;
  Change: TItemChange);
begin
  if not Item.Checked then
      Item.Selected := False;  
end;
Код:
// Делаем глобальной
var
  Item: TListItem;
Будь проще и люди к тебе потянутся

Последний раз редактировалось spamer; 29.07.2011 в 15:02.
spamer вне форума Ответить с цитированием
Старый 31.07.2011, 21:40   #5
fezilk25
Форумчанин
 
Регистрация: 01.08.2010
Сообщений: 124
По умолчанию

Код:
procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 Item := ListView1.GetItemAt(X, Y);
 if Item <>nil then
 begin
  Item.Selected := True;
  Item.Checked := true;
 end;
end;
Сделал так.
Но как сохранять выделение элементов при клике на другую строку?
fezilk25 вне форума Ответить с цитированием
Старый 01.08.2011, 00:06   #6
fezilk25
Форумчанин
 
Регистрация: 01.08.2010
Сообщений: 124
По умолчанию

И ещё вопрос вдогонку - как получить список отмеченных элементов (элементов, у которых значение чекбокса Checked) ?
fezilk25 вне форума Ответить с цитированием
Старый 01.08.2011, 07:16   #7
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Код:
begin
  for i := 0 to listview1.items.count-1 do
  begin
    if Listview1.Items[i].Checked then
   //  тут делаем какое нить действие
  end;
end;
ZuBy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выделение нескольких ячеек в VBA tohdom Microsoft Office Excel 22 27.06.2012 05:48
перемещение элементов Listview Anfall Компоненты Delphi 4 30.03.2012 04:24
StringGrid - выделение нескольких ячеек 6AZblJlb Общие вопросы Delphi 3 26.11.2010 22:48
выделение нескольких строк цветов в iwdbgrid multidron1 БД в Delphi 0 19.10.2010 12:40
Поиск нескольких элементов cneltyn Общие вопросы по Java, Java SE, Kotlin 4 27.10.2009 13:56