• ベストアンサー

【VB2005】コントロールのサイズ自動取得

現在、画面の大きさにより、ラベル、テキストボックス等の コントロールを動的に配置してまして、 画面サイズを適当に変えると、 コントロールの大きさが自動で変更されるのですが、 ボタンを押して、新たにコントロールを配置したときに、 画面が大きい画面なのに、自分で決めた値をそのままコントロールにプロパティを代入して作るために、 画面にあわないコントロールサイズになります。 倍率が判らないために、うまく今の画面にマッチしたコントロールの プロパティ(大きさ、フォント)が設定できません。 どういう方法で自動取得のコントロールを追加できるか、 お知恵を貸してください。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

新たに追加するコントロールは まったく別種の物なのでしょうか 類似のコントロールがあるなら その類似コントロールのSizeやLocationが参考になると思います まったく新規に追加するのであれば 設計時のFormの大きさを基準に考えればいいのではないかと思います dim szOrg, szNow, szTarg as Size ' 追加したいコントロールの設計時大きさ szOrg = new Size( 128, 32 ) szNow = Me.Size ' 設計時のフォームの大きさが 800,600なら szTarg = new Size( szOrg.Width * szNow.Width / 800, _ szOrg.Height * szNow.Height / 600 ) といった具合で計算してやればいいように思います

dizzdive
質問者

お礼

環境の補足を忘れていましたが、 グレープシティのサイズを自動で変更させるツールがあり その機能を使うと、サイズが自動で変わる。 だけど、それをされると、動的に作ったコントロールは その比率と違うから意図した大きさじゃなく、 やっぱり予め、コントロールを貼り付けて、 Enabledで、表示する、しないを設定する方向で 妥協しました。 上記のコードで、大きさを変更したりできましたので、 今後、コードを書く上で参考にしたいと思います。 ありがとうございました。

