Форум: "Начинающим";
Текущий архив: 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