BREW のテキストコントロール - 2 / 2 -
SophiaFramework によるアプリ
- 最初の画面です。
- テキストボックスに移ります。
- テキストが編集されます。
- ボタンが押されると、下の文字列をテキストコントロールの文字列に変更します。
テキストコントロールの配置
SophiaFramework では、 Window クラスに様々な GUI コンポーネントを配置できます。
テキストコントロールも SophiaFramework の GUI コンポーネントの一つです。 GUI コンポーネント、テキストコントロールは次のように配置します。
// コンストラクタ(ウィンドウ生成時に実行) MyWindow::MyWindow(SFXRectangleConstRef _rect) : SFRTitleWindow(SFRApplication::GetInstance(), _rect, "TextCtlWindow") static_throws { SFXAnsiString message("Text Box"); SFXRectangle rect(GetContentWorld()); SFRToolbox::RegisterManipulateHandler(this); // テキストコントロール _textcontrol = ::new SFRBrewTextControl(this, SFXRectangle(0, 0, rect.GetWidth(), (rect.GetHeight() - 70) / 2), message); // 最大文字数を設定 _textcontrol->SetMaxSize(255); SFRButtonControlPtr button1(::new SFRButtonControl(this, SFXRectangle(10, (rect.GetHeight() - 70) / 2 + 10, 70, 25), "ボタン")); // button1を押したときのハンドラを登録 button1->RegisterHandler(SREVT_CONTROL, HANDLER_BEFORE, HANDLER_FUNCTION(OnButtonControl1)); rect.SetTop((rect.GetHeight() - 70) / 2 + 70); _label = ::new SFRLabelControl(this, rect, message); return; }
テキストコントロールに関するイベント処理は、関数4 行目の SFRToolbox::RegisterManipulateHandler 関数を呼び出せば自動的に設定されます。
テキストの取得
ボタンが押されたときに、テキストコントロールから文字列を取得し、ラベルに設定します。
// ボタンが押されたときの処理 HANDLER_IMPLEMENT_VOIDCONTROL(MyWindow, OnButtonControl1, result, control) { _label->SetTitle(_textcontrol->GetText()); return; }
記事掲載プログラムのソースコード
SophiaFramework UNIVERSE を使用して作成したソースコード
textctlapp_sf.zip (SophiaFramework UNIVERSE 5.1)