public void LoadTV()
        {
            try
            {
                SqlConnection cnSQL = new SqlConnection(MyModules.strConnect);
                SqlCommand    cmSQL = new SqlCommand();
                cmSQL.Connection = cnSQL;
                cnSQL.Open();
                SqlDataReader drSQL = null;
                TVList.Nodes.Clear();

                cmSQL.CommandText = "SELECT * FROM Register  ORDER BY mLevel";
                cmSQL.CommandType = CommandType.Text;
                drSQL             = cmSQL.ExecuteReader();
                while (drSQL.Read())
                {
                    TVList.BeginUpdate();
                    TVList.Nodes.Add(drSQL["Code"].ToString() + "a", drSQL["Code"].ToString() + " - " + drSQL["Telephone"].ToString() + " (" + drSQL["Name"].ToString() + ")");
                    TVList.EndUpdate();
                    loadChildren(drSQL["Outline"].ToString(), drSQL["Code"].ToString());
                }

                drSQL.Close();

                cnSQL.Close();
                //  TVList.ExpandAll();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, MyModules.strApptitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
 private void lnkViewTV_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
 {
     if (lnkViewTV.Text == "Expand All")
     {
         lnkViewTV.Text = "Collapse All";
         TVList.ExpandAll();
     }
     else
     {
         lnkViewTV.Text = "Expand All";
         TVList.CollapseAll();
     }
 }
        private void loadChildren(string dOutline, string Code)
        {
            try
            {
                SqlConnection cnSQL1 = new SqlConnection(MyModules.strConnect);
                SqlCommand    cmSQL1 = new SqlCommand();
                cmSQL1.Connection = cnSQL1;
                cnSQL1.Open();
                SqlDataReader drSQL1 = null;
                int           H1     = 0;

                cmSQL1.CommandText = "SELECT * FROM Register WHERE outline like '%@" + Code + "%' AND Code<>'" + Code + "'  ORDER BY mLevel";

                cmSQL1.CommandType = CommandType.Text;
                drSQL1             = cmSQL1.ExecuteReader();
                string d1           = null;
                string d2           = null;
                string d3           = null;
                string d4           = null;
                string d5           = null;
                string d6           = null;
                string d7           = null;
                string d8           = null;
                string d9           = null;
                string d10          = null;
                string dRealOutline = "";
                while (drSQL1.Read())
                {
                    TVList.BeginUpdate();
                    if (MyModules.Left(drSQL1["Outline"].ToString(), Code.Length + 1) == "@" + Code)
                    {
                        dRealOutline = drSQL1["Outline"].ToString();
                    }
                    else
                    {
                        dRealOutline = drSQL1["Outline"].ToString().Substring(MyModules.GetIt4Me(drSQL1["Outline"].ToString(), "@" + Code).Length);    // MyModules.Mid(drSQL1["Outline"].ToString(),;
                    }
                    //dRealOutline =MyModules.Mid(drSQL1["Outline"].ToString(), drSQL1["Outline"].ToString().Length,-1);
                    // dRealOutline =  drSQL1["Outline"].ToString().Substring(dOutline.Length-1); //drSQL1["Outline"].ToString(); //

                    //for (int i=1;i<CountCharacter(dRealOutline, Convert.ToChar("@")); i++)
                    //{
                    int theIndex = CountCharacter(dRealOutline, Convert.ToChar("@"));
                    //}
                    switch (theIndex)
                    {
                    case 2:
                        TVList.Nodes.Add(drSQL1["Code"].ToString() + "a", drSQL1["Code"].ToString() + " - " + drSQL1["Telephone"].ToString() + " (" + drSQL1["Name"].ToString() + ")");
                        break;

                    case 3:
                        if (MyModules.PyramidLevel < 1)
                        {
                        }
                        else
                        {
                            d1 = dRealOutline.Substring(1, dRealOutline.Substring(1).IndexOf("@"));
                            TVList.Nodes[d1 + "a"].Nodes.Add(drSQL1["Code"].ToString(), drSQL1["Code"].ToString() + " - " + drSQL1["Telephone"].ToString() + " (" + drSQL1["Name"].ToString() + ")");
                        }
                        break;

                    case 4:
                        if (MyModules.PyramidLevel < 2)
                        {
                        }
                        else
                        {
                            d1 = dRealOutline.Substring(1, dRealOutline.Substring(1).IndexOf("@"));
                            d2 = dRealOutline.Substring((d1.Length + 3) - 1, dRealOutline.Substring((d1.Length + 4) - 1).IndexOf("@") + 1);
                            TVList.Nodes[d1 + "a"].Nodes[d2].Nodes.Add(drSQL1["Code"].ToString(), drSQL1["Code"].ToString() + " - " + drSQL1["Telephone"].ToString() + " (" + drSQL1["Name"].ToString() + ")");
                        }
                        break;

                    case 5:
                        if (MyModules.PyramidLevel < 3)
                        {
                        }
                        else
                        {
                            d1 = dRealOutline.Substring(1, dRealOutline.Substring(1).IndexOf("@"));
                            d2 = dRealOutline.Substring((d1.Length + 3) - 1, dRealOutline.Substring((d1.Length + 4) - 1).IndexOf("@") + 1);
                            d3 = dRealOutline.Substring((d1.Length + d2.Length + 4) - 1, dRealOutline.Substring((d1.Length + d2.Length + 4) - 1).IndexOf("@"));
                            TVList.Nodes[d1 + "a"].Nodes[d2].Nodes[d3].Nodes.Add(drSQL1["Code"].ToString(), drSQL1["Code"].ToString() + " - " + drSQL1["Telephone"].ToString() + " (" + drSQL1["Name"].ToString() + ")");
                        }
                        break;

                    case 6:
                        if (MyModules.PyramidLevel < 4)
                        {
                        }
                        else
                        {
                            d1 = dRealOutline.Substring(1, dRealOutline.Substring(1).IndexOf("@"));
                            d2 = dRealOutline.Substring((d1.Length + 3) - 1, dRealOutline.Substring((d1.Length + 4) - 1).IndexOf("@") + 1);
                            d3 = dRealOutline.Substring((d1.Length + d2.Length + 4) - 1, dRealOutline.Substring((d1.Length + d2.Length + 4) - 1).IndexOf("@"));
                            d4 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + 5) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + 5) - 1).IndexOf("@"));
                            TVList.Nodes[d1 + "a"].Nodes[d2].Nodes[d3].Nodes[d4].Nodes.Add(drSQL1["Code"].ToString(), drSQL1["Code"].ToString() + " - " + drSQL1["Telephone"].ToString() + " (" + drSQL1["Name"].ToString() + ")");
                        }

                        break;

                    case 7:
                        if (MyModules.PyramidLevel < 5)
                        {
                        }
                        else
                        {
                            d1 = dRealOutline.Substring(1, drSQL1["Outline"].ToString().Substring(1).IndexOf("@"));
                            d2 = dRealOutline.Substring((d1.Length + 3) - 1, dRealOutline.Substring((d1.Length + 4) - 1).IndexOf("@") + 1);
                            d3 = dRealOutline.Substring((d1.Length + d2.Length + 4) - 1, dRealOutline.Substring((d1.Length + d2.Length + 4) - 1).IndexOf("@"));
                            d4 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + 5) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + 5) - 1).IndexOf("@"));
                            d5 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + 6) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + 6) - 1).IndexOf("@"));
                            TVList.Nodes[d1 + "a"].Nodes[d2].Nodes[d3].Nodes[d4].Nodes[d5].Nodes.Add(drSQL1["Code"].ToString(), drSQL1["Code"].ToString() + " - " + drSQL1["Telephone"].ToString() + " (" + drSQL1["Name"].ToString() + ")");
                        }
                        break;

                    case 8:
                        if (MyModules.PyramidLevel < 6)
                        {
                        }
                        else
                        {
                            d1 = dRealOutline.Substring(1, drSQL1["Outline"].ToString().Substring(1).IndexOf("@"));
                            d2 = dRealOutline.Substring((d1.Length + 3) - 1, dRealOutline.Substring((d1.Length + 4) - 1).IndexOf("@") + 1);
                            d3 = dRealOutline.Substring((d1.Length + d2.Length + 4) - 1, dRealOutline.Substring((d1.Length + d2.Length + 4) - 1).IndexOf("@"));
                            d4 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + 5) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + 5) - 1).IndexOf("@"));
                            d5 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + 6) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + 6) - 1).IndexOf("@"));
                            d6 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + 7) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + 7) - 1).IndexOf("@"));
                            TVList.Nodes[d1 + "a"].Nodes[d2].Nodes[d3].Nodes[d4].Nodes[d5].Nodes[d6].Nodes.Add(drSQL1["Code"].ToString(), drSQL1["Code"].ToString() + " - " + drSQL1["Telephone"].ToString() + " (" + drSQL1["Name"].ToString() + ")");
                        }
                        break;

                    case 9:
                        if (MyModules.PyramidLevel < 7)
                        {
                        }
                        else
                        {
                            d1 = dRealOutline.Substring(1, drSQL1["Outline"].ToString().Substring(1).IndexOf("@"));
                            d2 = dRealOutline.Substring((d1.Length + 3) - 1, dRealOutline.Substring((d1.Length + 4) - 1).IndexOf("@") + 1);
                            d3 = dRealOutline.Substring((d1.Length + d2.Length + 4) - 1, dRealOutline.Substring((d1.Length + d2.Length + 4) - 1).IndexOf("@"));
                            d4 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + 5) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + 5) - 1).IndexOf("@"));
                            d5 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + 6) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + 6) - 1).IndexOf("@"));
                            d6 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + 7) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + 7) - 1).IndexOf("@"));
                            d7 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + 8) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + 8) - 1).IndexOf("@"));
                            TVList.Nodes[d1 + "a"].Nodes[d2].Nodes[d3].Nodes[d4].Nodes[d5].Nodes[d6].Nodes[d7].Nodes.Add(drSQL1["Code"].ToString(), drSQL1["Code"].ToString() + " - " + drSQL1["Telephone"].ToString() + " (" + drSQL1["Name"].ToString() + ")");
                        }
                        break;

                    case 10:
                        if (MyModules.PyramidLevel < 8)
                        {
                        }
                        else
                        {
                            d1 = dRealOutline.Substring(1, drSQL1["Outline"].ToString().Substring(1).IndexOf("@"));
                            d2 = dRealOutline.Substring((d1.Length + 3) - 1, dRealOutline.Substring((d1.Length + 4) - 1).IndexOf("@") + 1);
                            d3 = dRealOutline.Substring((d1.Length + d2.Length + 4) - 1, dRealOutline.Substring((d1.Length + d2.Length + 4) - 1).IndexOf("@"));
                            d4 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + 5) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + 5) - 1).IndexOf("@"));
                            d5 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + 6) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + 6) - 1).IndexOf("@"));
                            d6 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + 7) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + 7) - 1).IndexOf("@"));
                            d7 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + 8) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + 8) - 1).IndexOf("@"));
                            d8 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + d7.Length + 9) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + d7.Length + 9) - 1).IndexOf("@"));

                            TVList.Nodes[d1 + "a"].Nodes[d2].Nodes[d3].Nodes[d4].Nodes[d5].Nodes[d6].Nodes[d7].Nodes[d8].Nodes.Add(drSQL1["Code"].ToString(), drSQL1["Code"].ToString() + " - " + drSQL1["Telephone"].ToString() + " (" + drSQL1["Name"].ToString() + ")");
                        }
                        break;

                    case 11:
                        if (MyModules.PyramidLevel < 9)
                        {
                        }
                        else
                        {
                            d1 = dRealOutline.Substring(1, drSQL1["Outline"].ToString().Substring(1).IndexOf("@"));
                            d2 = dRealOutline.Substring((d1.Length + 3) - 1, dRealOutline.Substring((d1.Length + 4) - 1).IndexOf("@") + 1);
                            d3 = dRealOutline.Substring((d1.Length + d2.Length + 4) - 1, dRealOutline.Substring((d1.Length + d2.Length + 4) - 1).IndexOf("@"));
                            d4 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + 5) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + 5) - 1).IndexOf("@"));
                            d5 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + 6) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + 6) - 1).IndexOf("@"));
                            d6 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + 7) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + 7) - 1).IndexOf("@"));
                            d7 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + 8) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + 8) - 1).IndexOf("@"));
                            d8 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + d7.Length + 9) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + d7.Length + 9) - 1).IndexOf("@"));
                            d9 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + d7.Length + d8.Length + 10) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + d7.Length + d8.Length + 10) - 1).IndexOf("@"));

                            TVList.Nodes[d1 + "a"].Nodes[d2].Nodes[d3].Nodes[d4].Nodes[d5].Nodes[d6].Nodes[d7].Nodes[d8].Nodes[d9].Nodes.Add(drSQL1["Code"].ToString(), drSQL1["Code"].ToString() + " - " + drSQL1["Telephone"].ToString() + " (" + drSQL1["Name"].ToString() + ")");
                        }
                        break;

                    case 12:
                        if (MyModules.PyramidLevel < 10)
                        {
                        }
                        else
                        {
                            d1  = dRealOutline.Substring(1, drSQL1["Outline"].ToString().Substring(1).IndexOf("@"));
                            d2  = dRealOutline.Substring((d1.Length + 3) - 1, dRealOutline.Substring((d1.Length + 4) - 1).IndexOf("@") + 1);
                            d3  = dRealOutline.Substring((d1.Length + d2.Length + 4) - 1, dRealOutline.Substring((d1.Length + d2.Length + 4) - 1).IndexOf("@"));
                            d4  = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + 5) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + 5) - 1).IndexOf("@"));
                            d5  = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + 6) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + 6) - 1).IndexOf("@"));
                            d6  = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + 7) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + 7) - 1).IndexOf("@"));
                            d7  = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + 8) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + 8) - 1).IndexOf("@"));
                            d8  = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + d7.Length + 9) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + d7.Length + 9) - 1).IndexOf("@"));
                            d9  = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + d7.Length + d8.Length + 10) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + d7.Length + d8.Length + 10) - 1).IndexOf("@"));
                            d10 = dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + d7.Length + d8.Length + d9.Length + 10) - 1, dRealOutline.Substring((d1.Length + d2.Length + d3.Length + d4.Length + d5.Length + d6.Length + d7.Length + d8.Length + d9.Length + 10) - 1).IndexOf("@"));

                            TVList.Nodes[d1 + "a"].Nodes[d2].Nodes[d3].Nodes[d4].Nodes[d5].Nodes[d6].Nodes[d7].Nodes[d8].Nodes[d9].Nodes[d10].Nodes.Add(drSQL1["Code"].ToString(), drSQL1["Code"].ToString() + " - " + drSQL1["Telephone"].ToString() + " (" + drSQL1["Name"].ToString() + ")");
                        }
                        break;

                    default:
                        if (H1 == 0)
                        {
                            TVList.Nodes.Add("MORE12345", "More Than 10 Levels");
                            H1 = 1;
                        }
                        TVList.Nodes["MORE12345"].Nodes.Add(drSQL1["Code"].ToString(), drSQL1["Code"].ToString() + " - " + drSQL1["Telephone"].ToString() + " (" + drSQL1["Name"].ToString() + ")");
                        break;
                    }
                    TVList.EndUpdate();
                }

                drSQL1.Close();
                cnSQL1.Close();
            }
            catch (Exception ex)
            {
                // if (Microsoft.VisualBasic.Information.Err().Number == 91)
                //{
                //     Microsoft.VisualBasic.Information.Err().Clear();

                //    TVList.Nodes.Add(drSQL["Code"].ToString(), drSQL["Code"].ToString() + " - " + drSQL["Telephone"].ToString() + "(" + drSQL["Name"].ToString() + ")");

                //}
                //else
                //{
                MessageBox.Show(ex.Message, MyModules.strApptitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
                //}
            }
        }