Helpers - компьютеры, интернет, программирование

Как программно прокручивать TTreeView?

A. Создайте приложение Delphi VCL Forms.

B. Поместите TTreeView на форму, назовите его tvTest и заполните его элементами и установите размер Treeview, чтобы полосы прокрутки были видны в TreeView, например:

введите описание изображения здесь

C. Поместите на форму кнопку и в ее обработчик кликов напишите такой код:

  procedure TForm1.btnScrollClick(Sender: TObject);
  begin
    tvTest.ScrollBy(tvTest.Width, 0);
  end;

D. Теперь запустите программу и нажмите кнопку. Предположительно, горизонтальная полоса прокрутки должна прокручиваться слева направо. Но ничего не происходит. Почему?

Итак, как я могу заставить полосы прокрутки (и с полосами прокрутки, конечно, содержимое) прокручиваться слева направо, справа налево, вниз или вверх?

Delphi 10.1 Berlin Update 2
Windows 7 x64 SP1

EDIT: когда я использую этот код (аналогично предложению Сами):

tvTest.ScrollBy(-3, -3);

...Я получаю это произведение современного искусства:

введите описание изображения здесь


  • попробуйте tvTest.ScrollBy(3, 3); и нажмите кнопку 5 раз, и вы поймете, почему 29.11.2016
  • Это делает только СОДЕРЖИМОЕ прокрутки TreeView, а не полосы прокрутки. Но после того, как я нажал кнопку несколько раз, я частично перетащил форму за пределы области экрана, и когда я перетащил ее обратно, содержимое TreeView снова было там, где оно было раньше. Таким образом, TreeView на самом деле не прокручивался, а только КАЖЕТСЯ прокручивается, и при перерисовке он был таким, как раньше! Почему? И как я могу действительно прокрутить Treeview? 29.11.2016

Ответы:


1

Чтобы прокрутить TreeView, отправьте его (или Perform) WM_VSCROLL< /a> и/или сообщения WM_HSCROLL .

tvTest.Perform(WM_HSCROLL, MakeWParam(SB_LINERIGHT, 0), 0);

or

tvTest.Perform(WM_VSCROLL, MakeWParam(SB_LINEDOWN, 0), 0);

См. соответствующую документацию сообщений для параметров.

ScrollBy — это оболочка VCL для ScrollWindow API, он сдвигает содержимое элемента управления. Это ярлык для рисования части клиента элемента управления, который прокручивается, открытые (пустые) части должны быть дополнительно окрашены. Обычно используется внутренней реализацией элемента управления. Не то, что вы ищете.

29.11.2016
  • Спасибо, это работает, но при каждом нажатии кнопки прокручивается очень мало, независимо от того, какие цифры я ставлю вместо нулей. Но мне нужно прокрутить его полностью слева направо и справа налево. Как это может быть сделано? 30.11.2016
  • Отправляйте несколько сообщений или используйте константы SB_PAGE__. Пожалуйста. 30.11.2016
  • Большое тебе спасибо! Я также искал SB_PAGERIGHT в Winapi.Windows. Но всегда, когда я загружаю Winapi.Windows в редактор IDE, происходит сбой IDE!! Вот почему так долго не отвечали. Кто-нибудь знает, почему IDE вылетает при загрузке модуля Winapi.Windows? 30.11.2016
  • @user1580348: Я только что открыл один из демонстрационных проектов VCL (SplitView), а затем открыл WinAPI.Windows, щелкнув его, а затем нажав Ctrl+Enter, и он открылся нормально, и я могу прокручивать и листать его и выполнять поиск. Возможно, вам нужно больше оперативной памяти на вашем компьютере или меньше файлов, открытых в IDE. 30.11.2016
  • @KenWhite: у меня 16 ГБ ОЗУ, много места на диске C: и всего несколько файлов, загруженных в IDE. Я также открываю WinAPI.Windows, щелкая по нему, а затем нажимая Ctrl+Enter. Несколько больших файлов в списке uses также загружаются очень долго, большинство других файлов загружаются очень быстро. 30.11.2016
  • Новые материалы

    Интуитивное понимание тензоров в машинном обучении
    Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

    Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
    Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

    Почему объяснимость так важна прямо сейчас?
    По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

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

    Создание простого слайдера изображений с помощью JavaScript
    Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

    Создание базы данных с помощью супергероя «Python»
    В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

    ИИ для чайников: руководство для начинающих по пониманию будущего технологий
    Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..