-
Всем привет...
Возник вопрос: как убрать только горизонтальную прокрутку у TreeView? Тот код, что я постоянно использую не прокатывает:WM_NCCALCSIZE:
begin
Style := GetWindowLong( frmMain.pnlDBJ_BT_CT.Handle, GWL_STYLE );
If (Style and WS_HSCROLL) <> 0 Then
SetWindowLong( frmMain.pnlDBJ_BT_CT.Handle, GWL_STYLE, Style and not WS_HSCROLL );
// SetWindowLong( frmMain.pnlDBJ_BT_CT.Handle, GWL_STYLE, Style or WS_VSCROLL );
inherited;
// Result := true;
end;
Если раскомментироватьResult := true;
, то получается как бы tvoNoScroll (т.е. скроллбаров нет), но прокрутка остается (это хорошо)... Пока можно и так использовать, но как-то "криво" это... А если раскомментировать:SetWindowLong( frmMain.pnlDBJ_BT_CT.Handle, GWL_STYLE, Style or WS_VSCROLL );
то это не решает проблему с "пропажей" вертикального скроллбара...
Может я слишком усложняю и есть более простой способ? У кого-нибудь есть идеи? -
MTsv DN (03.12.07 18:36) [1]pnlDBJ_BT_CT - это TreeView. Забыл избавиться от своего названия...
-
Дмитрий К © (03.12.07 19:01) [2]WM_NCCALCSIZE:
ShowScrollBar(tv.Handle,SB_HORZ,False);
? -
Респект... Работает...
-
volniy_strelok (02.04.08 17:59) [4]а не моглибы описать по подробнее куда нужно вписать
WM_NCCALCSIZE:
ShowScrollBar(tv.Handle,SB_HORZ,False)
? -
> куда нужно вписать
В OnMessage у TreeView'a -
volniy_strelok (03.04.08 11:19) [6]
> В OnMessage у TreeView
Такого нет в инспекторе объектов -
Дмитрий К © (03.04.08 11:56) [7]
> Такого нет в инспекторе объектов
TreeView или OnMessage? -
volniy_strelok (03.04.08 13:06) [8]Очень смешно :)
Но я серьездно не нашол события OnMessage у TreeView -
Дмитрий К © (03.04.08 13:37) [9]TKOLTreeView или TTreeView?
У TTreeView есть свойство HorzScrollBar. -
volniy_strelok (03.04.08 14:50) [10]Да TTreeView из стандартной библиотеки.
Но там нет ни свойства HorzScrollBar
ни события OnMessage -
Дмитрий К © (03.04.08 15:09) [11]
> нет свойства HorzScrollBar
Прошу прощения. Не туда посмотрел.
Для TTreeView будет примерно так:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls;
type
TMyTreeView = class(TTreeView)
private
procedure WMNCCalcSize(var Message: TMessage); message WM_NCCALCSIZE;
end;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
MyTreeView: TMyTreeView;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TMyTreeView }
procedure TMyTreeView.WMNCCalcSize(var Message: TMessage);
begin
ShowScrollBar(Handle,SB_HORZ,False);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MyTreeView := TMyTreeView.Create(Self);
MyTreeView.Parent := Self;
end;
end.
хотя, оффтоп это все. -
volniy_strelok (03.04.08 16:26) [12]хмм... у меня сейчас вот так
TMyTreeView = class(TTreeView)
private
Procedure WMNCCalcSize( Var msg: TMessage ); message WM_NCCALCSIZE;
end;
procedure TMyTreeView.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;
т.е. как я понимаю без написания собств коппонента не обойтись -
MTsv DN (04.04.08 18:16) [13]А почему в этой ветке обсуждения про TTreeView??? Где модераторы???