INTERNATIONAL LABORATORY CORPORATION


サポート > GENWARE3 サポート > 技術情報(よくあるご質問と回答) >

ウィンドウ上ビューフレーム内のコントロールにフォーカスを移動させるには

組込みGUI統合開発環境 GENWARE3(ジェンウェアスリー) サポート

技術情報(よくあるご質問と回答)

ご質問

ウィンドウ上のビューフレーム内に配置しているコントロールにフォーカスを移動させる方法を教えてください。

回答

以下の手順を実施することで、ウィンドウ上のビューフレーム内のコントロールにフォーカスを移動させることができます。

  1. ビューフレームコントロールのオブジェクトを取得します。
  2. ビューフレームのパネルオブジェクトを取得します。
  3. ビューフレーム上のコントロールオブジェクトを取得します。
  4. SetActiveChild()関数でアクティブオブジェクトの設定をします。
  5. ChangeFocus()関数でパネルにフォーカスを移動します。
    ※ChangeFocus()関数でパネルを指定することでSetActiveChild()関数で指定したコントロールにフォーカスが移動します。

以下にウィンドウ上ビューフレーム内のコントロールにフォーカスを移動させるサンプルコードを記載します。本サンプルはウィンドウ上にボタンを配置し、ボタンのOnClick関数内で、ビューフレーム内のボタンにフォーカスを移動させるサンプルです。

■サンプルコード(C++言語版)

#include "GCWindow00001Frame00001.hpp"
#include "GCSVFrame.hpp"

GCSVFrame *pVFrame;
GCButton *pButton;
GCPanel *pPanel;

/*ビューフレームのオブジェクトを取得します*/
pVFrame = (GCSVFrame *)GetChild( FRAME00001 );    

/*ビューフレームパネル000のオブジェクトを取得します*/
pPanel=(GCPanel *)pVFrame->GetChild( GCWindow00001Frame00001::PANEL000 );

/*ビューフレーム上のボタンのオブジェクトを取得します*/
pButton =(GCButton *)pPanel->GetChild( GBUTTON00002 );

/*アクティブオブジェクトの設定をします*/
SetActiveChild( GWINDOW_SEARCH_FROM_FIRST, (GCBaseWindow *)pButton );

/*フォーカスをボタンへ移動します*/
GCWGetScreen()->ChangeFocus( pPanel );

■サンプルコード(C言語版)

#include "GWindow00001Frame00001.h"
#include "GSVFrame.h"

GSVFrame        *pVFrame;
GButton        *pButton;
GPanel        *pPanel;
GWindow        *pWindow;
GFrame        *pFrame;

/*フレームオブジェクトを取得*/
pFrame = (GFrame*)GWGetVmt( GScreen_VMT, GWGetScreen() )->GetFrame( GWGetScreen() );

/*ウィンドウオブジェクトを取得*/
pWindow = (GWindow*)GWGetVmt( GFrame_VMT, pFrame )->GetChild( pFrame, 1+1 );

pPanel=(GPanel *)GWGetVmt(GWindow_VMT,pWindow)->GetPanel(pWindow);

/*ビューフレームのオブジェクトを取得します*/
pVFrame = (GSVFrame *)GWGetVmt( GPanel_VMT, pPanel )->GetChild( pPanel, FRAME00001);
    
/*ビューフレームパネルのオブジェクトを取得します*/
pPanel=(GPanel *)GWGetVmt( GPanel_VMT, pVFrame )
->GetChild( pVFrame,GWINDOW00001FRAME00001_PANEL000 );

/*ビューフレーム上のボタンのオブジェクトを取得します*/
pButton =(GButton *)GWGetVmt( GPanel_VMT, pPanel )->GetChild(pPanel, GBUTTON00002 );

/*アクティブオブジェクトの設定をします*/
GWGetVmt( GPanel_VMT, pPanel )
->SetActiveChild( pButton,GWINDOW_SEARCH_FROM_FIRST, (GBaseWindow *)pButton );

/*フォーカスをボタンへ移動します*/
GWGetVmt(GScreen_VMT, GWGetScreen() )->ChangeFocus( GWGetScreen(),(GBaseWindow *) pPanel );

対象製品バージョン:2.20.000

管理番号:FG_G10150

資料更新日: 2009年8月27日

※この資料は、資料更新日現在のものです。


ページTOPへ

ILC商品一覧