コード名称マスタメンテ

  画面



列名 デフォルト NULL可 最大桁 精度 SCALE  
1 区分   True 3 adInteger INT   10   4 バイトの符号付き整数
2 コード   True 130 adWChar VARCHAR 10     Null で終了する Unicode 文字列
3 名称   True 130 adWChar VARCHAR 50     Null で終了する Unicode 文字列
4 数値1   True 3 adInteger INT   10   4 バイトの符号付き整数
5 数値2   True 3 adInteger INT   10   4 バイトの符号付き整数
6 作成日   True 7 adDate DATETIME       日付
7 更新日   True 7 adDate DATETIME       日付

このアプリケーションで、新規区分の追加はできません。既存区分に対しての追加・修正が可能です

新規行か既存行かの区別を、ビットマップで行います。
既存行が編集されると更新対象行としてビットマップが変更されます。

区分が未選択の場合は、更新はできません(問合せのみを行います)







  ビットマップ








  App_51.h

  
#define MyEXTERN extern
#include "MTN.h"

class App_51  
{
public:

	LboxListview *Lv;
	LboxCombobox *Kubun;

	void AddRow( void );
	BOOL DataRequest( void );
	BOOL UpdateData( void );

	App_51( HWND hDlg, LboxListview *Lview );
	App_51();
	virtual ~App_51();

};
  



  App_51.cpp

ここでは、更新処理を実装していません。


  
// *********************************************************
// コンストラクタ
// *********************************************************
App_51::App_51( HWND hDlg, LboxListview *Lview )
{

	Lv = Lview;

	// ダイアログオブジェクト作成
	Dlg = new LboxDlg( hDlg );
	Dlg->ChangeStyle( WS_MINIMIZEBOX | WS_SYSMENU, 0 );
	Dlg->ChangeExStyle( WS_EX_APPWINDOW, 0 );
	Dlg->StatusCreate( 0 );

	// 区分
	Kubun = new LboxCombobox( Dlg->GetHandle(IDC_KUBUN) );
	Kubun->ChangeWindowSize( 
		Kubun->Width(),
		300
	);
	if ( !CurDb->Connect() ) {
		Dlg->MsgOk("データベースの接続に失敗しました    ");
	}
	else {
		Query->operator = (
			"select distinct 区分,区分 from コード名称マスタ"
			" order by 区分"
		);
		CurDb->LoadSqlData( Kubun, Query );
		CurDb->DisConnect();
		Kubun->Insert( 0, "", "" );
	}

	// プログラムID
	Dlg->EditSetText( IDC_PROGID, "HM220" );

	// 項目属性設定

}

App_51::App_51()
{

}

App_51::~App_51()
{

}

// *********************************************************
// 行追加
// *********************************************************
void App_51::AddRow( void )
{
	Lv->InsertRow( 0 );
	Kubun->SelectedGetData( Item );
	Lv->SetColumnText( 1, Item );
	Lv->SetImage( 0, 0, 1 );
}

// *********************************************************
// 更新
// *********************************************************
BOOL App_51::UpdateData( void )
{
	return true;
}

// *********************************************************
// 問合せ実行
// *********************************************************
BOOL App_51::DataRequest( void )
{
	BOOL bRet;

	bRet = true;

	if ( !CurDb->Connect() ) {
		Dlg->MsgOk("データベースの接続に失敗しました    ");
		return false;
	}	

	Query->operator = (
		"select 区分,コード,名称,数値1,数値2"
		" from コード名称マスタ"
	);
	Item->SetChar( 0, 0 );
	Kubun->SelectedGetData( Item );
	if ( Item->operator != ("") ) {
		Query->operator += (" where 区分 = ");
		Query->operator += (Item);
	}
	if ( Column->operator == ( "" ) ) {
		Query->operator += (" order by 区分,コード");
	}
	else {
		Query->operator += (" order by ");
		Query->operator += (Column);
	}

	Lv->Hide();
	CurDb->LoadSqlData( Lv, 1 , Query );

	int nRow;
	nRow = -1;
	while( Lv->FindNextRow( &nRow ) ) {
		Lv->SetImage(
			Lv->nCurrentRow,
			0,
			0
		);
	}
	Lv->Fit();
	Lv->SetColumnWidth( 0, 16 );
	Lv->Show();

	CurDb->DisConnect();

	return bRet;
}
  



  Dialog_51.cpp

  
#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;
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