コード名称マスタメンテ


  画面




列名 デフォルト 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;
}
  




yahoo  google  MSDN  MSDN(us)  WinFAQ  Win Howto  tohoho  ie_DHTML  vector  wdic  辞書  天気 


[cmdbapp]
claudebot
24/03/29 17:36:09
InfoBoard Version 1.00 : Language=Perl

1 BatchHelper COMprog CommonSpec Cprog CprogBase CprogSAMPLE CprogSTD CprogSTD2 CprogWinsock Cygwin GameScript HTML HTMLcss InstallShield InstallShieldFunc JScript JScriptSAMPLE Jsfuncs LLINK OldProg OracleGold OracleSilver PRO PRObrowser PROc PROconePOINT PROcontrol PROftpclient PROjscript PROmailer PROperl PROperlCHAT PROphp PROphpLesson PROphpLesson2 PROphpLesson3 PROphpfunction PROphpfunctionArray PROphpfunctionMisc PROphpfunctionString PROsql PROvb PROvbFunction PROvbString PROvbdbmtn PROvbonepoint PROwebapp PROwin1POINT PROwinSYSTEM PROwinYOROZU PROwindows ProjectBoard RealPHP ScriptAPP ScriptMaster VBRealtime Vsfuncs a1root access accreq adsi ajax amazon argus asp aspSample aspVarious aspdotnet aw2kinst cappvariety centura ckeyword classStyle cmaterial cmbin cmdbapp cmenum cmlang cmlistbox cmstd cmstdseed cmtxt cs daz3d db dbCommon dbaccess dnettool dos download flex2 flex3 flex4 framemtn framereq freeWorld freesoft gimp ginpro giodownload google hdml home hta htmlDom ie9svg install java javaSwing javascript jetsql jquery jsp jspTest jspVarious lightbox listasp listmsapi listmsie listmsiis listmsnt listmspatch listmsscript listmsvb listmsvc memo ms msde mysql netbeans oraPlsql oracle oracleWiper oraclehelper orafunc other panoramio pear perl personal pgdojo pgdojo_cal pgdojo_holiday pgdojo_idx pgdojo_ref pgdojo_req php phpVarious phpguide plsql postgres ps r205 realC realwebapp regex rgaki ruby rule sboard sc scprint scquest sdb sdbquest seesaa setup sh_Imagick sh_canvas sh_dotnet sh_google sh_tool sh_web shadowbox shgm shjquery shvbs shweb sjscript skadai skywalker smalltech sperl sqlq src systemdoc tcpip tegaki three toolbox twitter typeface usb useXML vb vbdb vbsfunc vbsguide vbsrc vpc wcsignup webanymind webappgen webclass webparts webtool webwsh win8 winofsql wmi work wp youtube