関連するQ&A

  • [VB6.0]フォーム上に配置したコントロールのフォントサイズが変えられない

    はじめまして。 VB6.0のアプリケーションウィザードを使用してフォームをいくつか作りました。 ウィザード終了後、これらのフォーム上に配置されたラベルなどのfontプロパティ を操作してフォントサイズを変えたいのです。フォームのデザイン上はフォントサ イズを変えることが出来るのですが、実行すると、"コントロールのfontプロパティ のfontサイズ"ではなく、"フォームのfontプロパティのfontサイズ"で統一されて しまいます。つまり、コントロール毎の値は無視されて、フォームの値で統一され てしまうのです。 exe形式にコンパイルしても同じでした。どこかしらのプロパティをいじるのだと 思うのですが、どなたかわかる方はいらっしゃいますか? よろしくお願いします。 (環境)Windows98SE+VB6.0+SP5.0

  • VB2005 コードでのコントロールのコピーについて

    いつもお世話になっています。 独学でVBの勉強をしているものなのですが、 どうしてもわからないことがあるので教えてください。 デザイナの画面で配置したテキストボックスなどのコントロールを、 コードでコピーして複数配置するようにしたいんです。 そこで、デザイナでTextBox1を配置して、 コードで以下のように記述しました。 Dim MyTextBox1 As New TextBox MyTextBox1 = TextBox1 Me.Controls.Add(MyTextBox1) すると、デザイナ画面で配置したテキストボックスが無くなって、 新たにコードで作成したテキストボックスだけが、 画面に表示されてしまうんです。 実際に行いたいことは、複数のコントロールをパネル上に配置して、 そのパネルをコードで複数作成することなのですが、 そもそもそのようなことはできないのでしょうか? かなり的外れな質問になってしまっているかもしれませんが、 お分かりでしたら教えてください。 よろしくお願いします。

  • Access コントロールとはActiveXコントロールの略?

    Accessでフォームに配置するテキストボックスやラベルをコントロールといいますが、これはActiveXコントロールの略なのでしょうか?

  • テキストボックスのフォントサイズの復元

    エクセルのシート上にある、図形のテキストボックスのフォントサイズに「12」をセットしておいて、シート上に配置してあるコントロールボタンをクリックする事で、変更されたサイズから「12」へもどす仕組みを作りたいのですが・・・ テキストボックスのフォントサイズ 「12」から、テキストボックスをアクティブにし、ツールバーでフォントサイズを変更する。 ↓ ** その後 シート上に配置されたボタンを押すと元の「12」に戻る ※ エクセル97、2000で使用(作成は97) こんなことできますか? できれば、どなたか教えて下さい。宜しくお願いします。

  • ラベルに「コントロールソース」を設定することは不可能でしょうか?

    単票形式のフォームのレコードソースに紐付くコントロールソースを ラベルに設定したいのですができません。 ハイパーリンクをテキストボックスではなく ラベル上に表示したいです。 テキストボックスのプロパティには「コントロールソース」があるのですが ラベルに「コントロールソース」はありません。 設定することは不可能でしょうか? VBAでも可能なら教えてください。 よろしくお願いします。

  • VBライクなツール

    JAVAのGUIでAWTとかSwingとかがあるが Vusual Basicみたいな フレームに任意の位置に部品を配置して、プログラム原型を作成してくれるツールはあるか。 やりたいことは 3つのテキストボック、3つのボタン、3つのラベルを配置して 1番目のボタンが押下されたときは 3番目のテキストボックスに1番目のテキストボックスの値と2番目のテキストボックスの値の和を設定して 3番目のラベルに”加算”と表示する 2番目のボタンが押下されたときは 3番目のテキストボックスに1番目のテキストボックスの値と2番目のテキストボックスの値の差を設定して 3番目のラベルに”引き算”と表示する 3番目のボタンが押下されたときは 終了する というものである。 どうも、部品の配置が東西南北、中央とか、横1列、縦1列、格子状はあるが 任意の位置に部品を配置するツールはあるか

    • ベストアンサー
    • Java
  • iアプリでのコントロールの配置について

    はじめまして。 現在、Doja5.1を使用しiアプリを製作しております。 CanvasではなくPanelを使用しております。 テキストボックスや、ラベル、リストボックス等を配置するのですが HTMLLayoutを用いてラベル等のコントロールを配置している為、うまくいきません。 結局、空文字のラベル等を配置してスペースをとってテキストボックスを配置しているのですが、もっといい方法はないでしょうか? 座標等を指定して、細かな設定ができればいいなと考えております。 なにか他に方法があれば教えていただければと思います。

    • ベストアンサー
    • Java
  • 自動サイズ調整

    Access97を使用しています。 フォーム上のテキストBOXにデータをモジュールで入力するのですが その際、テキストBOXの幅より大きいデータが入った場合、 出てしまいます。 この時、モジュールで自動調整する方法はあるのでしょうか? 要望としては、文字数が多い場合、自動でフォントサイズを小さくする です。

  • VB .net コントロールのプロパティ設定方法

    Visual Basic 2010を勉強しています。 フォームに貼り付けたコントロールのプロパティの設定についてですが、 今までは、貼り付けた後にプロパティウインドウで直接いじっていました。 (Text、Font、Imageなど...) ですが、知人が書いたコードを見ていると、コードの中で設定しているようなのです。 プロパティウインドウで設定した方が、視覚的にも確認しながら設定できるのでそうしていたのですが、コード内で設定するのと違いはあるのでしょうか?(パフォーマンスやコードの見やすさなど...) 動的にコントロールを配置したい時や、プロパティを変更したい場合にはコード内で操作しますが、初期設定やラベル等の変更することがないようなコントロールに関しては、どちらでも同じような気がするのですが... 実際に皆さんがどうされているのかも気になり、質問させて頂きました。 以上、何卒よろしくお願いいたします。

  • パワーポイントのテキストボックス内のフォントサイズ自動縮小について

    パワーポイントのテキストボックスについて質問します。 テキストボックス内のフォントサイズがテキストボックスの枠のサイズに応じて、自動的に拡大・縮小される設定があると思うのですが、その設定はどのようにするのでしょうか。教えてください。

専門家に質問してみよう