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

Вниз

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 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.037 c
14-1105117258
xman
2005-01-07 20:00
2005.01.23
LOG соединения с инетом


1-1105108590
Кодер
2005-01-07 17:36
2005.01.23
Проблема с указателями


1-1105371563
td
2005-01-10 18:39
2005.01.23
словарь с ссылками


14-1103511545
VMcL
2004-12-20 05:59
2005.01.23
Забавные пристрастия программистов VB


3-1103290997
Sergio
2004-12-17 16:43
2005.01.23
перерисовка грида