// m_PT から分岐手順の追加
private void cdr_Link()
{
DialogResult rc;
CELL wp;
if (m_PT == null) return;
rc = MessageBox.Show("分岐手順として追加しますか", "選択",
MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (rc == DialogResult.No) return;
// 分岐が無いとき、分岐の開始を作成
if (m_PT.cdr==null)
{ // 基本手順→分岐選択(level アップ)
m_PT.cdr = m_PT.car;
m_PT.car = null;
m_PT = m_PT.cdr;
CELL.UpLevel(m_PT, 1);
CELL.UpLevel(m_Copy, m_PT.level-m_Copy.level);
}
// 分岐があるとき
else
{ if (m_PT.level < m_PT.cdr.level)
{ CELL.UpLevel(m_Copy, m_PT.cdr.level-m_Copy.level);
}
// 選択A(cdr)を level アップ
else
{ wp = m_PT.cdr;
m_PT.cdr = m_PT.car;
m_PT.car = null;
m_PT = m_PT.cdr;
CELL.UpLevel(m_PT, 1);
CELL.UpLevel(m_Copy, m_PT.level-m_Copy.level);
m_Copy.car.cdr = wp;
}
}
// 分岐手順の追加
for(; m_PT.cdr!=null; m_PT=m_PT.cdr);
m_PT.cdr = m_Copy.car;
m_PT.next = m_Copy.car;
m_PT = m_Copy.car;
}
|