GetTable メソッド

構文

BOOL GetTable(VARIANT* celltext, long* nRows, long* nColumns, long* nTextHeight, long* nSpace,
     double* xPos, double* yPos)

(JavaScript用) string GetTableJS();

カレントのオブジェクトが表オブジェクトの場合、その情報を取得します。

パラメータ

celltext
表の中の文字列の配列。左上から右下に向かって順に並びます(まず1行目を左から右へ、次に2行目を左から右へ)。
型は VT_VARIANT | VT_ARRAY にしてください。
nRows
行数。
nColumns
桁数。
nTextHeight
文字の高さ。0.1mm単位(1:100の縮尺で出力したときのサイズ)。
nSpace
文字の余白。0.1mm単位。
xPos
表の左上のX座標。
yPos
表の左上のY座標。

戻り値

表オブジェクトの情報を取得できた場合 0 以外を返します。できなかった場合は 0 を返します。

使用例

// 間取りオブジェクトへ接続
CMadoriDoc * m_MadoriDoc = new CMadoriDoc();
CLSIDFromProgID (L"MyHomeDesignerMadori.MadoriDoc", &clsid);
GetActiveObject (clsid, NULL, &pUnk);
pUnk->QueryInterface (IID_IDispatch, (void**)(&pDisp));
m_MadoriDoc->AttachDispatch (pDisp);

// 列挙する
long lRet = m_MadoriDoc->GetTopObject();
if (lRet == 0) AfxMessageBox(TEXT("何もない"));

while (lRet)
{
	ULONG uType = m_MadoriDoc->GetCurrentObjectType();
	short nLayer = m_MadoriDoc->GetCurrentObjectLayer();
	CString strMsg;
	if (uType == 67) // 表
	{
		VARIANT celltext;
		long nRows, nColumns, nTextHeight, nSpace;
		double xPos, yPos;
		celltext.vt = VT_VARIANT | VT_ARRAY;
		celltext.parray = NULL;
		m_MadoriDoc->GetTable(&celltext, &nRows, &nColumns, &nTextHeight, &nSpace, &xPos, &yPos);
		ULONG uCells = 0;
		if (celltext.parray)
			uCells = celltext.parray->rgsabound[0].cElements;
		CString strMsg;
		strMsg.Format(
			TEXT("Table cells[%d]rows[%d]columns[%d]textheight[%d]space[%d]xPos[%lf]yPos[%lf]"),
			uCells, nRows, nColumns, nTextHeight, nSpace, xPos, yPos);
		AfxMessageBox(strMsg);
		if (uCells > 0)
		{
			VARIANT * pVar;
			SafeArrayAccessData(celltext.parray, (void**)&pVar);
			for (ULONG u = 0; u < uCells; u++)
			{
				strMsg.Format(TEXT("CellText %u[%s]"), u, pVar[u].bstrVal);
				AfxMessageBox(strMsg);
			}
			SafeArrayUnaccessData(celltext.parray);
		}
		if (celltext.parray) SafeArrayDestroy(celltext.parray);
	}
	lRet = m_MadoriDoc->GetNextObject();
}

// JavaScript sample
var doc = new CMadoriDoc();
var lRet = doc.GetTopObject();

while(lRet){
	var uType =doc.GetCurrentObjectType();
	switch (uType){
	case 67: // table
		var data = eval( doc.GetTableJS() );

		var msg = " Result[" + data.Result + "]";
		alert(msg);

		msg =	" Rows[" + data.Rows + "]";
		alert(msg);
		msg =	" Columns[" + data.Columns + "]";
		alert(msg);

		msg =	" TextHeight[" + data.TextHeight + "]";
		alert(msg);
		msg =	" Space[" + data.Space + "]";
		alert(msg);

		msg =	" xPos[" + data.XPos + "]";
		alert(msg);
		msg =	" yPos[" + data.YPos + "]";
		alert(msg);

		var nCells = data.CellText.length;
		alert( nCells );
		for( var i=0 ; i < nCells ; i++ )
		{
			msg = "CellText:[" + data.CellText[i] + "]";
			alert( msg );
		}
		break;
	}

	lRet = doc.GetNextObject();
}