class LboxListview : public LboxWintool,public LboxToken


  CopyString



  
// *********************************************************
// 文字列オブジェクトにコピー
// 行の終わりには、改行コードを付加
// bSelect が true の場合は 選択した行のみコピーする
// bTitle が true の場合は、タイトルもコピーする
// nType
//  0 : タブ
//  1 : カンマ(CSV)
//  2 : \
//  3 : HTML テーブルタグ
//	100 : タブ区切りタイトルのみ
//	101 : カンマ区切りタイトルのみ
//	102 : 改行区切りタイトルのみ
// 戻り値 : true 成功, false 失敗
// *********************************************************
BOOL LboxListview::CopyString(
	BOOL bSelect, BOOL bTitle, int nType, LboxString *LString )
{

	DWORD nRows,nCols;
	DWORD i;
	int nSaveType;

	nSaveType = nType;

	// 通常文字列としてクリア
	LString->SetChar( 0, 0 );

	// ワーク用文字列オブジェクト
	LboxString *LstrWork;
	LstrWork = new LboxString();

	// デリミタ
	char delim[5][4];
	lstrcpy( delim[0], "\t" );
	lstrcpy( delim[1], "," );
	lstrcpy( delim[2], "\\" );
	lstrcpy( delim[4], "\n" );

	nRows = LboxListview::Count();
	nCols = LboxListview::ColumnCount();

	// タイトル部分の作成
	if ( nType == 3 ) {
		// <TABLE>
		LString->operator += ( szTag1 );
	}
	if ( bTitle ) {
		if ( nType == 3 ) {
			// <TR>
			LString->operator += ( szTag2 );
		}
		switch( nSaveType ) {
			case 100:
				nType = 0;
				break;
			case 101:
				nType = 1;
				break;
			case 102:
				nType = 4;
				break;
		}
		for( i = 0; i < nCols; i++ ) {
			if ( nType == 3 ) {
				// <TH>
				LString->operator += ( szTag7 );
			}
			else {
				if ( i != 0 ) {
					LString->operator += ( delim[nType] );
				}
			}
			LboxListview::GetColumnTitle(
				i,
				LstrWork
			);
			LString->operator += ( LstrWork );
			if ( nType == 3 ) {
				// </TH>
				LString->operator += ( szTag8 );
			}
		}
		if ( nType == 3 ) {
			// </TR>
			LString->operator += ( szTag3 );
		}
		if ( nSaveType >= 100 ) {
			delete LstrWork;
			return true;
		}
		LString->operator += ( "\n" );
	}

	// データ部分の作成
	int nRow;
	nRow = -1;
	while( LboxListview::FindNextRow( &nRow ) ) {
		// 選択行のみ
		if ( bSelect ) {
			if ( false == LboxListview::IsState(
				nRow,
				LVIS_SELECTED
				) ) {
				continue;
			}
		}
		if ( nType == 3 ) {
			// <TR>
			LString->operator += ( szTag2 );
		}
		for( i = 0; i < nCols; i++ ) {
			if ( nType == 3 ) {
				// <TD>
				LString->operator += ( szTag4 );
			}
			else {
				if ( i != 0 ) {
					LString->operator += ( delim[nType] );
				}
			}
			LboxListview::GetColumnText(
				i,
				LstrWork
			);
			LString->operator += ( LstrWork );
			if ( nType == 3 ) {
				// </TD>
				LString->operator += ( szTag5 );
			}
		}
		if ( nType == 3 ) {
			// </TR>
			LString->operator += ( szTag3 );
		}
		LString->operator += ( "\n" );
	}

	if ( nType == 3 ) {
		// </TABLE>
		LString->operator += ( szTag6 );
		LString->operator += ( "\n" );
	}

	delete LstrWork;

	return true;
}
  










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





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

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