private TreeNode create_tree_node( TreeNode treeNode, UInt32 current_blood_num, BloodLineTree.BloodNode tree, int level ) { var wp = this.wp_; var blood_data = new HBloodData(); var bloodNode = tree; while( true ) { wp.HBloodTable.GetData( bloodNode.blood_num, ref blood_data ); var newNode = new TreeNode(){ Text = get_name_by_data( ref blood_data ), Tag = bloodNode.blood_num, ForeColor = current_blood_num == bloodNode.blood_num ? Color.Red : Color.Black, }; if( bloodNode.childNode == null ) { treeNode.Nodes.Add( newNode ); } else { treeNode.Nodes.Add( create_tree_node( newNode, current_blood_num, bloodNode.childNode, level+1 ) ); } if( bloodNode.nextBrother == null ) { break; } bloodNode = bloodNode.nextBrother; } return treeNode; }
private string create_tree_text( UInt32 current_blood_num, BloodLineTree.BloodNode tree, int level ) { var wp = this.wp_; var blood_data = new HBloodData(); var node = tree; using( var sw = new System.IO.StringWriter() ) { while( true ) { wp.HBloodTable.GetData( node.blood_num, ref blood_data ); var mark = current_blood_num == node.blood_num ? "※" : ""; sw.Write( String.Format("{0}|- {1}{2}\r\n", indent(level), mark, get_name_by_data( ref blood_data ) ) ); if( node.childNode != null ) { sw.Write( create_tree_text( current_blood_num, node.childNode, level+1 ) ); } if( node.nextBrother == null ) { break; } node = node.nextBrother; } return sw.ToString(); } }
private void DispBloodLine( UInt32 blood_num ) { var wp = this.wp_; var blood_data = new HBloodData(); wp.HBloodTable.GetData( blood_num, ref blood_data ); var current_blood_num = blood_num; var target_blood_num = current_blood_num; while( true ) { wp.HBloodTable.GetData( target_blood_num, ref blood_data ); if( blood_data.mother_num == wp.Config.NullBloodNumber ) { break; } target_blood_num = blood_data.mother_num; } var tree = new BloodLineTree( wp, BloodLineTree.BloodLineType.MARE, target_blood_num ); var parentNode = new TreeNode(){ Text = String.Format("{0}", get_name_by_data( ref blood_data ) ), Tag = tree.Tree.blood_num, }; if( tree.Tree.childNode == null ) { this.treeView.Nodes.Add( parentNode ); } else { this.treeView.Nodes.Add( create_tree_node( parentNode, current_blood_num, tree.Tree.childNode, 0 ) ); } this.treeView.ExpandAll(); this.linkLabel.Click += ( obj, ev )=> { if( tree.Tree.childNode == null ) { Clipboard.SetText( String.Format( "{0}", get_name_by_data( ref blood_data ) ) ); } else { Clipboard.SetText( String.Format( "{0}\r\n{1}", get_name_by_data( ref blood_data ), create_tree_text( target_blood_num, tree.Tree.childNode, 0 ) ) ); } MessageBox.Show( "クリップボードにコピーしました", "完了", MessageBoxButtons.OK, MessageBoxIcon.Information ); }; }