Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать, чтобы TreeView прокручивался при таскании узлов? [D5, WinXP]


Ivan Pashkov ©   (2004-10-29 16:34:00) 

Есть TreeView, в котором узлы таскаются с места на место (DragMode=dmAutomatic). Проблема: когда тащится какой-то узел, невозможно его перетащить в область того же TreeView, которая в данный момент не помещается в видимой области. По идее TreeView должен прокручиваться в такой ситуации, а он, скотина, не прокручивается. Как сделать, чтобы прокручивался? Заранее большое спасибо!


Анонимщик   (2004-10-29 18:40:00) [1]

А я запустил свою старую программу - так в ней все прокручивается. Видимо, нужно смотреть на параметры внимательно.


Ivan Pashkov   (2004-10-29 18:12:00) [2]

Это работает, но очень грязно - мусор на экране остается. Если делать Invalidate или BeginUpdate/EndUpdate, то тогда мерцание сплошное...


inic   (2004-10-29 16:45:00) [3]

Ivan Pashkov   (29.10.04 16:34)

Или вот такой грубоватый вариант


procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
 State: TDragState; var Accept: Boolean);
var t: TTreeNode;
begin
 if Y >= 0 then begin
   t := TreeView1.GetNodeAt(X, Y);
   if t <> nil then
     t.MakeVisible;
 end
 else begin
   t := TreeView1.GetNodeAt(X, 0);
   if t <> nil then
     if t.GetPrevVisible <> nil then
       t.GetPrevVisible.MakeVisible;
 end;
end;


MBo   (2004-10-29 16:39:00) [4]

в OnDragOver нужно следить за координатами и вовремя прокручивать


Наверх

Титульная страница Поиск, карта сайта Написать письмо