![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
прокрутка 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.