○FlexGridコントロールの使い方

ActiveX コントロールの挿入→Microsoft FlexGrid Control を追加
ClassWizardにて変数の追加

//CMSFlexGrid* pGrid = ( CMSFlexGrid* )GetDlgItem( IDC_MSFLEXGRID );

m_Grid.SetRows(10);//縦のセルの数
m_Grid.SetCols(10);//横のセルの数

m_Grid.SetRow(2);//縦のセルを選択 0の指定も可能
m_Grid.SetCol(2);//横のセルを選択 0の指定も可能
	
m_Grid.SetTextMatrix(2,2,"今日は");//指定セルに値を入れる
m_Grid.SetTextMatrix(0,0,"今日は");//どこにでも書ける
m_Grid.SetCellForeColor(RGB(0,0,100));//選択セルの文字の色を変える
m_Grid.SetCellBackColor(RGB(100,0,0));//選択セルの色を変える
m_Grid.SetCellAlignment(4);//選択セルの文字位置設定
//0:左上 1:左 2:左下 3:上 4:中央 5:下 6:右上 7:右 8:右下 9:値により
m_Grid.SetCellFontSize(20);//選択セルのフォントサイズを変更
m_Grid.SetColWidth(2,1000);//指定した横の列の幅を変更 0の指定も可能
m_Grid.SetRowHeight(2,1000);//指定した縦の列の横幅を変更 0の指定も可能
m_Grid.SetFixedRows(2);//固定行の設定
m_Grid.SetFixedCols(2);//固定列の設定

VC.net では、
SetRows(10)→put_Cols(10);
SetCols(10)→put_Rows(5);
のように
Set→put_
Get→get_
になります。


○文字入力のできるFlexGrid

CEdit	:	m_edit
FlexGrid	:	m_grid

以上をフォームに貼り付けて変数を作成

void CGridDlg::OnSetfocusEdit1() 
{
	CString str = m_grid.GetTextMatrix(m_grid.GetRow(),m_grid.GetCol());
	m_edit.SetWindowText(str);
	m_edit.SetSel(str.GetLength(),str.GetLength(),false);//フォーカスを受けたときに一番最後にカーソルを移動
}

void CGridDlg::OnChangeEdit1() 
{
	CString str;
	m_edit.GetWindowText(str);
	m_grid.SetTextMatrix(m_grid.GetRow(),m_grid.GetCol(),str);//セルに値を設定
}

void CGridDlg::OnKeyDownMsflexgrid1(short FAR* KeyCode, short Shift) 
{
	if(*KeyCode == 0xf0);//Capsキーが押された時は無視する。
	else if(*(unsigned char*)KeyCode >= 0x80 && (Shift & 2) == 0){
	//日本語が入力された場合はの処理を書く
	m_edit.SetFocus();//そのままテキストボックスにフォーカスを移動
	}
	else if(*KeyCode == VK_DELETE){
	//デリートキーが押された時の処理を書く
	TRACE("DEL");
	}
	else if(*KeyCode == VK_BACK){
	//BackSpaceキーが押された時の処理を書く
	TRACE("BACK");
	}
	else if(Shift == 2){
	//Ctrlキーが押されている場合の処理を書く
	TRACE("Ctrl");
	}
}

void CGridDlg::OnKeyPressMsflexgrid1(short FAR* KeyAscii) 
{
	if( GetFocus() != GetDlgItem(IDC_MSFLEXGRID1)) return;//FlexGridにフォーカスが無いときは処理をしない。
	CString str = m_grid.GetTextMatrix(m_grid.GetRow(),m_grid.GetCol());
	str=str+(char*)KeyAscii;
	m_grid.SetTextMatrix(m_grid.GetRow(),m_grid.GetCol(),str);
	m_edit.SetFocus();
}

void CGridTestDlg::OnClickMsflexgrid1() 
{
	CString str = m_grid.GetTextMatrix(m_grid.GetRow(),m_grid.GetCol());
	m_edit.SetWindowText(str);
}




▲トップページ > Windows と C++