Exemplo n.º 1
0
/**
 * @brief 一行だけ削除する処理です。 
 * @param pLine 削除する行
 */
void CFootyDoc::DeleteLine(LinePt pLine)
{
	if ( IsReadOnly() ) return;
	
	for (int i=0;i<4;i++)
	{
		if (m_cFirstVisibleLine[i].GetLineNum() == pLine->GetRealLineNum()){
			m_cFirstVisibleLine[i].MoveRealBack(1);
		}
	}
	m_lsLines.erase(pLine);
}
Exemplo n.º 2
0
/**
 * @brief 指定された間の行を一気に削除する処理
 * @param pStart 開始行(これも削除される)
 * @param pEnd 終了行(これは削除されない)
 */
void CFootyDoc::DeleteLine(LinePt pStart,LinePt pEnd)
{
	if ( IsReadOnly() ) return;
	
	// 削除するデータの行番号を取得する
	size_t nRealStart = pStart->GetRealLineNum();
	LinePt pDelEnd = pEnd;
	pDelEnd--;
	size_t nRealEnd = pDelEnd->GetRealLineNum();

	// 最初に表示されている行と被っていたら調整してやる
	for (int i=0;i<4;i++)
	{
		if (nRealStart <= m_cFirstVisibleLine[i].GetLineNum() &&
			m_cFirstVisibleLine[i].GetLineNum() <= nRealEnd)
		{
			m_cFirstVisibleLine[i].SetPosition(pStart);
			m_cFirstVisibleLine[i].MoveRealBack(1);
		}
	}

	// 実際に削除する処理
	m_lsLines.erase(pStart,pEnd);
}