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

解決


まこと  2006-09-23 08:53:21  No: 23346

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

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


えーと  2006-09-23 12:19:35  No: 23347

こんな感じでスタイルに 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 18:17:00  No: 23348

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

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

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


もにゃ  2006-09-25 22:48:21  No: 23349

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


まこと  2006-09-28 08:32:10  No: 23350

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加