Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Спрятать горизонтальную или вертикальную полосу прокрутки в TListView

Delphi , Компоненты и Классы , TListView

Спрятать горизонтальную или вертикальную полосу прокрутки в TListView

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

type
   TForm1 = class(TForm)
     ListView1: TListView;
     procedure FormCreate(Sender: TObject);
     procedure FormDestroy(Sender: TObject);
   private
     FListViewWndProc: TWndMethod;
     procedure ListViewWndProc(var Msg: TMessage);
   public
    { Private declarations }
     FShowHoriz: Boolean;
     FShowVert: Boolean;
   end;

    var
   Form1: TForm1;

 implementation

 {$R *.dfm}

 procedure TForm1.ListViewWndProc(var Msg: TMessage);
 begin
   ShowScrollBar(ListView1.Handle, SB_HORZ, FShowHoriz);
   ShowScrollBar(ListView1.Handle, SB_VERT, FShowVert);
   FListViewWndProc(Msg); // process message 
end;

 procedure TForm1.FormCreate(Sender: TObject);
 begin
   FShowHoriz := True; // show the horiz scrollbar 
  FShowVert := False; // hide vert scrollbar 
  FListViewWndProc := ListView1.WindowProc; // save old window proc 
  ListView1.WindowProc := ListViewWndProc; // subclass 
end;

 procedure TForm1.FormDestroy(Sender: TObject);
 begin
   ListView1.WindowProc := FListViewWndProc; // restore window proc 
  FListViewWndProc := nil;
 end;

Код, который вы предоставили, это проект на языке Delphi, демонстрирующий, как скрыть или отобразить горизонтальные и вертикальные полосы прокрутки для контрола TListView в реальном времени. Это достигается за счет подклассирования метода WindowProc ListView'а, что позволяет разработчику перехватывать и обрабатывать сообщения окон.

Вот подробное описание, что каждый процедура делает:

  1. FormCreate: Эта процедура вызывается при создании формы. Она устанавливает начальную видимость полос прокрутки:
    • FShowHoriz установлен в True, что означает, что горизонтальная полоса прокрутки будет отображаться.
    • FShowVert установлен в False, что означает, что вертикальная полоса прокрутки не будет отображаться.
    • Старый метод WindowProc сохраняется в FListViewWndProc.
    • Новый метод WindowProc, ListViewWndProc, присваивается контролу ListView. Этот метод перехватывает и обрабатывает сообщения окон для ListView.
  2. ListViewWndProc: Эта процедура обрабатывает сообщения окон для ListView. Это где вы можете настроить поведение ListView:
    • Вызывается ShowScrollBar с handle ListView, типом полосы прокрутки (горизонтальной или вертикальной) и флагом видимости (FShowHoriz или FShowVert). Это устанавливает видимость полосы прокрутки.
    • Затем вызывается оригинальный метод WindowProc (FListViewWndProc) для обхода любых других сообщений окон, которые могут быть отправлены.
  3. FormDestroy: Эта процедура вызывается при уничтожении формы:
    • Старый метод WindowProc (FListViewWndProc) восстанавливается в контроле ListView, что эффективно отменяет подклассирование.
    • Переменная FListViewWndProc устанавливается в nil, освобождая память.

Вот несколько предложений по улучшению:

  1. Рассмотрите использование булевого флага вместо отдельных переменных для FShowHoriz и FShowVert. Это позволит скрыть или отобразить обе полосы прокрутки одновременно с помощью одного свойства.
  2. Вам может потребоваться добавить обработку ошибок в случае, если контрол ListView не будетproperly инициализирован при создании формы.
  3. Если вам нужно динамически изменять видимость полос прокрутки, рассмотрите использование таймера или обработчика событий, который обновляет FShowHoriz и FShowVert соответственно.

В целом, этот код предоставляет хороший старт для настройки поведения контрола TListView в Delphi.

В статье описана процедура скрытия горизонтальной или вертикальной полосы прокрутки в компоненте TListView Delphi, которая заключается в подклассировании метода WindowProc и настройке показа scrollbar'ов.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TListView ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 13:43:26/0.0051360130310059/1