教えてください。
前々から疑問だったのですが、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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
CloseとDisposeの違い
Visual Basic(VBA)
-
テキストボックスのカーソル位置の取得・設定方法
Visual Basic(VBA)
-
vb.netで画面のコントロールId名を変数で動的に制御し処理する方法
Visual Basic(VBA)
-
-
4
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
5
VB.NETのスクロールバーコントロール動作について
Visual Basic(VBA)
-
6
System.IO.Directory.GetFilesの順番
Visual Basic(VBA)
-
7
VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
8
インスタンス参照でアクセスできない。代わりに型名?
C言語・C++・C#
-
9
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#,vb.netで業務用アプリ開発と...
-
ActiveXコントロールはどこへい...
-
エクセル・VBA CheckBoxのオブ...
-
コンボボックスの文字によるif...
-
vb.netで画面のコントロールId...
-
Excel VBA で Richtextboxを使...
-
アクセス特有の書き方?
-
VBAのフォームでTextBoxがいっ...
-
C#で自分のウインド・ハンド...
-
EXCELでactivexコントロールを...
-
フォーム上の現在アクティブな...
-
ExcelVBAでListViewが使用できない
-
変数をコントロール型で使用す...
-
ユーザーフォームで動的(Me.Con...
-
エクセルVBAでオプションボタン...
-
C# ユーザコントロール内のボタ...
-
複数のコマンドボタン(VBAで)...
-
Excel VBA 動的に作成したチェ...
-
カメラスクロールするのを動画...
-
間違えて配置してしまったコン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カメラスクロールするのを動画...
-
エクセル・VBA CheckBoxのオブ...
-
vb.netで画面のコントロールId...
-
EXCELでactivexコントロールを...
-
ExcelVBAでListViewが使用できない
-
(VBA)スピンボタンの大量...
-
エクセルVBAでオプションボタン...
-
C#で角が丸いテキストボックス
-
ユーザーフォームで動的(Me.Con...
-
アクセス特有の書き方?
-
間違えて配置してしまったコン...
-
コンボボックスの文字によるif...
-
VBAのエラーについて、”実行時...
-
変数をコントロール型で使用す...
-
chr関数の呼び出しで「プロ...
-
With~EndWithの省略部分と引数...
-
C#で自分のウインド・ハンド...
-
excelのリストボックスで選択し...
-
'ckbl' コントロールは作成され...
-
フォーム上の現在アクティブな...
おすすめ情報