Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2015.03.08;
Скачать: [xml.tar.bz2];

Вниз

LVCustomDraw   Найти похожие ветки 

 
Егорка   (2009-11-24 20:33) [0]

здравствуйте !
подскажите пожалуйста как в листвью рисовать значки ? несколько
пробую
if (Stage=CDDS_ITEMPOSTPAINT)or(Stage=CDDS_POSTPAINT)then   ImageList_Draw(ImageList,10,dc,16,30,ILD_TRANSPARENT);
не получаецо :(


 
MTsv DN   (2009-11-25 07:52) [1]

А в чем конкретно проблема?
1. Устанавливаете у LV lvoOwnerDrawFixed
2. Отрисовываете элемент в OnDrawItem, а в OnMeasureItem устанавливаете размер элемента.


 
Егорка   (2009-11-25 12:21) [2]

эх ничего сибе
а зачем тогда LVCustomDraw ? я в нем цвета меняю, это вобще правильно ?
и при каких DrawAction и Stage (CDDS_PREPAINT,CDDS_ITEMPREPAINT и тд) что нужно делать\возвращать ?

> Отрисовываете элемент в OnDrawItem, а в OnMeasureItem устанавливаете
> размер элемента.

а каким образом вообще ,чет я вперся ,а метод тыка не работает


 
MTsv DN   (2009-11-25 18:28) [3]

Не обессудь, чейта придумывать было лень выдрал из своего проекта: http://ifolder.ru/15155296


 
Егорка   (2009-11-25 20:02) [4]

твой работает пока не растянеш форму
мой с твоей начинкой сразу такой становится,т.к. размер меняется при создании
и еще у меня виртуальный лист :) с такими вот опциями
[lvoEditLabel,lvoHeaderDragDrop,lvoRowSelect,lvoOneClickActivate,lvoInfoTip,lvoU nderlineHot,lvoOwnerData,lvoOwnerDrawFixed]
как быть, я задаю текст в LVData, а типерь ищо и в DrawItem писать ??? или что


 
Егорка   (2009-11-25 20:13) [5]

да и ищо , по "книге"

> lvoOwnerDrawFixed - список элементов одинаковой высоты,
> изображается пользовательским обработчиком OnDrawItem (этот
> стиль не следует использовать, если используется событие
> OnLVCustomDraw).

и еще утверждается

>  OnLVCustomDraw - вызывается для выполнения более детального
>  пользовательского рисования элементов и/или подэлементов
>  (а так же заголовка, и частей клиентской области, не содержащей
>  элементов). Этот обработчик будет работать, только если
>  в опциях отсутствует стиль lvsOwnerDrawFixed.
......
> ..........
> ...........................это самый гибкий и мощный инструмент
> для выполнения любого пользовательского управления процессом
> рисования в окне списка, с другой стороны - все так сложно,
>  что разобраться сразу во всех перипетиях довольно трудно

а по сути получается что кроме как сменить цвет,  OnLVCustomDraw нихрена больше ничо не может... или как ?
если он такой крутой ,фигли в нем нельзя рисовать ? или аффтар малясь ошибся ?


 
Егорка   (2009-11-25 20:51) [6]

у тебя ошибка в
function TForm1.lvMeasureItem(Sender: PObj; Idx: Integer): Integer;
begin
Result := MakeLong(250, 25);
end;

нафига там  MakeLong ??? просто  Result := 25;

вобщем работает,но вопрос остается, че делать с  LVData ?


 
Егорка   (2009-11-25 20:58) [7]

а также видимо не работает lvoUnderlineHot ?


 
MTsv DN   (2009-11-25 21:29) [8]

2 Егорка
Уважаемый, пост [3] читали? Вам наводку дали? Сказал же, выдрал из своего проекта. Курите мануалы.

А MakeLong, чтобы задать и ширину тоже.


 
MTsv DN   (2009-11-25 21:33) [9]

>но вопрос остается, че делать с  LVData ?
1. GetMem( p {: Pointer});
2. CopyMemory(P, @твои_данные, SizeOf(твои_данные));
3. LVData := P;
4. Когда с p "наигрался", FreeMem(p);


 
MTsv DN   (2009-11-25 21:36) [10]

> А MakeLong, чтобы задать и ширину тоже.
Погорячился. Из другого MeasureItem взял...


 
Егорка   (2009-11-25 22:03) [11]


> 1. GetMem( p {: Pointer});
> 2. CopyMemory(P, @твои_данные, SizeOf(твои_данные));
> 3. LVData := P;
> 4. Когда с p "наигрался", FreeMem(p);

а это зачем ?у меня виртуальный лист в OnLVData запрашиваются вполне конкретные данные
var Txt: KOL_String; var ImgIdx: Integer; var State: Cardinal;var Store: Boolean

я про то что если один фиг все рисуется с нуля то и OnLVData не нужно использовать а сразу все делать в OnDrawItem,пральна ?


 
Егорка   (2009-11-26 11:12) [12]

да и как рисовать в других столбцах ?


 
MTsv DN   (2009-11-26 12:00) [13]

Так же как и не в "других". У Вас же есть все необходимое?..


 
Егорка   (2009-11-26 13:51) [14]

ну так в
DrawItem(Sender: PObj; DC: HDC; const Rect: TRect;
 ItemIdx: Integer; DrawAction: TDrawAction;
 ItemState: TDrawState): Boolean;

нет столбцов , каким фигом это все происходит ?


 
MTsv DN   (2009-11-26 17:12) [15]

R_Name := PControl(Sender).LVSubItemRect(ItemIdx, 0);
S_Name := PControl(Sender).LVItems[ItemIdx, 0];

Что нибудь навевает?


 
Егорка   (2009-11-26 18:12) [16]

вроде как разобрался
гемороидальное занятие, не стоит того...
кстати LVSubItemRect(ItemIdx, 0) возвращает рект всей строки всех столбцов,что ни есть логично


 
MTsv DN   (2009-11-26 18:48) [17]

> кстати LVSubItemRect(ItemIdx, 0) возвращает рект всей строки всех столбцов,что ни есть логично
Ага. Где-то по форуму проскакивало, давным-давно...


 
L'Autour   (2009-11-27 06:53) [18]

Я выделял области отдельных элементов из общей строки используя ширину столбцов.


 
Егорка   (2009-11-27 10:08) [19]

есть проще вариант через LVItemRect



Страницы: 1 вся ветка

Форум: "KOL";
Текущий архив: 2015.03.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.042 c
15-1406193113
Vlad oshin pc_other
2014-07-24 13:11
2015.03.08
помогите с запросом..


2-1391182666
Мишаня
2014-01-31 19:37
2015.03.08
Как узнать количество дней выбранного месяца?


11-1258544846
Егорка
2009-11-18 14:47
2015.03.08
интерфейснутые классы


15-1406550400
nokia4ever
2014-07-28 16:26
2015.03.08
перевод на дельфи


15-1406179272
oldman
2014-07-24 09:21
2015.03.08
Русско-английский словарь по деловой переписке





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