Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.02.22;
Скачать: CL | DM;

Вниз

Как отмечать записи в TListBox   Найти похожие ветки 

 
abhtr   (2009-01-12 09:30) [0]

Использую TListBox для выведения списка файлов, с которыми работаю либо с одним из всех, либо со всеми, либо с выбранными.
Когда надо выбрать несколько из всех, то пользуюсь левой кнопкой мышки с одновременным удержанием кнопки "Ctrl".
Можно ли сделать такой выбор (несколько из всех) но пользуясь не мышкой, а "горячей" кнопкой.
Пробовал на отработку кнопки использовать код:
iStr := lbxActWrOf.ItemIndex;
lbxActWrOf.Selected[iStr] := True;
не получилось.
Подскажите как можно это сделать.


 
MBo ©   (2009-01-12 09:41) [1]

Можно воспользоваться TCheckListBox


 
KilkennyCat ©   (2009-01-12 10:14) [2]


> iStr := lbxActWrOf.ItemIndex;
> lbxActWrOf.Selected[iStr] := True;


А собственно, что тут должно было получиться?

можно так, генофондно:
if MultiSelect then SendMessage(lbxActWrOf.Handle, LB_SETCARETINDEX, Value, 0)
   else SendMessage(lbxActWrOf.Handle, LB_SETCURSEL, Value, 0);

Хотя, я бы прсто переключил константу... фиг поймешь этих борландцев..


 
abhtr   (2009-01-12 10:54) [3]


> А собственно, что тут должно было получиться?

Если использовать Ctrl+Левая кнопка "мышки", то эти записи приобретают синий фон, который показывает, что у этих записей lbxActWrOf.Selected[iStr] = True
и затем, по этому признаку я определяю, какие из них выбраны.
То же самое я хочу сделать, только без "мышки".
Нажимаю, например, F5, и запись приобретает синий фон, и свойство ее
lbxActWrOf.Selected[iStr] становитья True.

Вариант с SendMessage не прошел. После нажатия кнопки со стрелкой, синий фон не остается на записи, которую я хотел отметить.


 
DFT   (2009-01-12 11:46) [4]

Не совсем коротко, но грамотно - это унаследовать свой класс от TListBox и перекрыть в нем процедуру обработчик
procedure WMChar(var Message: TWMChar); message WM_CHAR;
begin
 inherited;
 ... {нужный код}
end;


 
abhtr   (2009-01-12 12:37) [5]

После проб и ошибок пришел к выводу, что код:
iStr := lbxActWrOf.ItemIndex;
lbxActWrOf.Selected[iStr] := True;
работает.
НО! Когда я нажимаю кнопку со стрелкой вниз (или ввер) то установленное выделение снимается.
Подскажите как это избежать.


 
KilkennyCat ©   (2009-01-12 13:17) [6]


> Нажимаю, например, F5, и запись приобретает синий фон


а как тогда выбрать запись? стрелками клавиатуры? будет как раз проблема, аналогичная [5]

все-таки MBo более красивее предложил, во-первых, проще реализовать, во-вторых, проще работать как с клавиатуры, так и с мыши, и в-третьих - стандартный интерфейс.


 
MsGuns ©   (2009-01-13 00:37) [7]

Предпочитаю листбоксу стрингрид. Значительно функциональнее и гибче ИМХО


 
Германн ©   (2009-01-13 01:22) [8]


> MsGuns ©   (13.01.09 00:37) [7]
>
> Предпочитаю листбоксу стрингрид. Значительно функциональнее
> и гибче ИМХО
>

Но стрингрид не поможет автору. "Выделение" в стрингриде точно также снимется при нажатии на стрелку на клавиатуре.


 
MsGuns ©   (2009-01-13 12:36) [9]

>Германн ©   (13.01.09 01:22) [8]
>"Выделение" в стрингриде точно также снимется при нажатии >на стрелку на клавиатуре.

А вот нифига ни разу :)


 
Leonid Troyanovsky ©   (2009-01-13 18:25) [10]


> abhtr   (12.01.09 10:54) [3]

> То же самое я хочу сделать, только без "мышки".

ListBox.ExtendedSelect := False

--
Regards, LVT.



Страницы: 1 вся ветка

Текущий архив: 2009.02.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
1-1207677282
Тыщ
2008-04-08 21:54
2009.02.22
Как выравнить код и данные на границу 16 байт?


2-1231500357
Scot Storch
2009-01-09 14:25
2009.02.22
ID menu item


2-1231757559
Программер
2009-01-12 13:52
2009.02.22
Как выделить item в listbox?


1-1207894891
webpauk
2008-04-11 10:21
2009.02.22
проблема Listview


13-1122929437
Кузя
2005-08-02 00:50
2009.02.22
CAD-систему реально писать под .Net?