オブジェクトの配置を相対距離で移動させるには?

解決


しろ  2005-04-05 12:23:42  No: 120692

VB6において、Frame内に配置された多数のテキストボックス(またはラベル)を現在の位置から相対的に一度に移動させる方法はありますか?
例えば縦に10行、横に10列のテキストボックスが規則的に配置されている場合すべてを上に+10だけ移動させたいという場合です。
試しにプロパティの「Top」に「+10」と入力したら絶対座標値の10にすべて並んでしまいました。横一列だけや縦一列だけの場合はまとめてできることはわかりましたが、これだと10回以上繰り返しての作業となってしまいます。また、面倒ながら移動させた後に、やっぱりさらに+10とかしたい場合にゲンナリしてしまいました。
また、移動準備としての数十個のテキストボックスとラベルを選択する点についても、いくつか配置しているFrame内にあるオブジェクトの移動なので、Ctrl+Aのような「すべて選択」を行うとFrame自体を含むform内全体を選択してしまって都合が悪いので、Shiftを押しながら1個1個追加選択する形でやっており、これまた困っている次第です。

基本的なことで恐縮ですが、どうかご教示下さい。


しろ  2005-04-05 12:51:24  No: 120693

用語が違っていました。コントロール(テキストボックス、ラベルなど)のことです。すみません。


ねろ  2005-04-05 17:48:27  No: 120694

TextBoxやLabelを配列にしておいて、コードで配置を書くしか
ないと思われますが。


しろくろ  2005-04-05 21:14:02  No: 120695

フォームモジュールをテキストエディタで開いてみると
なにかできそうな予感がするかも。


しろ  2005-04-05 23:15:30  No: 120696

ねろさん、しろくろさん、早速のご回答ありがとうございました。

>>ねろさん
配置をコードで書くということは、Formロードプロシージャに書くということですよね。実行前レイアウトではズレズレな配置でも、プログラムを実行するとピシッと揃うということでしょうか?
また、配列(コントロール配列のことですか?)にすると、どういうメリットがあるのかイマイチわかりません。
当方、VBはじめて間もないことから、ねろさんの真意が読み取れず申し訳ありません。
もし、よろしければもう一度教えて下さい。

>>しろくろさん
テキストエディタで開きました!なるほど!ここで、修正する方が労力としてはかなり軽減されます。今まで、コントロールを選択した後にプロパティで項目選択していたことに比べれば、明らかに楽なことこの上なしです。
もしかしたら、まだ別の方法もあるのかも知れませんが、私としては満足していますので、これをもって解決と致します。

ねろさん、しろくろさんのお二人には感謝致します。
ありがとうございました。


しろ  2005-04-05 23:16:00  No: 120697

解決チェック忘れました。


ねろ  2005-04-05 23:44:15  No: 120698

>また、配列(コントロール配列のことですか?)にすると、
>どういうメリットがあるのかイマイチわかりません。

解決したと言うことなので,おまけですが。。。
フォームにTextBox1を一つ置き、そのIndexプロパティを『0』にして
Private Sub Form_Load()
    Text1(0).Move 100, 100, 1000, 350
    Text1(0).Text = "1"
    For n = 1 To 99
        Load Text1(n)
        With Text1(n)
            .Visible = True
            .Left = Text1(0).Left + (.Width + 20) * (n Mod 10)
            .Top = Text1(0).Top + .Height * (n \ 10)
            .Text = CStr(n + 1)
        End With
    Next
End Sub
とやってみて下


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




  


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