こんにちは。
今、BorlandC++Builder5で、PhotoShopの情報パレットのような
マウス位置などの情報を表示するパレットを作成しています。
フォームが二つあり、以下のようにしています。
Form1 → マウス位の置情報を得るフォーム
Form2 → Form1から受け取った「マウス位置の情報」を、表示するフォーム。
表示にはLabelコンポーネントを使用する
最初、Form1のOnMouseMoveから直接、
Form2->Label1->Caption = IntToStr(X)
というように書いていました。
しかし、できることならForm1からは値だけを渡し、
Form2上でLabel1のCaptionを書き換えるようにしたいと思っています。
そこで思いついたのが、Form2に自作プロパティを作り、
・Form1からは、そのForm2上のプロパティに値を渡す
・Form2は、そのプロパティでLabel1->captionを書き換える
という方法なのですが、やり方どころか、
それか可能なのかさえよくわかっていない状況です。
プロパティを使う方法でも、それ以外の方法でも構いませんので、
どうすれば可能なのか教えていただけないでしょうか?
お手数ですが、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
クラスエクスプローラ(BCB personalにはないですが)でForm2を右クリック→プロパティの新規作成でプロパティ作成ダイアログが出ます。
プロパティ名:適当につける
型:マウスの座標ならTPointでいいでしょう
アクセス制御:Publicでいいでしょう
Getメソッドの作成:チェック
Setメソッドの作成:チェック
フィールドの作成:チェック
このフィールドをGetメソッドで参照する:チェック
このフィールドをSetメソッドで参照する:チェック
これでOKしたらコードの雛型が自動生成されます。
あとはこのセットメソッドのほうに代入された値をCaptionに表示するコードを追加すればよいわけです。
>情報パレットのようなマウス位置などの情報を表示するパレットを作成しています。
表示したい情報を構造体にまとめてそれをForm2のプロパティにするという手もあります。
回答ありがとうございます。
自分で書かなくても、右クリックメニューで追加できるんですね。
実際にどう書けばいいのかわからず、苦労してました。
Form1側で情報を受け取るときも、
プロパティだと型変換せずに受け取れるので
この方法を考えたんです。
実現できたので嬉しいです。
ありがとうございました。
No.3
- 回答日時:
No.1 です。
No.2 の方の回答を見ました……。
Form2 自体もプロパティをもてるのを忘れていました。
ですので、No.1 で書いた、「用語の誤解があるようですので」云々は、取り消します。
いや、お恥ずかしい。
いえいえ!
関数の引数渡しの方法もわかって一石二鳥でした!
僕はすんごく初心者なので、
とにかくいろんな情報を蓄えたいので
参考になってよかったです。
ありがとうございました!
No.1
- 回答日時:
まず、用語の混乱があるようなので……
C++ Builder では、Form に貼り付けて使う部品を「コンポーネント」と呼びます。それぞれの、コンポーネントの情報が、「プロパティ」です。
ですから、Label1 に対して、Caption がプロパティ(のひとつ)になります。
さて、方針としては、Form1 から、Form2 の Label に直接アクセスせずに必要なデータだけを渡すというのは、良いことだと思います。
そして、この目的であれば、Form2 に、ユーザー「関数」を作るだけでOKです。
具体的には、Form2 に相当する unit.h の、Public: の部分に、
void putData(int x, int y);
のようなプロトタイプを作り、その実体を、unit.cpp の中に
void putData(int x, int y)
{
Label1->Caption = x;
Label2->Caption = y;
}
こんな感じで定義するだけです。
あとは、Form1 側から、Form2->putData(x, y);
のように使えます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETで、DLLを頂いたんですが...
-
c# ネットワークプログラム
-
ユーザーフォームのVBAエラー
-
C# using の有効範囲
-
既定のコンストラクタがない?
-
FriendとPublicの違い。。。
-
個々の関数について継承してい...
-
ダイアログクラスのコントロー...
-
継承を重ねた場合のコストはど...
-
(UWSC) 「#32770」の意味わかり...
-
名前空間について
-
ダイアログ表示時にチェックボ...
-
メモリリークが発生するのはど...
-
関数の呼び出し元の検索
-
このコンパイルエラーの意味に...
-
正規表現 [^/]+ の意味を教えて
-
ウィンドウの背景に画像を配置する
-
C++の連想配列の使い方
-
MFC モードレスDlgについて
-
MFCアプリのコマンドラインでパ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excel vba グラフ データラベル...
-
VB.NETで、DLLを頂いたんですが...
-
ユーザーフォームのVBAエラー
-
条件によって別のクラスのイン...
-
c# ネットワークプログラム
-
C# フォームのShow()のオーバー...
-
c# nullは空集合として扱かって...
-
C#でVB.NETのReplaceコマンドを...
-
MSDNのリファレンスの見方が分...
-
ConsoleApplicationから別プロ...
-
FriendとPublicの違い。。。
-
既定のコンストラクタがない?
-
(UWSC) 「#32770」の意味わかり...
-
クラスのアドレスを引数として...
-
ダイアログ表示時にチェックボ...
-
エディットコントロールでEnter...
-
イベントにAddHandlerされてい...
-
【ASP.NET】 独自で作成したク...
-
DebugクラスとTraceクラスの違い
-
オブジェクト型の変数が定義さ...
おすすめ情報