Текущий архив: 2007.09.02;
Скачать: CL | DM;
Вниз
выделение в TListView Найти похожие ветки
← →
Darvin © (2007-08-09 09:41) [0]Здравствуйте. У меня есть компонет TListView в виде таблицы, причем у него стоит RowSelect = true. Мне нужно программно, а не щелчком мышки, выделить строку. Я для этого делаю следующее:
1) lvFactors.Items[0].Selected := true;
или
2) lvFactors.Selected := lvFactors.Items[0];
но строка визуально не подсвечивается так, как это было бы при выделении ее мышкой.
Как правильно выделить строку?
← →
Sonia © (2007-08-09 10:29) [1]HideSelection в False поставь
← →
Darvin © (2007-08-09 10:31) [2]>Sonia © (09.08.07 10:29) [1]
стоит. не помогает
← →
Sonia © (2007-08-09 10:50) [3]хм....мне помог..
← →
Sonia © (2007-08-09 10:51) [4]я использовала ваш 1) случай
← →
Darvin © (2007-08-09 10:51) [5]забавно...
← →
Sonia © (2007-08-09 10:52) [6]У меня выделяется сереньким...А что у вас происходит, вообще ничего не выделяет или выделяет, но не все? В каком событии вы это пишете?
← →
Darvin © (2007-08-09 10:56) [7]ничего не выделяет.
>В каком событии вы это пишете?
В обработчике нажатия на кнопку, лежащую на форме.
← →
Sonia © (2007-08-09 11:29) [8]А каким способом вы помещаете данные в ListView?
← →
Darvin © (2007-08-09 11:36) [9]lvFactors.AddItem ( Info.Name, nil );
lvFactors.Items.Item[N].SubItems.Add ( Info.ShortName );
← →
Sonia © (2007-08-09 11:42) [10]А может быть дело в индексах? Проверьте их, пошагово выполнив программу
← →
Darvin © (2007-08-09 11:47) [11]да все правильно заполняется....
Просто не выделяет
← →
Riply © (2007-08-09 11:50) [12]>[11] Darvin © (09.08.07 11:47)
А ListView, случайно, не должен ли быть в фокусе, чтобы показать выделение ?
← →
Darvin © (2007-08-09 11:59) [13]>Riply © (09.08.07 11:50) [12]
Пробовал и фокус включать как до, так и после выделения
lvFactors.SetFocus;
← →
Sonia © (2007-08-09 12:28) [14]Да нет, дело тут скорее всего не в фокусе.
Мы медленно, но упорно продвигаемся к цели :)
Кстати, у меня вообще lvFactors.Items.Item[N].SubItems.Add ( Info.ShortName ); не добавляется. :(
А выделение работает....
← →
Darvin © (2007-08-09 12:31) [15]Эта строка:
lvFactors.Items.Item[N].SubItems.Add ( Info.ShortName );
добавляет подпункты (столбцы таблицы), а не элементы ListView
← →
Sonia © (2007-08-09 12:38) [16]
> добавляет подпункты (столбцы таблицы), а не элементы ListView
ну понятно, что подпункты, но если они должны быть столбцами, тогда чем должны быть пункты?
← →
{RASkov} © (2007-08-09 12:44) [17]> [11] Darvin © (09.08.07 11:47)
А случаем xxDrawItemXxx не задавал?
Впрочем при:
ListView.HideSelection:=False;
ListView.RowSelect:=True;
.....
отлично все должно выделятся и так
ListView.ItemIndex:=N;
← →
Elen © (2007-08-09 12:46) [18]
> Darvin © (09.08.07 09:41)
А Так Выделять пробовал? :
ListView1.Selected:=ListView1.Items.Item[0];
ListView1.SetFocus;
← →
umbra © (2007-08-09 12:46) [19]а если еще lvFactors.Items[0].Focused := true ?
← →
Darvin © (2007-08-09 13:09) [20]Пробовал по-разному. Ничего не получается...
← →
{RASkov} © (2007-08-09 13:11) [21]> [20] Darvin © (09.08.07 13:09)
Перекрестись....
Ну серьезно.... у всех получается, а у тебя нет....
Покажи описание формы и код где пытаешься выделять...
← →
Loginov Dmitry © (2007-08-09 13:19) [22]ListView1.ItemIndex := Index;
ListView1.Selected.Focused := True;
← →
Darvin © (2007-08-09 13:27) [23]Вот код процедуры:
lvFactors : TListView;
procedure Fill;
var
I, J, N : Integer;
Col : TListColumn;
begin
if FFactors.Count > 0 then begin
// Очистка
if lvFactors.Items.Count > 0 then
lvFactors.Clear;
lvFactors.Items.BeginUpdate;
// Заполнение
for I:=0 to FFactors.Count - 1 do begin // По всем участкам
N := 0;
// По показателям
for J:=0 to FFactors.Items[I].FactorsCount - 1 do begin
// Название показателя
if I = 0 then begin
lvFactors.AddItem ( <имя показателя>, nil );
lvFactors.Items.Item[N].SubItems.Add ( <короткое имя показателя> );
end;
// Значение
if J = 0 then begin // Для первого показателя добавляем колонку
Col := lvFactors.Columns.Add;
Col.Caption := IntToStr ( (I+1) * 5 );
end;
// Заносим значение показателя
lvFactors.Items.Item[N].SubItems.Add ( FFactors.Items[I].Values[J] );
Inc(N);
end;
end;
end;
// Выделить первую строчку
if lvFactors.Items.Count > 0 then begin
// lvFactors.Items[0].Selected := true;
// lvFactors.Selected := lvFactors.Items[0];
lvFactors.ItemIndex := 0;
ShowDynamic;
end;
lvFactors.Items.EndUpdate;
end;
← →
Loginov Dmitry © (2007-08-09 13:31) [24]Ну и где устанавливаешь фокус на нужную строчку?
← →
Elen © (2007-08-09 13:33) [25]
> if lvFactors.Items.Count > 0 then begin
Оно хоть попадает сюда?
← →
Darvin © (2007-08-09 13:36) [26]Делал по разному внутри этого кода:
// Выделить первую строчку
или:
if lvFactors.Items.Count > 0 then begin
lvFactors.Items[0].Selected := true;lvFactors.Selected := lvFactors.Items[0];
или:lvFactors.ItemIndex := 0;
добавлял:lvFactors.SetFocus;
ShowDynamic;
end;
← →
{RASkov} © (2007-08-09 13:40) [27]> [26] Darvin © (09.08.07 13:36)
> ShowDynamic;
Что там делается?
← →
Darvin © (2007-08-09 13:46) [28]>{RASkov} © (09.08.07 13:40) [27]
Комментирование этой процедуры эффекта не дает
← →
Loginov Dmitry © (2007-08-09 13:48) [29]
> Делал по разному внутри этого кода:
Почитай, о чем тебе пишут в этой ветке. Глядишь - поможет!
← →
{RASkov} © (2007-08-09 13:53) [30]> [28] Darvin © (09.08.07 13:46)
Не верю, что вот так не выделит:if lvFactors.Items.Count > 0 then begin
lvFactors.ItemIndex := 0;
lvFactors.SetFocus;
end;
Единственное я не прослеживал операторные скобки в [23], может и всамом деле [25] - т.е. не поподает?
if FFactors.Count > 0 then begin
← →
Darvin © (2007-08-09 14:00) [31]>Единственное я не прослеживал операторные скобки в [23], может и всамом деле [25] - т.е. не поподает?
Я ставил внутри Beep - попадает
← →
Sonia © (2007-08-09 14:02) [32]Я думаю, вам стоит пошагово выполнить кусок, на который вам указывает народ. Вам самому надо проявить инициативу, за вас проблему никто не сможет решить :)
← →
Darvin © (2007-08-09 14:03) [33]Спасибо всем!
Я понял из общения, что проблема не в данной процедуре, а где-то в другом месте. Буду искать.
Страницы: 1 вся ветка
Текущий архив: 2007.09.02;
Скачать: CL | DM;
Память: 0.54 MB
Время: 0.024 c