
教えてください。
前々から疑問だったのですが、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
と書くと、リサイズに合わせてテキストボックスが画面いっぱいにサイズ変更
するというものです。
コマンドボタンとか色々貼り付けた状態ではどのように書けばいいのか
いまひとつ分かりません。
皆さんはどのようにされているのでしょうか?
是非是非教えてください。
No.1ベストアンサー
- 回答日時:
私はいつもそれぞれについてResizeイベントのなかに記述しています。
でも、ScaleWidthプロパティとScaleHeightプロパティは、一種の関数みたいなもので、記述するごとに関数が呼び出されて効率が悪いので、何度も使う場合は
Dim SW As Single, SH As Single
SW = Me.ScaleWidth: SH = Me.ScaleHeight
などとして、変数に置いとくのが良いです。
また、ほかのコントロールの位置や大きさから、あるコントロールの位置や大きさを決める場合もあると思います
Text2.Width = Text1.Width
このような場合も、1回ごとに関数が呼び出されますから、一時変数に格納するほうが効率が良いです。
このように1つ1つ記述していくのは面倒ですが、コントロール数が多くなると、多少目に見えて違いがわかります。
"ウィンドウの内容を表示しながら移動/大きさ変更" のオプションを選択している場合差が出ます。
ご回答ありがとうございます。
初心者の私には「変数」というのがまだいまひとつピンとこなくて、
いつも
Private sub XXXXXXXX()
dim aa,bb,cc,dd,ee,ff,gg as string
のような感じで、毎回書いています。
効率が悪いのは分かっているのですが、モジュールに宣言しておくとか
のところがどうも勉強不足でいまいちです。
ちょっと変数について勉強して、もっと効率の良いコードを書けるように
します。
No.2
- 回答日時:
私もその方法しか知りません。
毎回、計算しています。コントロールが多い場合は、大変ですし、どうもちらついてあまりキレイではないですよね?
画面の左下にボタンが並んでいる場合など、あるひとまとまりのものがある場合は、Frame か PictureBox に格納して、Frame などを移動しています。
また、パフォーマンスは調べていないのでわかりませんが、移動とサイズ変更を伴う場合は、API の MoveWindow 関数を使うのもいいのかもしれません。
ご回答ありがとうございます。
私はなかなかコントロールのコードが理解できないので、シェアの
リサイズコントロールを使っています。
確かに何もしないで貼り付けるだけでコントロールがまとめて移動して
くれるので便利なのですが、動きがカクカクしてますし、やはり自分で
コードを書いてみたいというのが本音です。
>あるひとまとまりのものがある場合は、Frame か PictureBox に格納して、Frame などを移動しています
なるほど、こういう手もあるんですね。
これは全然思いつきませんでした。
一度試してみます。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでオプションボタン...
-
エクセル・VBA CheckBoxのオブ...
-
Excel VBA で Richtextboxを使...
-
VBA ユーザーフォームの Keypre...
-
カメラスクロールするのを動画...
-
chr関数の呼び出しで「プロ...
-
EXCELでactivexコントロールを...
-
ExcelVBAでListViewが使用できない
-
変数をコントロール型で使用す...
-
'ckbl' コントロールは作成され...
-
With~EndWithの省略部分と引数...
-
間違えて配置してしまったコン...
-
Excel VBA 動的に作成したチェ...
-
OCXって何ですか?
-
C#で角が丸いテキストボックス
-
コントロールを移動できない
-
vb.netで画面のコントロールId...
-
ActiveXコントロールはどこへい...
-
【VB】テキストボックスのキー...
-
ListViewのチェックボックスに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでオプションボタン...
-
エクセル・VBA CheckBoxのオブ...
-
カメラスクロールするのを動画...
-
EXCELでactivexコントロールを...
-
VBA ユーザーフォームの Keypre...
-
'ckbl' コントロールは作成され...
-
ExcelVBAでListViewが使用できない
-
チェックボックスをオンにした...
-
ユーザーフォームで動的(Me.Con...
-
chr関数の呼び出しで「プロ...
-
全てのオブジェクトのプロパテ...
-
vb.netで画面のコントロールId...
-
間違えて配置してしまったコン...
-
Excel VBA で Richtextboxを使...
-
VBAのフォームでTextBoxがいっ...
-
OCXって何ですか?
-
C# Form上に配置されたコントロ...
-
エクセル コントロールツール...
-
変数をコントロール型で使用す...
-
Groupboxの配下のコントロール...
おすすめ情報