• ベストアンサー

コントロール名とそのプロパティー名を取得したい

Form の Top/Left の位置を INI ファイルから取得しようと思います。 INIファイルの構造は   [コントロール名]   プロパティー=Value つまり   [Form]   Top=300 という感じです。 WritePrivateProfileString に "Form","Top" というパラメータを送りたいのですが、 この場合のオブジェクト名である"Form"、プロパティ名である"TOP"はどこで取得できるのでしょうか?

noname#27115
noname#27115

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

  • ベストアンサー
  • palmmy
  • ベストアンサー率38% (841/2170)
回答No.4

>オブジェクト名はMe.Name、Me.TextBox.Name で取れますが、タイプはどうすればいいのでしょうか? やはり自分で書いた方がよいと思うのですが。 Me.TextBox.Nameでとる段階で、タイプが分かってなくてはいけないですよね。(それがTextBoxだと知っているから、Me.TextBox.Nameでとるんだとおもうのですが) フォームの名前と、TOP・LEFTの座標を取得してINIファイルに書き込むことで何をしようとしていますでしょうか? たとえば、最後の位置を記憶させて、次回立ち上げ時にその位置に描写するとかでしょうか? このような場合、formを閉じるときに、座標の保存をすると思います。コーディングをするときに、Formの名前やTextBoxを配置していること、個数、名前は自分で作成したわけですから分かりますよね? それをコーディングすればよいと思います。 Formのなかにどんなオブジェクトが何個あるのか全く分からない。というのであれば確かにTypeをなんとか取得しないといけないかもしれません。

noname#27115
質問者

お礼

> Me.TextBox.Nameでとる段階で、タイプが分かってなくてはいけないですよね。 よく考えたらその通りでした。(笑) >フォームの名前と、TOP・LEFTの座標を取得してINIファイルに書き込むことで何をしようとしていますでしょうか? そうです。 >たとえば、最後の位置を記憶させて、次回立ち上げ時にその位置に描写するとかでしょうか? そのつもりでした。少ないプロシージャーで共有しようと思いました。 ご回答どうもありがとうございました。

その他の回答 (3)

  • palmmy
  • ベストアンサー率38% (841/2170)
回答No.3

Formの名前、TOPの座標をどこから取得するか? という質問でしょうか?

noname#27115
質問者

補足

ちょっと、質問を書き間違っていました。 オブジェクトのタイプとオブジェクト名を取得してセクション名もしくはキー名を作成できないものかと考えました。  オブジェクト名はMe.Name、Me.TextBox.Name で取れますが、タイプはどうすればいいのでしょうか? Form(Juchuu)   TextBox(Tanka)   TextBox(Shuryo)   TextBox(Bikou)) Form(Uriage)    ・    ・    ・    ・ Form(Nyuukin)    ・    ・    ・ [Form_Juchuu] Top=800 Left=300 [Text_BoxTanka] Top=300 Left=300 [Text_BoxSuryo] Top=300 Left=300 [Text_BoxBikou] Top=300 Left=300 [Form_Uriage] Top=800 Left=300

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

値を取得するときに使うGetPrivateProfileStringで列挙することができます。 セクション名を列挙したいときは、セクション名とキー名にvbNullStringを指定してください。 キー名を列挙したいときは、キー名にvbNullStringを指定してください。 値はChr(0)を間に挟んだ連続した文字列で返ってくるので、Split関数などでそれぞれの値に切り離して使用してください。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpsysinf/html/_win32_getprivateprofilestring.asp

  • palmmy
  • ベストアンサー率38% (841/2170)
回答No.1

それは、貴方が記述してあげればいいのでは? 毎回変わるのでしょうか?

関連するQ&A

  • ユーザーコントロールの座標

    コントロール名がHogeのユーザーコントロールを作成します。 Form1にHogeを貼り付けHoge1とする。 どのようなユーザーコントロールに対してもForm1.Hoge1.Leftのような書き方ができますが、 Dim UC As Hoge UC.Leftのような書き方ができません。 後者のような参照ができないプロパティは、自分で定義したのではない、元からあるLeftとTop、Indexなどです。 このようなプロパティは、コントロールの参照の変数から、アクセスできないのでしょうか? オブジェクトはこのプロパティおよびメソッドをサポートしていませんと言われます。 オブジェクト変数が宣言されていないわけではありません。

  • ユーザーコントロール(OCX)のオブジェクト名

    2点わからない点がありますのでよろしくお願いします。 (1)ユーザーコントロールのオブジェクト名を引数として使用したいのですが エラーが発生し困っています。どのようにしたらいいのでしょうか? ユーザ-コントロールのオブジェクト名:UserControl1 ☆でエラーが発生する「オブジェクトはこのプロパティまたはメソッドをサポートしていません。」 ※関数aはDLLとなっておりどうしてもオブジェクト型で渡さなければなりません。 Private Sub Command1_Click() Call a(Me) End Sub ===DLL関数:a=== オブジェクト名とボタン名をINIファイルに書き込む処理 =========== Private Sub a(prmObj As Object) Dim strMsg As String strMsg = prmObj.Name ・・・☆ : : : End Sub (2)String型からObject型に変換するのは可能でしょうか? INIファイルから"UserControl1.Command.Enable = False"というString型のデータを読込み、 ボタンを有効・無効設定するという事が処理がしたいのですが何かいい方法がありましたら教えてください。 Private Sub UserControl_Initialize() Dim a As Object Dim b as String 'INIファイルから取得 Dim c as String       'INIファイルから取得 b = "UserControl1.Command1" c = "False"   Set a = Me.Controls(b) If c = "False" then a.Enable = False else a.Enable = True End If End Sub

  • Access VBA でForm位置を参照するプロパティ?

    Access 97 VBAでプログラムを作ってます。 Accessウインドウ内のForm又はForm内のControlをクリックした時に、Accessウインドウ左上隅からFormの左上角までの位置(Left、Top)を参照するためのプロパティを教えて下さい。 CurrentSectionLeftとCurrentSectionTopは、Form内での位置参照です。Formそのものの位置を参照する方法は無いのでしょうか?

  • ユーザーコントロールでcolorのようなプロパティ

    color構造体のようなプロパティを、ユーザーコントロールで実現する方法はありますか? c#のButtonを継承して音が鳴るボタンを作ろうとしています。waveをリソースとして埋め込み、プロパティでリソース名の文字列を指定してオブジェクトごとに異なる音を再生しようと考えています。そこで、新しくプロパティを追加したいのですが、Stringで直接渡すと予期していない文字列が渡してしまう可能性があるので、colorのような一覧から選択させるようにしたいと思っているのですが、うまくいきません。VoiceType構造体を作ってVoiceプロパティを追加してみたのですが、プロパティペインのVoiceの欄には <Project名>.<ユーザーコントロール名>+VoiceType という文字列がグレーアウトで入っています。 解決策がわかる方がいればご教授おねがいします。

  • クラスでプロパティを使う方法

    お世話になります。 VCの勉強をしていて良く分からないところが出てきました。 オブジェクトにはプロパティが付いていますが、 それをクラスではどのように記述しているのでしょう。 メンバ変数としてpublicで書けばプロパティになると思うんですが、 プロパティっていうのは変更するとオブジェクトも変化するではないですか。 例えばボタンの.topとか.leftを変化させれば大きさや位置が変わります。 そういう変化は何かメンバ関数を作って記述するのかなと思ったんですけど それだとメソッドになってしまうので、やはり違う気がします。 WEBも色々探してみたんですけど、 探し方が悪かったのか、よく分かりませんでした。

  • コントロールのプロパティー値をコードで変更したい

    アクティブXコントロールのオブジェクトのプロパティーを手作業で変更するのではなくて、 マクロのコードで変更できればいいと思うのですが、コードの書き方がさっぱりわかりません。 私がやりたことは 下の画像にあるバーコードのコントロールのValueプロパティの値をVBAのコードで指定したい ということです。 一体、どんな書き方をすればいいんでしょうか? できればズバリのコードをそのまま提示して欲しいです。

  • 【VB.NET】カスタムコントロールのプロパティ

    お世話になっております カスタムコントロールのプロパティについて質問です InputManのGcTextBoxを継承したカスタムコントロールを作成しました。 カスタムコントロールにはPublicのプロパティがあり、その中で必要がなくなったプロパティがあるため削除しました。 しかし、削除するとカスタムコントロールを使用しているFormのDesignerファイルで多数のエラーが出ており、見てみると削除したプロパティの設定が残っていました。 designerファイルを一つ一つ開いて消そうと思いましたが、かなり多いため非常に手間がかかります。 そこで相談なんですが、なにか一括、もしくは自動で消す方法等あればご教授願います。 ちなみに環境はVisualStudio2008でコントロールはInputMan for Windows Forms 6.0jを使用しています。

  • オブジェクトやプロパティ、メソッドに付いて

    今、JavaScriptを覚えようとしてるのですが、オブジェクトから訳が分からなくなってきました。 ゲームに例えたら、自機がオブジェクトで、プロパティが自機のステータスで、 メソッドがいろいろな動作をさせる関数って感じでいいんでしょうか? それと、オブジェクトは下のようにメソッドやパラメータを使用しますが、 パラメータ=="値" って感じなのでしょうか?? オブジェクト名.メソッド名(パラメータ); オブジェクト名.プロパティ名="値"; よろしくご指導お願いします。

  • コントロール名の取得方法について

    いつもお世話になっております。 表題の件について早速ご質問なのですが、 例えば・・・ <form name="a"> <input type="text" name="txt01" value="no...1"> <input type="text" name="txt02" value="number2"> <input type="text" name="txt03" value="sono3"> <input type="text" name="txt04" value="その4"> <input type="text" name="txt05" value="これは5番目"> <input type="button" onClick="getControlValue(document.a)"> </form> というフォームがあったとして JavaScriptから <script type="text/JavaScript"> function getControlValue(oForm) { for (i=1;i<=5;i++) { oControlName = i番目のコントロール; // 数字の2桁0埋め処理を使用 alert(oControlName.Name + "の値は" + oControlName.value + "です。"); } return false; } </script> というループの中で上記フォーム(txt**)のコントロールを取得して、その値を取得するには どのような方法を取れば実現できるのでしょうか。 ご存知の方がいらっしゃいましたらお知恵をお借りできれば幸いに存じます。 よろしくおねがいいたします。

  • INIファイルへの保存について

    いつもお世話になります。 指定場所のINIファイルにウィンドウが閉じられた時の 座標位置を保存しようとしています。 API関数をMFCの中で用いたいのですが、現時点の知識量では 下記程度のソースしか思い浮かびません。 ネット上などいろいろ調べてみたのですが、 わからずじまいです。 ご教授よろしくお願い致します。 開発環境はVC++6.0MFCです。 CRect q; GetWindowRect(&q); WritePrivateProfileString("PROGRAMDATA", "WindowPlaceL", q.left,"INIファイルへのフルパス"); WritePrivateProfileString("PROGRAMDATA", "WindowPlaceT", q.top,"INIファイルへのフルパス");

専門家に質問してみよう