• ベストアンサー

例えばエクスプローラの様に左と右の幅を自由に変更する方法

教えてください、お願いします。 VBで、2つのコントロール、例えば右にテキストボックス、左に ファイルリストボックスを貼り付け、その境界をつかんで自由に 双方のサイズを変更する方法はありますでしょうか? もちろん、作成中ではなく、実際に起動した状態での話しです。 起動後に動的にコントロールの大きさを変更する、とでも 言えばよいのでしょうか。 例えばWindowsのエクスプローラでは、左にツリー状にフォルダが 表示され、右にその内容が表示されていますが、境界をつかめば 自由にサイズ変更ができますよね。 そんな感じにしてみたいのです。 Form_Resizeイベントに記述した場合は、動的に変更するのではな くなります。 よろしくお願いします!!!

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

http://oshiete1.goo.ne.jp/kotaeru.php3?q=399063 過去スレを読んでおいてください。 んでFormのリサイズイベントは変更終了をVBが受けたときに起こります。 エクスプローラのような動きをするためには、変更中を取得する必要があります。 参考URLの837の「ウィンドウサイズが変更中であることを判定する 」を参考にしてください。 あとは、二つの表示幅を毎回算出、サイズ位置変更セットを行うことで、リアルタイムなサイズ変更が可能になります。

参考URL:
http://www.vbvbvb.com/jp/gtips/index0801.html
fujiyama2002
質問者

お礼

ご回答いただき、ありがとうございます。 過去スレも見てみました。 フック?確かに僕もいくつかのソフトを作成するのに 使用しています。 でもほとんど意味が分からずに使用していたようです。 イベントというのは結構複雑なものなのですね。 「ウィンドウサイズが変更中であることを判定する 」というのは とても参考になりそうです。 ぜひ試させていただきます。 ありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.5

おすすめ

参考URL:
http://www.grapecity.com/japan/support/database/P1_22.htm
fujiyama2002
質問者

お礼

ありがとうございました!!!

全文を見る
すると、全ての回答が全文表示されます。
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.4

エクスプローラサンプル

参考URL:
http://www.mvps.org/btmtz/vbexplorer/
fujiyama2002
質問者

お礼

ありがとうございます。 DLして見てみましたが、これすごくよくできてますねぇ。 難解なコードばかりでしたが、チャレンジしてみたいと思います!

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

私も作ってみました。 質問をよく読まなかったので、 【左にテキストボックス、右にファイルリストボックス】 で作ってしまいました。 もう回答が入っていたので、必要なければ読み飛ばしてください。 Option Explicit Dim Hzn_X As Single Dim Hzn_Y As Single Private Sub File1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)   Form1.MousePointer = 0 End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)   If (Button = vbLeftButton And Form1.MousePointer = 9) Then     Hzn_X = X     Hzn_Y = Y   End If End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)   If (Button = 0) Then     If (Y > Text1.Top And Y < Text1.Top + Text1.Height And X > Text1.Left + Text1.Width And X < File1.Left) Then       Form1.MousePointer = 9     Else       Form1.MousePointer = 0     End If   ElseIf (Button = vbLeftButton) Then     If (Text1.Width + (X - Hzn_X) > 500 And File1.Width + (Hzn_X - X) > 500) Then       Text1.Width = Text1.Width + (X - Hzn_X)       File1.Width = File1.Width + (Hzn_X - X)       File1.Left = File1.Left + (X - Hzn_X)       Hzn_X = X     End If   End If End Sub Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)   Form1.MousePointer = 0 End Sub

fujiyama2002
質問者

補足

ご回答いただき、ありがとうございます! 必要ないなんてとんでもない。 すごく参考になります。 このままコピペさせていただいてもいいくらいです。 教えていただいたコードを参考に試行錯誤してみたいと 思います。 詳細なご説明をいただき、ありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

素人のおもいつきです。他に本格的な方法がありそうですが・・・ 左にファイルリストボックス(File1)、 右にテキストボックス(Text1) このコントロールの間に、イメージ(Image1)を貼り付け、  高さ(Height)はファイルリストボックスの高さくらい、  幅(Width)は極力狭くして、(60くらい)  BorderStyleを1-実線、  MousePointerを9-サイズ(左右) にします。 Image1のイベントを下のようにします。制限等が必要なら書き加えて下さい。 上下も同じように出きますね。ご参考に。 Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, _                        X As Single, Y As Single)   File1.Width = File1.Width + X   Text1.Left = Text1.Left + X   Text1.Width = Text1.Width - X   Image1.Left = Image1.Left + X End Sub

fujiyama2002
質問者

お礼

ご回答いただき、ありがとうございます! なるほどimageを使用するなんて方法があるのですね。 こういうのは僕では思いつかないんですよね。 すごく参考になります。 早速試させていただきます。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • フォームがリサイズされた時の各コントロールの位置変更コードについて

    教えてください。 前々から疑問だったのですが、VBでフォームをリサイズした場合に それぞれのコントロールもそれに合わせて大きさが変更されたり 移動したりという状態にするには、当然Form_Resizeのコードを 書く必要があると思うのですが、VBでツールを作成される方は 皆さんひとつひとつのコントロールの位置を計算しながら毎回 コードを書いているのでしょうか? OCXなどを使うと、勝手にコントロールの位置を調整してくれるものも ありますが、やはり皆さん自分でコードを書いていらっしゃるのでしょうか? 私が分かるのは、フォームにテキストボックスのみを貼り付けて、 Private Sub Form_Resize() Form1.text1.Top = 0 Form1.text1.Left = 0 Form1.text1.Width = ScaleWidth Form1.text1.Height = ScaleHeight End Sub と書くと、リサイズに合わせてテキストボックスが画面いっぱいにサイズ変更 するというものです。 コマンドボタンとか色々貼り付けた状態ではどのように書けばいいのか いまひとつ分かりません。 皆さんはどのようにされているのでしょうか? 是非是非教えてください。

  • 左○○px、右は残りの幅(100%-左px)ってできますか?

    CSSでレイアウトを組みたいと思ってます。 要は左と右に2つに割って左はpx単位で指定して、右は残りのサイズ、ウインドウのサイズ変更に伴って可変するようにレイアウトを組んでいきたいと考えています。 発想力が足りないのか、基礎的な知識が足りないのか・・・ どちらも足りないとは思いますが、おしえていただければ幸いです。 どうかよろしくお願いいたします。

    • ベストアンサー
    • HTML
  • 2カラムの左固定、右変動幅にするには?

    CSS初心者です。 ページ幅に合わせて右カラムの幅を変えたいのですが 左カラムを固定にして右カラムだけ変動させるにはどのようにしたら良いですか? カラム全体をBOXで囲んで幅を決めてその中で 左カラムの幅を固定にして 右カラムの幅を100%としたところ 右カラムのフローティングが崩れて左カラムの下に表示されてしまいます。

    • ベストアンサー
    • CSS
  • DataGridで左詰め、右詰めの表示。

    VB2005です。 表題のようにDataGridにおいて列ごとに左詰め、右詰めと決めて表示したいのですが、その設定法が解りません。教えてください。

  • 左100px 中100% 右100px

    CSSを利用して、 左100px 中100% 右100px とし、 中のサイズはブラウザのサイズを変更しても変わらないようにしたいのですが、 floatやmarginなどを駆使しても 左 中 右 のように回り込んでしまったり、 中のサイズが文字数分だけしか幅が広がらなかったりします。 テーブルなら簡単にいくのですが。。。 CSSだけで 左100px 中100% 右100px のデザインを描画するのは可能でしょうか?

    • ベストアンサー
    • CSS
  • 左ワンクリックでエクスプローラ表示したい

     マイコンピュータの中身を見る時などにツリー表示(エクスプローラ表示)したいのですが、右クリック→エクスプローラ表示ならできるのですが、左ワンクリックでエクスプローラ表示出来れば快適だろうなぁと思っています。やり方がありましたら教えてください。

  • 1フォーム上でメニューを切り替えたい

    こんにちは。Windows Formについてお教えください。言語はVBです。 フォームには左メニュー、右メニューが配置されています。 左メニューのボタンをクリックすることにより、右メニューに表示される項目を変更しようと思います。 右メニューの大きさは常に固定にしようと思っています。 1つのフォーム上で、右メニューの中身を変更するには、どのようなコントロールを使えばいいのでしょうか? または、複数フォームを作って、それを右メニューで呼び出すというやり方になるんでしょうか? よろしくお願いいたします。

  • PDFを2枚から1枚にまとめるとき、右から左にした

    表題のとおりです。 現在雑誌の見開き2ページx100程のデータがあります。 これを、見開き2ページを1ページにまとめたいのです。 AcrobatのPDF印刷、レイアウト設定→シートごとのページ数:2 で出力しています。 ただ右→左読みの雑誌なのですが、1ページにまとめると 左→右の順番でまとまってしまいます。 印刷のレイアウト設定の項目でも左が1で右が2になっています。 読み上げ方向設定は『右から左』へは変更してあり、 実際表示も右→左となっています。 やりかたはどのような方法でもかまいません。 宜しくお願いいたします。

  • VBのアイコンを表示させたくない

    こんにちは。 いつもお世話になっております。 早速ですが、ご教示下さい。 VBでFormを作成し表示していますが、アイコンが出てきてしまいます。 当初、「Control Box」プロパティをFalseにしていたのでアイコンが何も表示されていませんでした。 しかし、Trueに変更したところVBの標準のアイコンが表示されるようになりました。 私としてはアイコンは何も出したくないのですが。。 また、「Control Box」プロパティがFalseのFormにはアイコンが設定できません。 画面に統一感が出せなくて困っています。 よい方法がありましたら教えて下さい。よろしくお願いします。 環境:Windows NT,VB 5.0

  • 2段組レイアウトのCSSについて。左幅:可変/右幅:固定

    http://desperadoes.biz/style/dan/1-g.html こちらのような2段組を想定しています。 (ブラウザウィンドウのサイズを変えたりして、スタイルの効き方を確認してみて下さい。) 上記ページの例ですと、左幅:固定、右幅:可変となっていますが、 私が希望するのは、その逆です。 つまり、左幅:可変、右幅:固定です。 どのようなスタイルを指定すれば良いか、どなたか教えて下さい。 --------------------------------------------- ちなみに、上記ページのスタイルは、 http://desperadoes.biz/style/dan/ で確認できます。 「TYPE C-4 左ボックスのみ幅固定。幅 : 100%」のタイプになります。 --------------------------------------------- 私の考えでは、右と左を逆にすれば、目的を達成できるのかな? なんて思い、下のように記述してみましたが、ダメでした。 #my_navigation {margin-right: 150px;} #my_contents {float : right ; width : 150px ;}

    • ベストアンサー
    • HTML
このQ&Aのポイント
  • 小学生5年生のクラスには問題行動をする生徒がいます。静かにするように言っても聞かないため、先生が言うと静かになるのはなぜでしょうか。
  • 問題児として知られるAくんは感情的であり、鬼ごっこでタッチされただけでも暴力をふるったり、暴言をはきます。
  • この問題行動がクラス全体に波及し、クラスの雰囲気が悪化しています。この問題を解決する方法はありますか?
回答を見る