Форум: "KOL";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
ВнизListView, lvoCheckboxes, lvoOwnerData - проблемка Найти похожие ветки
← →
Майк_110 (2004-05-29 11:57) [0]Преамбула: FAQ читал, и по форуму вроде искал. :)
1. Создаю ImageList из ресурса "CHECKBOX":ilCheck := NewImagelist(frmMain);
ilCheck.ImgWidth := 12;
ilCheck.ImgHeight := 12;
ilCheck.LoadBitmap("CHECKBOX", clFuchsia);
2. Далее - создаю ListView:lvItems := NewListview(panMid, lvsDetail, [lvoGridLines, lvoCheckboxes,
lvoRowSelect, lvoNoSortHeader, lvoFlatsb],
nil, nil, ilCheck);
3. Далее - добавляю один пункт по-обычному:lvItems.LVAdd("Item", -1, [lvisBlend], 1, -1, 0);
Работает. Т.е. "галочка" переключается.
Вариант №2 - с "виртуальным" ListView.
1. то же, что и выше.
2. то же, но с lvoOwnerData:lvItems := NewListview(panMid, lvsDetail, [lvoGridLines, lvoCheckboxes,
lvoRowSelect, lvoNoSortHeader, lvoOwnerData, lvoFlatsb],
nil, nil, ilCheck);
3. Чуть ниже:lvItems.OnLVData := TOnLVData( MakeMethod( lvItems, @lvItems_OnLVData ) );
4. Чуть выше :)procedure lvItems_OnLVData( Dummy: Pointer; Sender: PControl; Idx, SubItem: Integer;
var Txt: String; var ImgIdx: Integer; var State: DWORD;
var Store: Boolean );
begin
case SubItem of
0: Txt := arrCatItemRecs[Idx].id;
1: Txt := arrCatItemRecs[Idx].title;
end;
lvItems.LVItemStateImgIdx[Idx] := 1;
end;
Интересующая строка выделена жирным. Нужного эффекта не получается.
В чем подвох?
Неужели в виртуальном ListView нельзя использовать LVItemStateImgIdx ?
← →
Майк_110 (2004-05-29 11:59) [1]в принципе в procedure lvItems_OnLVData я могу менять ImgIdx, но... это ведь немножко другой коленкор :) не тот, что предполагался.
← →
Майк_110 (2004-06-02 22:10) [2]up
← →
Gandalf © (2004-06-04 18:53) [3]Насколькл я понимаю ты перепутал...
ListView1.LVItemImageIndex ( ImgIdx )
<>
ListView1.LVItemStateImgIdx ( State )
← →
Майк_110 (2004-06-05 06:58) [4]дык мне вроде бы надо как раз LVItemStateImgIdx (?)
т.е. когда есть и ImageIndex и StateImgIdx - должны отображаться две иконки подряд, вот мне нужно StateImgIdx, которая почему-то не влияет на отображение ListView с виртуальным содержимым. :(
← →
Vladimir Kladov (2004-06-05 10:52) [5]Когда список виртуальный, надо правильно устанавливать значение параметра
var State: DWORD;
, а присваивать уже ничего ничему не надо в обработчике.
← →
Майк_110 (2004-06-06 07:48) [6]
procedure lvItems_OnLVData( Dummy: Pointer; Sender: PControl; Idx, SubItem: Integer;
var Txt: String; var ImgIdx: Integer; var State: DWORD;
var Store: Boolean );
begin
case SubItem of
0: Txt := arrCatItemRecs[Idx].id;
1: Txt := arrCatItemRecs[Idx].title;
2: Txt := arrCatItemRecs[Idx].price;
end;
State := 1; // 0, 1, 2
end;
Изменение значения State ни на что не влияет в данном случае. По крайней мере внешне. :(
← →
Vladimir Kladov (2004-06-06 10:03) [7]shl 12
← →
Майк_110 (2004-06-06 23:59) [8]Фантастика :) как же я сам не догадался :))
Большое спасибо! Вероятно я где-то это упустил в документациях.
← →
Майк_110 (2004-06-07 21:14) [9]и напоследок.. резюме (для архива).
procedure lvItems_OnLVData( Dummy: Pointer; Sender: PControl; Idx, SubItem: Integer;
var Txt: String; var ImgIdx: Integer; var State: DWORD;
var Store: Boolean );
var
StateImgIdx: DWORD;
begin
case SubItem of
0: Txt := arrCatItemRecs[Idx].id; // column 1
1: Txt := arrCatItemRecs[Idx].title; // column 2
2: Txt := arrCatItemRecs[Idx].price; // column 3
end;
if (arrCatItemRecs[Idx].checked) then StateImgIdx := 2
else StateImgIdx := 1;
State := (State xor $F) or ((StateImgIdx and $F) shl 12);
end;
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c