Главная страница
    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.06 c
4-1102308444
Павел
2004-12-06 07:47
2005.01.23
Открытие из программы текстового файла в блокноте.


14-1104637934
Думкин
2005-01-02 06:52
2005.01.23
С днем рождения! 2 января


1-1105102241
If...than
2005-01-07 15:50
2005.01.23
Не сохраняет документы!


1-1105544827
chir
2005-01-12 18:47
2005.01.23
Sender... кто же вызвал процедуру?...


1-1105377770
Ivan Pashkov
2005-01-10 20:22
2005.01.23
Есть у кого dcc32.exe для Delphi 2005?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский