|
#include "stdafx.h"
#include "App_51.h"
static App_51 *CurApp;
static LboxListview *Lview;
static LboxImagelist *Imglist;
// *********************************************************
// ダイアログの処理
// *********************************************************
LRESULT CALLBACK Dialog_51(
HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam )
{
switch( message ) {
case WM_INITDIALOG:
bEnd = false;
Lview = new LboxListview(
GetDlgItem( hDlg, IDC_LIST ),
LBOX_LISTVIEW_EDITABLE
);
Lview->Grid( );
Lview->SetFont( 0, 9, false );
// リストビューの入力データ型の設定
Lview->SetColumnType( "0,1,0,0,1,1" );
// リストビューの入力サイズの設定
Lview->SetColumnSize( "0,10,10,50,10,10" );
// イメージリストの準備
Imglist = new LboxImagelist();
Imglist->Create( 12, 12 );
Imglist->Add( hDlg, IDB_ROWHEAD1, 255,255,255 );
Imglist->Add( hDlg, IDB_ROWHEAD2, 255,255,255 );
Imglist->Add( hDlg, IDB_ROWHEAD3, 255,255,255 );
// リストビューにイメージリストを実装
Lview->SetImageList( Imglist );
CurApp = new App_51( hDlg, Lview );
// 初期フォーカス
Dlg->EditFocus( IDC_KUBUN );
return FALSE;
case LBOX_RETURN:
// Enter キーをタブ扱いしないコントロール
if ( Dlg->GetHandle( IDC_CHECK ) == (HWND)wParam ) {
break;
}
Tool.TabKey();
break;
case LBOX_LV_HEADCLICK:
if ( (int)lParam != 0 ) {
Lview->GetColumnTitle( (int)lParam, Column );
if ( Tool.IsShift() ) {
Column->operator += (" desc ");
}
CurApp->DataRequest();
}
break;
// リストビューの入力直後のイベント
case LBOX_LV_EDITDONE:
if ( Lview->IsHandle( (HWND)wParam ) ) {
int nImage;
nImage = Lview->GetImage( LOWORD(lParam), 0 );
if ( nImage == 0 ) {
Lview->SetCurrentRow( LOWORD(lParam) );
Lview->GetColumnText( HIWORD(lParam), Item );
if ( Item->operator != ( Work ) ) {
Lview->SetImage(
LOWORD(lParam),
0,
2
);
}
}
}
break;
// クリックでフィールド編集
case LBOX_LV_CLICK:
// 条件演算子
if ( Lview->IsHandle( (HWND)wParam ) ) {
// 行とカラム
int nRow,nCol;
nRow = LVROW( lParam );
nCol = LVCOL( lParam );
// 区分が未選択の場合は編集しない
CurApp->Kubun->SelectedGetData( Item );
if ( Item->operator == ( "" ) ) {
break;
}
// データのある行が選択されている
if ( LVROW(lParam) != -1 ) {
int nImage;
switch( HIWORD(lParam) ) {
case 2:
nImage = Lview->GetImage( nRow, 0 );
if ( nImage == 1 ) {
Lview->SetCurrentRow( nRow );
Lview->GetColumnText( nCol, Work );
Lview->LoadColumnText( nRow, nCol );
}
break;
case 3:
Lview->SetCurrentRow( nRow );
Lview->GetColumnText( nCol, Work );
Lview->LoadColumnText( nRow, nCol );
break;
case 4:
Lview->SetCurrentRow( nRow );
Lview->GetColumnText( nCol, Work );
Lview->LoadColumnText( nRow, nCol );
break;
case 5:
Lview->SetCurrentRow( nRow );
Lview->GetColumnText( nCol, Work );
Lview->LoadColumnText( nRow, nCol );
break;
}
}
}
break;
// リストビューの通知イベント
case WM_NOTIFY:
if ( Lview != NULL ) {
Lview->Notify( hDlg, lParam );
}
break;
case WM_COMMAND:
// 終了
if( LOWORD(wParam) == IDCANCEL ) {
bEnd = true;
delete Imglist;
delete Lview;
delete CurApp;
EndDialog(hDlg, LOWORD(wParam));
return TRUE;
}
// ABOUT
if( LOWORD(wParam) == IDM_ABOUT ) {
DialogBox(
hInst,
(LPCTSTR)IDD_ABOUTBOX,
hDlg,
(DLGPROC)About
);
}
// アプリケーションの終了
if( LOWORD(wParam) == IDM_EXIT ) {
Dlg->SendMsg(
WM_COMMAND,
MAKEWPARAM( IDCANCEL, 0 ),
0
);
}
// 行追加
if ( LOWORD(wParam) == IDM_ROWINSERT ) {
CurApp->AddRow();
}
// 更新
if ( LOWORD(wParam) == IDM_UPDATE ) {
}
// 検索
if ( LOWORD(wParam) == IDC_CHECK ) {
CurApp->DataRequest();
}
// クリア
if ( LOWORD(wParam) == IDC_CLEAR ) {
CurApp->Kubun->Select( -1 );
Lview->DestroyPopup( );
Lview->Reset();
}
// 区分コンボボックスのイベント処理
if ( LOWORD(wParam) == IDC_KUBUN ) {
if ( bEnd ) {
break;
}
if ( HIWORD(wParam) == CBN_KILLFOCUS ) {
Dlg->StatusSetText("");
}
if ( HIWORD(wParam) == CBN_SELCHANGE ) {
CurApp->Kubun->SelectedGetData( Item );
if ( Item->operator == ( "" ) ) {
Lview->DestroyPopup( );
}
else {
Lview->CreatePopup( IDR_ACTION, 0 );
}
Dlg->SendMsg(
WM_COMMAND,
MAKEWPARAM( IDC_CHECK, 0 ),
0
);
}
}
break;
}
return FALSE;
}
| |