○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++