TTreeViewで横スクロールバーを消すには?

解決


まこと  2006-09-22 23:53:21  No: 23346  IP: 192.*.*.*

TTreeViewについて1点質問させてください。
TTreeViewの内容により、スクロールバーが自動的に出たり隠れたりしま
すが、横スクロールバーは常に隠しておきたいと思いました。消すタイ
ミングはOnAdditionなどのイベントで対応することとして、消すこと自
体はどのように行えばよいのでしょうか。

TListBoxの場合は下のようなコードで隠れることは確認できました。
同じようなメッセージがあるのでしょうか。
ListBox1.Perform (LB_SETHORIZONTALEXTENT, 0, 0);

編集 削除
えーと  2006-09-23 03:19:35  No: 23347  IP: 192.*.*.*

こんな感じでスタイルに TVS_NOHSCROLL を追加するとよいようです。

const
  TVS_NOHSCROLL = $8000;

procedure TForm1.FormCreate(Sender: TObject);
begin
  SetWindowLong(TreeView1.Handle,GWL_STYLE,
      GetWindowLong(TreeView1.Handle,GWL_STYLE) + TVS_NOHSCROLL);
end;

編集 削除
まこと  2006-09-23 09:17:00  No: 23348  IP: 192.*.*.*

回答どうもありがとうございます。
先ほど提示いただいたコードの動作を確認してみました。
ですが、横スクロールバーは確かに動かなくなったものの、
相変わらず表示されたままでした。

http://lukewarm.s101.xrea.com/misc/Styles.html

キーワードを元にこのページを探り当て、内容を見てみた
のですが、このページの説明でも確かに
「The control will not display any horizontal scroll bars.」
とは書いてあります。
Delphi6 Personal + WinXP Homeのよくある環境ですし、
環境による問題とは思えないのですが、他に何か必要な操作
があるのでしょうか。

編集 削除
もにゃ  2006-09-25 13:48:21  No: 23349  IP: 192.*.*.*

ちょっと試しただけですが、これでいけると思います。
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowScrollBar(TreeView1.Handle, SB_HORZ , False);
end;
不具合あったらレポートプリーズ

編集 削除
まこと  2006-09-27 23:32:10  No: 23350  IP: 192.*.*.*

返事が遅れてしまい,申し訳ありません。
もにゃ様の提示くださったコードを試したところ,うまくいきました。
本当に助かります。ありがとうございました。

編集 削除