Форум: "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