Главная страница
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.027 c
9-1097696674
rydmi
2004-10-13 23:44
2005.01.23
Вращение спрайтов


1-1105399317
chir
2005-01-11 02:21
2005.01.23
OnChange - явный вызов


1-1105430544
AndyDel
2005-01-11 11:02
2005.01.23
Компонент типа Object Inspectora


1-1105439297
Jeka
2005-01-11 13:28
2005.01.23
работа с OpenDialog


1-1104840516
frEE)stylEr
2005-01-04 15:08
2005.01.23
Сохранить данные