AIで普通の動画を3D動画に変換する
Miku-nical「みくにかる」〜Program館〜
Miku-nical「みくにかる」
Miku-nical「みくにかる」〜Program館
Miku-nical「みくにかる」
=SiteMenu=

図書紹介
-Books-

OSの話
-Windows/Linux-
プログラム
-Programming-
壁紙集
-Wall Paper.-
= プログラムの素「C++Builder編」=

KnowHow集などとだいそれたものではありません
自分がプログラムをする上で得た知識などをまとめておこうと思っています

008.Form2をForm1のメンバとして扱い、イベントを受け取る

先に作ったForm2をForm1のメンバとして扱い、Form2で発生するイベントをForm1側で受け取り、処理を行えるようにします。

イベントにパラメータがある場合の例)

[Yxxxxx.h]

//(*1)先に作成したForm2をForm1のメンバとして宣言しています
//(*2)Form2のイベントに結びつける為の受け口を用意します

#include "Xxxxxx.h"

class TForm1 : public TForm
{
__published:

TButton *Button1;
void __fastcall FormCreate(TObject *Sender);

private:

TForm2 *mForm2; //(*1)
void __fastcall OnEvent(TObject *Sender,bool& Cancel); //(*2)

public:

__fastcall TForm1(TComponent* Owner);

};

[Xxxxxx.cpp]

//イベントにイベントハンドラを割り付け、イベントを受信できるようにします

void __fastcall TForm1::FormCreate(TObject *Sender)
{

//配列作成時と同様にnew で作成する

mForm2 = new TForm2(this);

//イベントにイベントハンドラを結びつける

mForm2->OnEvented = OnEvent;

}

void __fastcall TForm1::OnEvent(TObject *Sender,bool& Cancel)
{

//ここにイベント発生時の処理を書く

}

このようにする事で、Form2で発生させたイベントをForm1で受け取る事が出来るようにする事が出来ます。

上記を使うような例としては、「Form1の設定画面としてForm2を表示し、Form2で設定した内容をForm1に反映させる(その際Form2は閉じない)ような処理のトリガーとして使う。」といったような事が考えられます(Form2に「更新」ボタンを配置するような場合)。
#実際にそのような事をしたかったので色々と調べました。
#他にもForm1でタイマを用意して定周期でForm2をチェックするとか、スレッドを作成して...といった方法も考えられるかと思いますが、イベントで渡せれば一番すっきりとすると思います。

尚、ここに書かれている方法を実際に行っての問題については一切関知しませんので、各自の責任にて行って下さい
ご意見ご感想はこちらまで <mikunical@mbp.nifty.com>
--