アプリ版:「スタンプのみでお礼する」機能のリリースについて

教えてください。
前々から疑問だったのですが、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

と書くと、リサイズに合わせてテキストボックスが画面いっぱいにサイズ変更
するというものです。
コマンドボタンとか色々貼り付けた状態ではどのように書けばいいのか
いまひとつ分かりません。

皆さんはどのようにされているのでしょうか?
是非是非教えてください。

A 回答 (2件)

私はいつもそれぞれについてResizeイベントのなかに記述しています。


でも、ScaleWidthプロパティとScaleHeightプロパティは、一種の関数みたいなもので、記述するごとに関数が呼び出されて効率が悪いので、何度も使う場合は

Dim SW As Single, SH As Single
SW = Me.ScaleWidth: SH = Me.ScaleHeight

などとして、変数に置いとくのが良いです。
また、ほかのコントロールの位置や大きさから、あるコントロールの位置や大きさを決める場合もあると思います

Text2.Width = Text1.Width

このような場合も、1回ごとに関数が呼び出されますから、一時変数に格納するほうが効率が良いです。

このように1つ1つ記述していくのは面倒ですが、コントロール数が多くなると、多少目に見えて違いがわかります。
"ウィンドウの内容を表示しながら移動/大きさ変更" のオプションを選択している場合差が出ます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

初心者の私には「変数」というのがまだいまひとつピンとこなくて、
いつも

Private sub XXXXXXXX()
dim aa,bb,cc,dd,ee,ff,gg as string

のような感じで、毎回書いています。
効率が悪いのは分かっているのですが、モジュールに宣言しておくとか
のところがどうも勉強不足でいまいちです。
ちょっと変数について勉強して、もっと効率の良いコードを書けるように
します。

お礼日時:2002/07/03 14:05

私もその方法しか知りません。


毎回、計算しています。コントロールが多い場合は、大変ですし、どうもちらついてあまりキレイではないですよね?

画面の左下にボタンが並んでいる場合など、あるひとまとまりのものがある場合は、Frame か PictureBox に格納して、Frame などを移動しています。
また、パフォーマンスは調べていないのでわかりませんが、移動とサイズ変更を伴う場合は、API の MoveWindow 関数を使うのもいいのかもしれません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
私はなかなかコントロールのコードが理解できないので、シェアの
リサイズコントロールを使っています。
確かに何もしないで貼り付けるだけでコントロールがまとめて移動して
くれるので便利なのですが、動きがカクカクしてますし、やはり自分で
コードを書いてみたいというのが本音です。

>あるひとまとまりのものがある場合は、Frame か PictureBox に格納して、Frame などを移動しています

なるほど、こういう手もあるんですね。
これは全然思いつきませんでした。
一度試してみます。

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

お礼日時:2002/07/03 13:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています