亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? shtmlreport.cpp

?? 如果在您的軟件中需要輸出報表
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// SHTMLReport.cpp: implementation of the CSHTMLReport class.
//	模塊:啟程報表(基于DHTML)
//	說明:采用HTML提供對表格形式的數據的顯示,目前只提供了幾個常用的接口,
//	接口:
//			void SetIndexFormat(CString strIndexFormat);
//			BOOL MergeCol(int iCol);
//			BOOL MergeRow(int iRow);
//			BOOL DeleteRow(int index);
//			BOOL SetItemHTML(int iRow,int iCol,CString html);
//			BOOL InsertRow(int index);
//			void SetTableName(CString name);
//			void SetHtmlDocPtr(IHTMLDocument2 *pDoc);
//	本代碼可以任意使用、修改、傳播。
//				黃建雄 2003-10-14
//				huangjianxiong@sina.com
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "sreport.h"
#include "SHTMLReport.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CSHTMLReport::CSHTMLReport()
{
	m_pHtmlDoc2=NULL;
	m_iHeadLines=1;
}

CSHTMLReport::~CSHTMLReport()
{

}

//***********************************************
//	指定HTML文檔接口
//**********************************************
void CSHTMLReport::SetHtmlDocPtr(IHTMLDocument2 *pDoc)
{
	m_pHtmlDoc2=pDoc;
}

//***********************************************
//	指定操作的表的名稱,表名稱在HTML模板中指定
//*********************************************
void CSHTMLReport::SetTableName(CString name)
{
	m_strTableName=name;
}

//**************************************************
//	獲取HTML表格COM接口,內部接口
//**************************************************
IHTMLTable * CSHTMLReport::GetTableDispatch()
{
	ASSERT(m_pHtmlDoc2);
	IHTMLElementCollection *all;
	m_pHtmlDoc2->get_all(&all);
	IDispatch *distable;
	all->item(COleVariant(m_strTableName),COleVariant(short(0)),&distable);
	IHTMLTable *pITable=NULL;
	HRESULT hr=distable->QueryInterface(IID_IHTMLTable, (void**)&pITable);//get table dispatch
	ASSERT(hr==S_OK);
	return pITable;
}

//*******************************************************
//	在指定位置插入一行,index==-1表示append
//*******************************************************
BOOL CSHTMLReport::InsertRow(int index)
{
	IHTMLTable *pITable=GetTableDispatch();
	IDispatch *disrow;
	HRESULT hr=pITable->insertRow(index,&disrow);//insert a  row at 1 position
	if(hr!=S_OK) return FALSE;

	IHTMLTableRow *pIRow;
	hr=disrow->QueryInterface(IID_IHTMLTableRow, (void**)&pIRow);
	ASSERT(hr==S_OK);
	
	long cols;
	hr=pITable->get_cols(&cols);
	ASSERT(hr==S_OK&&cols!=0);
	
	IDispatch *discell;
	IHTMLElement *cell;

	CString str= " ";
	BSTR bsStr = str.AllocSysString();
	for(int i=0;i<cols;i++)
	{
		pIRow->insertCell(i,&discell);
		discell->QueryInterface(IID_IHTMLElement,(void **)&cell);
		cell->put_innerHTML(bsStr);
		cell->Release();
		discell->Release();
	}
	SysFreeString(bsStr);
	pIRow->Release();

	if(!m_strIndexFormat.IsEmpty())
	{
		IHTMLElementCollection *irows;
		hr=pITable->get_rows(&irows);
		ASSERT(hr==S_OK);
		long rows;
		hr=irows->get_length(&rows);
		ASSERT(hr==S_OK);
		CString strHead="";
		if(index==-1) index=rows-1;
		for(long i=index;i<rows;i++)
		{
			strHead.Format(m_strIndexFormat,i);
			BSTR bsStrHead=strHead.AllocSysString();
			hr=irows->item(COleVariant(long(i)),COleVariant(long(0)),&disrow);
			ASSERT(hr==S_OK);
			//get row interface
			hr=disrow->QueryInterface(IID_IHTMLTableRow, (void**)&pIRow);
			ASSERT(hr==S_OK);
			IHTMLElementCollection *icells;
			hr=pIRow->get_cells(&icells);
			ASSERT(hr==S_OK);
			hr=icells->item(COleVariant(long(0)),COleVariant(long(0)),&discell);
			ASSERT(hr==S_OK);
			discell->QueryInterface(IID_IHTMLElement,(void **)&cell);
			ASSERT(hr==S_OK);
			cell->put_innerText(bsStrHead);
			SysFreeString(bsStrHead);
			cell->Release();
			pIRow->Release();
			disrow->Release();
		}
		irows->Release();
	}

	pIRow->Release();
	disrow->Release();
	pITable->Release();
	return TRUE;
}

