| Цитата(PointerToNil @ 3.4.2014, 17:11) | | Код | procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean); begin if (Stage = cdPostPaint) and (cdsFocused in State) then Sender.Canvas.FrameRect(Node.DisplayRect(True)); // цвет остался от заливки // или - как вариант - DrawFocusRect инвертирует точки, так что второй раз по первому - и всё как было // DrawFocusRect(Sender.Canvas.Handle, Node.DisplayRect(True)); // Sender.Canvas.DrawFocusRect почему-то не пашет end;
|
|
Не лучший способ, имеются глюки с отрисовкой
Добрый человек помог строчкой, работает на ура: Perform(WM_CHANGEUISTATE,MAKEWPARAM(UIS_INITIALIZE,UISF_HIDEACCEL or UISF_HIDEFOCUS),0); Но к сожалению не прокомментировал ее ( Может кто подскажет, как она работает, что бы понять ее смысл. |