Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.044 c
1-1104851735
AlexXn
2005-01-04 18:15
2005.01.23
Странный баг


1-1105614098
Игорь нтк
2005-01-13 14:01
2005.01.23
Radiogroup


14-1104847783
Кудесник
2005-01-04 17:09
2005.01.23
Подскажите программу для быстрый ввода символа...


1-1105458340
Gear
2005-01-11 18:45
2005.01.23
А как сделать в процессе выполнения программы не главное окно ...


1-1104954335
Express
2005-01-05 22:45
2005.01.23
Canvas





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский