Может кто сталкивался со следующей проблемой:
Есть компонент TTreeView с количеством items, достаточным, чтобы
появились горизонтальный и вертикальный скроллбары.
Отрисовка происходит в событии OnCustomDrawItem.
Так вот, если начинаю скроллить по вертикали — все нормально, по
горизонтали — появляется рябь. Есть ли ли способ решить проблему, не
переходя на VirtualTreeView?
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
var DC : HDC;
R : TRect;
begin
DefaultDraw := false;
DC := GetDC(TreeView1.Handle);
R := Node.DisplayRect(false);
MoveToEx(DC, R.Left, R.Top, nil);
LineTo(DC, R.Right, R.Bottom);
ReleaseDC(TreeView1.Handle, DC);
end;
Здравствуйте, magg, Вы писали:
M>Может кто сталкивался со следующей проблемой:
Вообще-то в этом событии принято рисовать на TreeView1.Canvas, а не средствами WinAPI. Попробуй, может помочь.
... << Rsdn@Home 1.1.4 beta 1 >>
Здравствуйте, ArtDenis, Вы писали:
AD>Здравствуйте, magg, Вы писали:
M>>Может кто сталкивался со следующей проблемой:
AD>Вообще-то в этом событии принято рисовать на TreeView1.Canvas, а не средствами WinAPI. Попробуй, может помочь.
Вообще то, я наоборот думал, что должен Win API помочь.
Все равно не катит
Здравствуйте, magg, Вы писали:
[]
M> Так вот, если начинаю скроллить по вертикали — все нормально, по
M> горизонтали — появляется рябь. Есть ли ли способ решить проблему, не
M> переходя на VirtualTreeView?
TreeView1.DoubleBuffered := True;
не помогает?
Здравствуйте, Flamer, Вы писали:
F>не помогает?
Или даже так
Form1.DoubleBuffered := True;
... << RSDN@Home 1.1.4 beta 2 >>
Здравствуйте, akasoft, Вы писали:
A>Здравствуйте, Flamer, Вы писали:
F>>не помогает?
A>Или даже так
A>A>Form1.DoubleBuffered := True;
A>
Та же песня во обоих случаях:
Form1.DoubleBuffered := True;
treeview1.DoubleBuffered := True;
Здравствуйте, <Аноним>, Вы писали:
А если одновременно в OnCreate формы, при условии что тривиев лежит сразу на форме, без промежуточных контейнеров:
Form1.DoubleBuffered := True;
treeview1.DoubleBuffered := True;
... << RSDN@Home 1.1.4 beta 2 >>
Здравствуйте, <Аноним>, Вы писали:
А>Та же песня во обоих случаях:
А> Form1.DoubleBuffered := True;
А> treeview1.DoubleBuffered := True;
А рисовал точно на Canvas? Или опять использовал GetDC(TreeView1.Handle)? При использовании GetDC не будет работать двойная буферизация.
... << Rsdn@Home 1.1.4 beta 1 >>