//***************************************************************
//	修改單元格的內容:可以使用html語法
//***************************************************************
BOOL CSHTMLReport::SetItemHTML(int iRow, int iCol, CString html)
{
	IHTMLTable *pITable=GetTableDispatch();
	//get row collect
	IHTMLElementCollection *pIRows;
	HRESULT hr=pITable->get_rows(&pIRows);
	ASSERT(hr==S_OK);
	//get specisfied row
	IDispatch *disrow;
	hr=pIRows->item(COleVariant(long(iRow)),COleVariant(short(0)),&disrow);//iRow row
	if(hr!=S_OK||disrow==NULL) return FALSE;

	IHTMLTableRow *pIRow;
	hr=disrow->QueryInterface(IID_IHTMLTableRow, (void**)&pIRow);
	ASSERT(hr==S_OK);
	//get cell collect
	IHTMLElementCollection *rowcells;
	pIRow->get_cells(&rowcells);
	//get cell
	IDispatch *discell;
	IHTMLElement *cell;
	hr=rowcells->item(COleVariant(long(iCol)),COleVariant(short(0)),&discell);//iCol col
	if(hr!=S_OK||discell==NULL) return FALSE;
	hr=discell->QueryInterface(IID_IHTMLElement,(void **)&cell);
	ASSERT(hr==S_OK);

	BSTR bsStr = html.AllocSysString();
	cell->put_innerHTML(bsStr);
	SysFreeString(bsStr);
	
	cell->Release();
	pIRow->Release();
	pITable->Release();
	return TRUE;
}

//************************************************
//	刪除指定行
//************************************************
BOOL CSHTMLReport::DeleteRow(int index)
{
	IHTMLTable *pITable=GetTableDispatch();
	HRESULT hr=pITable->deleteRow(index);
	pITable->Release();
	return hr==S_OK;
}

//************************************************
//	將指定行數據相同的單元格合并
//************************************************
BOOL CSHTMLReport::MergeRow(int iRow)
{
	IHTMLTable *pITable=GetTableDispatch();
	//get row collect
	IHTMLElementCollection *pIRows;
	HRESULT hr=pITable->get_rows(&pIRows);
	ASSERT(hr==S_OK);
	//get specisfied row
	IDispatch *disrow;
	hr=pIRows->item(COleVariant(long(iRow)),COleVariant(short(0)),&disrow);//iRow row
	if(hr!=S_OK||disrow==NULL) return FALSE;

	IHTMLTableRow *pIRow;
	hr=disrow->QueryInterface(IID_IHTMLTableRow, (void**)&pIRow);
	ASSERT(hr==S_OK);
	//get cell collect
	IHTMLElementCollection *rowcells;
	pIRow->get_cells(&rowcells);
	long cells;
	hr=rowcells->get_length(&cells);

	IDispatch *discell;
	IHTMLElement *icellElement;
	long begin=-1,end=-1;
	CString beginStr;
	CString cellStr;
	long    beginRowSpan=0,rowSpan;
	for(long i=m_strIndexFormat.IsEmpty()?0:1;i<cells;i++)
	{
		//get cell
		hr=rowcells->item(COleVariant(long(i)),COleVariant(short(0)),&discell);
		ASSERT(hr==S_OK&&discell!=NULL);
		hr=discell->QueryInterface(IID_IHTMLElement,(void **)&icellElement);
		ASSERT(hr==S_OK&&icellElement!=NULL);
		
		cellStr=GetElementText(icellElement,inner_text);
		IHTMLTableCell *icell;
		hr=discell->QueryInterface(IID_IHTMLTableCell,(void **)&icell);
		ASSERT(hr==S_OK&&icell!=NULL);
		icell->get_rowSpan(&rowSpan);
		if(cellStr!=beginStr||rowSpan!=beginRowSpan)
		{
			if(end-begin+1>1&&begin!=-1)
			{
				ASSERT(beginRowSpan!=0);
				MergeRowPrivate(pIRow,begin,end);
				cells-=end-begin;
				i-=end-begin;
			}
			begin=end=i;
			beginStr=cellStr;
			beginRowSpan=rowSpan;
		}else
			end=i;
		icell->Release();
		icellElement->Release();
	}

	if(begin!=end)
		MergeRowPrivate(pIRow,begin,end);
	pIRow->Release();
	pITable->Release();
	return TRUE;
}

