![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обработка NM_CUSTOMDRAW в TreeView (WinCE) [Lazarus, WinCE]
Sax-mmS © (2008-09-27 00:43:00)При разработке приложения под WinCE (KOL+Lazarus) появилась необходимость в собственной отрисовке некоторых узлов. По непонятной причине, сообщения c CDDS_ITEMPAINT (да и любые другие, кроме CDDS_PREPAINT) не приходят.
вот пример обрабочика, вешаю через AttachProc
function ProcTVCustomDrawItem( Self_: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean;
var
CD: PNMLVCustomDraw;
...
begin
Result := False;
if (Msg.message = WM_NOTIFY) then
begin
CD := Pointer( Msg.lParam );
if longint(CD.nmcd.hdr.code) = NM_CUSTOMDRAW then
begin
Rslt := CDRF_DODEFAULT;
if CD.nmcd.dwDrawStage = CDDS_PREPAINT then
Rslt := CDRF_NOTIFYITEMDRAW
else
MsgOK(Format('0x%x', [CD.nmcd.dwDrawStage]));
end;
end;
end;
Sax-mmS (2008-09-28 11:45:00) [1]mdw, спасибо а пример. Косяк был в том, я не возвращал Result := True и сообщение уходило на дальнейшую обрабоку.
Compiler (2008-09-27 17:54:00) [2]Может заменить
> if CD.nmcd.dwDrawStage = CDDS_PREPAINT then
на
if LongBool(CD.nmcd.dwDrawStage and CDDS_PREPAINT) then
mdw (2008-09-27 16:14:00) [3]Посмотри как реализованна отрисовка в TKOLmdvTreeListEdit, там используется пользовательская отрисовка TreeView.