Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.02.22;
Скачать: [xml.tar.bz2];

Вниз

Как отмечать записи в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
3-1215425858
Александр В Б
2008-07-07 14:17
2009.02.22
Как работать с типом поля VARBYTES


2-1231503096
neveGreen
2009-01-09 15:11
2009.02.22
Дин аррай


2-1231656525
pavelkq
2009-01-11 09:48
2009.02.22
Пропорциональный ресайз картинки под Imagelist и DrawGrid


2-1231761180
pavelkq
2009-01-12 14:53
2009.02.22
Соединить 2 картинки.


2-1231861783
RUBEY
2009-01-13 18:49
2009.02.22
Исчезающая форма





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский