![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Горизонтальная прокрутка у TreeView...
MTsv DN © (2007-12-03 18:10:00)Всем привет...
Возник вопрос: как убрать только горизонтальную прокрутку у 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 (2008-04-04 18:16:00) [1]А почему в этой ветке обсуждения про TTreeView??? Где модераторы???
volniy_strelok (2008-04-03 16:26:00) [2]хмм... у меня сейчас вот так
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;
т.е. как я понимаю без написания собств коппонента не обойтись
Дмитрий К (2008-04-03 15:09:00) [3]
> нет свойства 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 (2008-04-03 14:50:00) [4]Да TTreeView из стандартной библиотеки.
Но там нет ни свойства HorzScrollBar
ни события OnMessage
Дмитрий К (2008-04-03 13:37:00) [5]TKOLTreeView или TTreeView?
У TTreeView есть свойство HorzScrollBar.
volniy_strelok (2008-04-03 13:06:00) [6]Очень смешно :)
Но я серьездно не нашол события OnMessage у TreeView
Дмитрий К (2008-04-03 11:56:00) [7]
> Такого нет в инспекторе объектов
TreeView или OnMessage?
volniy_strelok (2008-04-03 11:19:00) [8]
> В OnMessage у TreeView
Такого нет в инспекторе объектов
Compiler (2008-04-02 18:33:00) [9]> куда нужно вписать
В OnMessage у TreeView'a
volniy_strelok (2008-04-02 17:59:00) [10]а не моглибы описать по подробнее куда нужно вписать
?
WM_NCCALCSIZE:
ShowScrollBar(tv.Handle,SB_HORZ,False)
MTsv DN (2007-12-03 19:10:00) [11]Респект... Работает...
Дмитрий К (2007-12-03 19:01:00) [12]
WM_NCCALCSIZE:?
ShowScrollBar(tv.Handle,SB_HORZ,False);
MTsv DN (2007-12-03 18:36:00) [13]pnlDBJ_BT_CT- это TreeView. Забыл избавиться от своего названия...