Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.02.11;
Скачать: [xml.tar.bz2];

Вниз

Прокрутка при DragDrop   Найти похожие ветки 

 
BorisM   (2002-01-23 07:24) [0]

Подскажите, как правильно сделать прокрутку в TreeView когда происходит Drag&Drop. Сама прокрутка у меня работает, но на дереве остается "мусор". Пробовал даже делать Repaint, все равно не помогает.

Код такой:

procedure TMainForm1.T1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if (Source is TLsFileListView28) or (Source is TDATreeView) then
Accept := true
else
begin
Accept := False;
exit;
end;
if Y > T1.Height - Sb1.Height - 10 then
T1.Perform(WM_VSCROLL, SB_LINEDOWN, 0)
else
if Y < 10 then
T1.Perform(WM_VSCROLL, SB_LINEUP, 0);
T1.Repaint;
end;


T1: TDATreeView;
SB1: TScrollBar;
TDATreeView отличается от обычного TreeView только тем, что позволяет делать Drag&Drop внутри себя.

И попутно второй вопрос. Как узнать какая будет высота горизонтальной полосы прокрутки по умолчанию при текущем разрешении экрана? А то приходиться ставить невидимую полоску на форму и брать ее Height.

Спасибо.


 
sky3d   (2002-01-23 09:25) [1]

По второму вопросу..
GetSystemMetrix SM_CXVSCROLL, SM_CYVSCROLL


 
nikkie   (2002-01-23 09:48) [2]

а ты не пробовал делать T.ScrollBy(DX, DY)?

уточнение к sky3d - функция называется GetSystemMetrics, нужный параметр SM_CYHSCROLL


 
BorisM   (2002-01-23 16:07) [3]

За GetSystemMetrics спасибо. Очень полезная функция - возьму на вооружение.
С T1.ScrollBy(DX,DY) еще хуже, чем с T1.Perform(..) Теперь программа просто размножает крайнюю верхнюю или нижнюю сторку при сдвиге.
Нашел вот этот пример http://support.microsoft.com/default.aspx?scid=kb;EN-US;q177743
Возможно нужно просто вставить задержку.


 
BorisM   (2002-01-23 18:58) [4]

Задержка не помогает. Какие будут еще предложения?


 
nikkie   (2002-01-23 19:18) [5]

причем здесь задержка? ты Sleep пытался делать что ли?

а если сделать просто как в этом примере на VB - на DragOver включаем таймер и скроллируем по событию от таймера?


 
BorisM   (2002-01-24 07:38) [6]

Нет не Sleep. Пробовал привязать к таймеру как в этом примере. Попробую теперь просто перевести весь пример из VB в Delphi.


 
BorisM   (2002-01-25 00:07) [7]

Перенес пример на Delphi один в один. Та же ерунда получается :(.
Могу прислать скриншот кому интересно. Придется не полениться и установить VB ради того, чтобы проверить этот HowTo в оригинале.


 
nikkie   (2002-01-25 09:44) [8]

ты лучше код пришли


 
DMN   (2002-01-25 11:19) [9]

Странно. А версия common controls у тебя правильная? А дерево не OwnerDraw? У меня твой код работает... На всякий случай - можно попробовать заменить Perform на

PostMessage(T1.Handle,WM_VSCROLL, SB_LINEDOWN, 0);


 
BorisM   (2002-01-25 19:49) [10]

Кажется нашел где собака зарыта.
Скроллинг при внутреннем DragDrop в TreeView работает нормально, но когда я хочу сделать DragDrop из TLsFilelistView28, при скроллинге в TreeView появляется "мусор". Я попробовал перетащить Item из простого FileListbox в мой TreeView и скроллинг тоже работает нормально. Похоже проблема с компонентом TLsFilelistView28. К тому же, когда я делаю Drag из него, курсор бывает блеклым и почему-то имя перетаскиваемого файла оказывается на разном расстоянии от самого курсора. Короче напишу автору TLsFilelistView28, либо посмотрю код сам.

Спасибо всем, кто участвовал в обсуждении.
Удачи



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.02.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.003 c
3-32127
nuk
2002-01-15 15:31
2002.02.11
поиск в DBLockupCombobox


3-32145
Corte
2002-01-16 06:33
2002.02.11
ОШИБКА


14-32337
vajo
2001-12-21 09:09
2002.02.11
Тестирование компьютера.


3-32178
Malyatko
2002-01-14 08:09
2002.02.11
База данных + Ini файл.


6-32300
Sectoid
2001-11-21 13:15
2002.02.11
У меня есть исходный код HTML ки. Как мне его глянуть в нормальном виде (как страничку, а не как код)???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский