Конференция "KOL" » Горизонтальная прокрутка у TreeView...
 
  • MTsv DN © (03.12.07 18:10) [0]
    Всем привет...

    Возник вопрос: как убрать только горизонтальную прокрутку у 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);

    ?
  • MTsv DN © (03.12.07 19:10) [3]
    Респект... Работает...
  • volniy_strelok (02.04.08 17:59) [4]
    а не моглибы описать по подробнее куда нужно вписать

     WM_NCCALCSIZE:
        ShowScrollBar(tv.Handle,SB_HORZ,False)

    ?
  • Compiler © (02.04.08 18:33) [5]
    > куда нужно вписать

    В 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??? Где модераторы???
 
Конференция "KOL" » Горизонтальная прокрутка у TreeView...
Есть новые Нет новых   [134431   +15][b:0][p:0.002]