0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

c++ builder XE4, 10.2 Tokyo > Form > マルチインスタンス時のthis->Name > サフィックスがつく

Last updated at Posted at 2015-12-14
動作確認
C++ Builder XE4
Rad Studio 10.2 Tokyo Update 2 (追記: 2017/12/27)

Form2を複数インスタンス化した時、それぞれのthis->Nameはユニークになるようにサフィックスが自動的につけられるようだ。

##再現手順

  1. Form1を作る
  2. Form2を作る。Form2は「自動生成フォーム」ではなく、「使用可能フォーム」にしておく。
  3. Form2のコンストラクタを下記のUnit2.cppのようにする
  4. Form1のボタンクリックイベントを下記のUnit1.cppのようにする (Unit2のincludeが必要)
Unit2.cpp
__fastcall TForm2::TForm2(TComponent* Owner)
	: TForm(Owner)
{
	String msg = this->Name;
	OutputDebugString(msg.c_str());
}
//---------------------------------------------------------------------------
Unit1.cpp
void __fastcall TForm1::Button1Click(TObject *Sender)
{
	m_form2a = new TForm2(this);
	m_form2b = new TForm2(this);
	m_form2c = new TForm2(this);
}
//---------------------------------------------------------------------------

##実行結果

ビルドして実行し、Form1でボタンを押すと、以下のようなメッセージになる。

結果
デバッグ出力: Form2 プロセス Project1.exe (2912)
デバッグ出力: Form2_1 プロセス Project1.exe (2912)
デバッグ出力: Form2_2 プロセス Project1.exe (2912)

メモ

上記の this->Name がユニークになること自体には問題ない。

こちらでは、this->Name を設定ファイル名に使い、設定をLoad/Saveする機能を実装していたが、マルチインスタンスでの使用時に名前にサフィックスがついて扱いづらくなった。
対処としては、自動付加されるサフィックスを取り、コンストラクタの引数でコントロールできる番号を付加する、など。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?