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

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

прокрутка ListView [D6]


Илья_С ©   (2007-09-23 16:52:00) 

Уважаемые мастера.
Как из ListView насовсем убрать горизонтальную прокрутку?
Спасибо.


Lacmus   (2007-09-24 19:30:00) [1]

Вообщем то и стиль WS_HSCROLL присутствует, хотя видимой полосы прокрутки нет, наверно какие то особенности XP.


Leonid Troyanovsky   (2007-09-24 14:15:00) [2]


> Lacmus ©   (24.09.07 11:59) [3]

> После добавления элементов в ListView часть нижней рамки
> другого цвета,

На моем 2003 server (темы не используются)
эффект не проявляется.

--
Regards, LVT.


Lacmus   (2007-09-24 11:59:00) [3]

>Leonid Troyanovsky ©   (24.09.07 09:10) [2]

После добавления элементов в ListView часть нижней рамки другого цвета,
при изменении ширины какого либо столбца меняется ширина этой области.
Лечится SetScrollRange(Handle, SB_HORZ, 0, 0, True), возможно есть другое решение данной проблемы.

Часть моего DFM-файла



 object ListView1: TListView
   Left = 48
   Top = 32
   Width = 353
   Height = 305
   Columns = <
     item
       Caption = '123'
       Width = 200
     end
     item
     end
     item
     end
     item
     end
     item
     end>
   IconOptions.AutoArrange = True
   TabOrder = 0
   ViewStyle = vsReport
 end


Leonid Troyanovsky   (2007-09-24 09:10:00) [4]


> Илья_С   (23.09.07 16:52)  

> Как из ListView насовсем убрать горизонтальную прокрутку?

By Peter Below

type
 TNoHScrollListview = Class( TListview )
 private
   Procedure WMNCCalcSize( Var msg: TMessage ); message WM_NCCALCSIZE;
 end;

procedure TNoHScrollListview.WMNCCalcSize(var msg: TMessage);
var
 style: Integer;
begin
 style := getWindowLong( handle, GWL_STYLE );
 If (style and WS_HSCROLL) <> 0 Then
   SetWindowLong( handle, GWL_STYLE, style and not WS_HSCROLL );
 inherited;
end;


--
Regards, LVT.


Lacmus   (2007-09-23 19:02:00) [5]



unit Unit72;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ComCtrls, CommCtrl;

type
 TListViewEx = class(TListView)
   procedure WMNCPaint(var aMessage: TMessage); message WM_NCPAINT;
 end;

 TListView = class(TListViewEx);

 TForm72 = class(TForm)
   ListView1: TListView;
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form72: TForm72;

implementation

{$R *.dfm}

procedure TForm72.Button1Click(Sender: TObject);
var
 i: Integer;
begin
 ListView1.ViewStyle := vsReport;

 ListView1.Items.BeginUpdate;
 try
   for i := 0 to 100 do
     ListView1.Items.Add.Caption := 'Item' + IntToStr(i);
 finally
   ListView1.Items.EndUpdate
 end
end;

procedure TListViewEx.WMNCPaint(var aMessage: TMessage);
begin
 if (GetWindowLong(Handle, GWL_STYLE) and WS_HSCROLL) <> 0 then begin
   ShowScrollBar(Handle, SB_HORZ, False);
   SetScrollRange(Handle, SB_HORZ, 0, 0, True);
 end;
 inherited;
end;

end.


Наверх

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