//************************************************
//	將指定列數據相同的單元格合并
//************************************************
BOOL CSHTMLReport::MergeCol(int iCol)
{
	IHTMLTable *pITable=GetTableDispatch();
	//get row collect
	IHTMLElementCollection *pIRows;
	HRESULT hr=pITable->get_rows(&pIRows);
	ASSERT(hr==S_OK);
	CSArray<COLCELLINFO> colArray;
	if(!MakeColDispatchCollection(pIRows,iCol,colArray)) return FALSE;
	int colCells=colArray.GetSize();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人一区在线| 国产欧美日韩在线观看| 国产亚洲综合在线| 男人操女人的视频在线观看欧美 | 国产一区二区在线影院| 91黄色激情网站| 色天使色偷偷av一区二区| 久久久亚洲午夜电影| 国产自产2019最新不卡| 中文字幕精品三区| 亚洲一区二区视频| 亚洲人成电影网站色mp4| 韩国欧美一区二区| 91精品婷婷国产综合久久性色 | 男女男精品视频网| 欧美亚洲禁片免费| 亚洲天堂2014| 欧美精品高清视频| 欧美大片免费久久精品三p| 亚洲一区二区三区视频在线播放 | 美女在线一区二区| 欧美丰满嫩嫩电影| 欧美日韩中文字幕一区| 亚洲欧美日韩小说| 色综合久久天天| av网站一区二区三区| 国产欧美视频一区二区| av亚洲精华国产精华精华| 日韩伦理av电影| 成人h动漫精品| 亚洲一区二区黄色| 日韩亚洲欧美综合| 国产精品亚洲视频| 一本一本久久a久久精品综合麻豆| 久久综合丝袜日本网| 成人妖精视频yjsp地址| 中文字幕一区二区不卡| 色综合网色综合| 日日欢夜夜爽一区| 欧美成人午夜电影| 亚洲美女视频在线观看| 一区二区三区在线视频免费| 欧美日韩二区三区| 日韩成人一区二区三区在线观看| 欧美精品第1页| 日韩中文字幕麻豆| 成人福利视频网站| 亚洲已满18点击进入久久| 亚洲精品一区二区三区福利| 日本韩国一区二区| 顶级嫩模精品视频在线看| 天天影视网天天综合色在线播放| 国产日韩欧美不卡在线| 国产成人精品亚洲日本在线桃色 | 欧美性做爰猛烈叫床潮| 国产精品亚洲专一区二区三区| 亚洲国产成人高清精品| 中文字幕一区二区三区视频| 精品少妇一区二区三区在线视频| 在线亚洲精品福利网址导航| 丁香激情综合国产| 国产一区二区三区国产| 日韩一区欧美二区| 亚洲国产成人av网| 亚洲综合男人的天堂| 中文字幕色av一区二区三区| 久久久久久久久99精品| 精品免费国产二区三区| 狠狠色丁香婷综合久久| 91精品国产综合久久国产大片| 色噜噜狠狠色综合欧洲selulu| 国产福利一区二区三区视频 | 中文字幕 久热精品 视频在线 | 亚洲在线视频免费观看| 国产精品久久久久久户外露出 | 欧美午夜电影在线播放| 北岛玲一区二区三区四区| 国产精品一卡二卡在线观看| 美女免费视频一区| 奇米影视在线99精品| 蜜臀91精品一区二区三区| 免费观看一级特黄欧美大片| 日韩影院精彩在线| 久久国产精品99久久久久久老狼 | 日本欧美一区二区| 日本大胆欧美人术艺术动态| 日韩1区2区3区| 日本欧美加勒比视频| 2024国产精品| 亚洲一区二区三区中文字幕| 色综合夜色一区| 在线观看成人免费视频| 欧美午夜片在线观看| 欧美日韩在线精品一区二区三区激情| 日本韩国一区二区三区| 欧美精品免费视频| 91精品国产综合久久精品app| 在线综合+亚洲+欧美中文字幕| 欧美一级一区二区| 亚洲精品在线免费播放| 中文字幕乱码一区二区免费| 国产综合色产在线精品| 一区二区三区四区蜜桃| 天天爽夜夜爽夜夜爽精品视频| 青草国产精品久久久久久| 国内偷窥港台综合视频在线播放| 国产成人综合在线播放| 91视频免费播放| 欧美久久久影院| 久久久久九九视频| 亚洲男帅同性gay1069| 婷婷开心久久网| 国产精品18久久久久久久久| 91麻豆产精品久久久久久 | 久久精品国产久精国产爱| 国产精品亚洲人在线观看| 色综合久久中文字幕综合网| 777色狠狠一区二区三区| 国产日韩欧美高清| 石原莉奈在线亚洲三区| 国产精品久久久久久久久久免费看| 一区二区三区欧美激情| 韩国精品在线观看| 色美美综合视频| 成人a免费在线看| 欧美精品在线观看一区二区| 久久久久久久久久久久电影| 一区二区三区在线观看动漫| 狠狠网亚洲精品| 在线观看亚洲成人| 国产三区在线成人av| 天天操天天色综合| fc2成人免费人成在线观看播放| 51精品秘密在线观看| 国产成人av电影在线| 黄色小说综合网站| 欧美日韩一区成人| 亚洲欧美一区二区在线观看| 蜜桃91丨九色丨蝌蚪91桃色| 色久优优欧美色久优优| 中文字幕精品—区二区四季| 久久精品国产精品亚洲红杏| 欧洲一区二区av| 一色桃子久久精品亚洲| 看电影不卡的网站| 欧美日韩国产免费一区二区| 国产精品麻豆欧美日韩ww| 韩国av一区二区三区| 91精品国产综合久久精品app| 亚洲精品国产视频| eeuss鲁片一区二区三区 | 色呦呦国产精品| 国产日韩av一区二区| 久久成人av少妇免费| 麻豆精品新av中文字幕| 欧美美女bb生活片| 亚洲综合免费观看高清在线观看| www.激情成人| 国产精品美女久久久久av爽李琼| 高清av一区二区| 国产酒店精品激情| 精品电影一区二区三区| 蜜臀va亚洲va欧美va天堂| 欧美丰满少妇xxxbbb| 亚洲aⅴ怡春院| 欧美日韩卡一卡二| 亚洲成人av资源| 欧美系列一区二区| 天天综合色天天| 日本一区二区视频在线观看| 亚洲精品国产一区二区精华液| 色一情一乱一乱一91av| 亚洲精品写真福利| 欧美在线视频全部完| 一区二区理论电影在线观看| 欧美调教femdomvk| 偷偷要91色婷婷| 欧美成人伊人久久综合网| 精品无人区卡一卡二卡三乱码免费卡| 欧美一二三四在线| 狠狠网亚洲精品| 国产偷国产偷亚洲高清人白洁 | 一区二区三区精密机械公司| 亚洲天堂精品视频| 欧美一级二级三级蜜桃| 91麻豆国产自产在线观看| 日韩一级免费一区| 色综合久久中文综合久久牛| 国产在线一区二区| 日韩电影一二三区| 亚洲免费伊人电影| 国产欧美1区2区3区| 26uuu久久天堂性欧美| 在线观看91视频| 欧美r级电影在线观看| 国产精品成人一区二区三区夜夜夜| kk眼镜猥琐国模调教系列一区二区 | 欧美男同性恋视频网站| 蜜臀精品久久久久久蜜臀| 欧美国产亚洲另类动漫|