//Yeni Masa Planını Kaydet private void buttonAddNewTableDesign(object sender, EventArgs e) { if (textTableDesignName.Text == "Yeni Masa Planı" || textTableDesignName.Text == "") { KontrolFormu dialog = new KontrolFormu("İzin verilmeyen bir masa planı ismi girdiniz, lütfen kontrol edin", false); dialog.Show(); return; } //Yeni masa planını kaydet tuşu. ekle tuşuna basıp bilgileri girdikten sonra kaydete basıyoruz önce girilen bilgilerin doğruluğu //kontrol edilir daha sonra tablepanel ve textboxtaki bilgiler xmle ve ana ekrana if (newTableForm.Text == "Yeni Masa Planı") { treeMasaPlanName.Nodes.Add(textTableDesignName.Text); //yeni bir dizayn oluşturulur, bilgiler tablepanelden ve textboxtan alındıktan sonra listeye eklenir MasaDizayn newTableDesign = new MasaDizayn(); newTableDesign.masaPlanIsmi = textTableDesignName.Text; string[][] refresher3 = new string[][] { new string[] {null, null, null, null, null, null, null}, new string[] {null, null, null, null, null, null, null}, new string[] {null, null, null, null, null, null, null}, new string[] {null, null, null, null, null, null, null}, new string[] {null, null, null, null, null, null, null}, new string[] {null, null, null, null, null, null, null} }; newTableDesign.masaYerleri = refresher3; foreach (Button tablebutton in tablePanel.Controls) { if (tablebutton.Text != "") { newTableDesign.masaYerleri[tablePanel.GetRow(tablebutton)][tablePanel.GetColumn(tablebutton)] = tablebutton.Text; } } masaDizaynListesi.Add(newTableDesign); //liste kaydedilir XmlSave.SaveRestoran(masaDizaynListesi, "masaDizayn.xml"); //seçilen node olarak son eklenen node gösterilir treeMasaPlanName.SelectedNode = treeMasaPlanName.Nodes[treeMasaPlanName.Nodes.Count - 1]; //masaların initial ismi girilen dizayn ismine göre, ilk 2 kelimesinin ilk harfleriyle belirlenir string buttonText = ""; Array.ForEach(newTableDesign.masaPlanIsmi.Split(' '), s => buttonText += s[0]); //dizayn ismi tek kelimeden oluşması durumunda ismin ilk harfi alınır if (buttonText.Length > 2) buttonText = buttonText[0].ToString().ToUpper() + buttonText[1].ToString().ToUpper(); else buttonText = buttonText.ToUpper(); int masaSayisi = 1; //masaların bilgileri tablepanele girilir for (int i = 0; i < 6; i++) { for (int j = 0; j < 7; j++) { Button tablebutton = tablePanel.Controls["" + i + j] as Button; if (masaDizaynListesi[treeMasaPlanName.SelectedNode.Index].masaYerleri[i][j] != null) { tablebutton.Text = buttonText + masaSayisi; masaDizaynListesi[treeMasaPlanName.SelectedNode.Index].masaYerleri[i][j] = tablebutton.Text; tablebutton.Visible = true; tablebutton.ForeColor = SystemColors.ActiveCaption; masaSayisi++; } else { masaDizaynListesi[treeMasaPlanName.SelectedNode.Index].masaYerleri[i][j] = null; tablebutton.Text = ""; tablebutton.Visible = false; } tablebutton.BackColor = Color.White; } } //liste kaydedilir XmlSave.SaveRestoran(masaDizaynListesi, "masaDizayn.xml"); treeMasaPlanName.Focus(); //eğer 1den fazla dizayn olmuşsa silme butonu aktif hale getirilir if (treeMasaPlanName.Nodes.Count > 1) buttonDeleteTable.Enabled = true; //eğer 10dan fazla dizayn olmuşsa ekleme butonu devredışı duruma getirilir if (treeMasaPlanName.Nodes.Count > 9) buttonAddTableDesign.Enabled = false; KontrolFormu dialog = new KontrolFormu("Yeni Masa Planı Bilgileri Kaydedilmiştir", false); dialog.Show(); } else { //Masa dizaynında değişiklik yapıldıktan sonra basılan kaydet butonu. // Girilen bilgilerin doğruluğu kontrol edilir daha sonra tablepanel ve textboxtaki bilgiler xmle aktarılır ve dizayn ismi treeviewda güncellenir. masaDizaynListesi[treeMasaPlanName.SelectedNode.Index].masaPlanIsmi = textTableDesignName.Text; //tablepaneldeki buton bilgileri alınarak listedeki seçili dizaynın değerleri güncellenir foreach (Button tablebutton in tablePanel.Controls) { if (tablebutton.Text != "") { masaDizaynListesi[treeMasaPlanName.SelectedNode.Index].masaYerleri[tablePanel.GetRow(tablebutton)][tablePanel.GetColumn(tablebutton)] = tablebutton.Text; } else { masaDizaynListesi[treeMasaPlanName.SelectedNode.Index].masaYerleri[tablePanel.GetRow(tablebutton)][tablePanel.GetColumn(tablebutton)] = null; } } //liste kaydedilir XmlSave.SaveRestoran(masaDizaynListesi, "masaDizayn.xml"); // ekranda görünen dizayn ismi güncellenir treeMasaPlanName.Nodes[treeMasaPlanName.SelectedNode.Index].Text = textTableDesignName.Text; //ekranda görünen butonların bilgileri eklenir for (int i = 0; i < 6; i++) { for (int j = 0; j < 7; j++) { Button tablebutton = tablePanel.Controls["" + i + j] as Button; if (masaDizaynListesi[treeMasaPlanName.SelectedNode.Index].masaYerleri[i][j] != null) { tablebutton.Text = masaDizaynListesi[treeMasaPlanName.SelectedNode.Index].masaYerleri[i][j]; tablebutton.Visible = true; tablebutton.ForeColor = SystemColors.ActiveCaption; } else { tablebutton.Text = ""; tablebutton.Visible = false; } tablebutton.BackColor = Color.White; } } KontrolFormu dialog = new KontrolFormu("Masa Planı Bilgileri Güncellenmiştir", false); dialog.Show(); } //kısıtlanan butonların kısıtları kaldırılır, düzen ekranı devredışı bırakılır, düzenlemenin bittiği belirtilir newTableForm.Text = textTableDesignName.Text; buttonAddTableDesign.Enabled = true; buttonEditDesign.Enabled = true; newTableForm.Enabled = false; editingDesign = false; //Nodeların eklenmesinden sonra taşma varsa bile ekrana sığması için font boyutunu küçültüyoruz foreach (TreeNode node in treeMasaPlanName.Nodes) { while (treeMasaPlanName.Width - 12 < System.Windows.Forms.TextRenderer.MeasureText(node.Text, new Font(treeMasaPlanName.Font.FontFamily, treeMasaPlanName.Font.Size, treeMasaPlanName.Font.Style)).Width) { treeMasaPlanName.Font = new Font(treeMasaPlanName.Font.FontFamily, treeMasaPlanName.Font.Size - 0.5f, treeMasaPlanName.Font.Style); } } }
// form load private void MasaPlan_Load(object sender, EventArgs e) { string masaAdi; SqlCommand cmd = SQLBaglantisi.getCommand("SELECT MasaAdi FROM Adisyon WHERE AcikMi=1 AND IptalMi=0"); SqlDataReader dr = cmd.ExecuteReader(); dr.Read(); try { masaAdi = dr.GetString(0); cmd.Connection.Close(); cmd.Connection.Dispose(); KontrolFormu dialog = new KontrolFormu( masaAdi + " adlı masa açık. Açık masa bulunurken masa planlaması yapılamaz", false); dialog.Show(); buttonSaveNewTable.Enabled = false; buttonCancel.Enabled = false; buttonDeleteTable.Enabled = false; buttonEditDesign.Enabled = false; } catch { cmd.Connection.Close(); cmd.Connection.Dispose(); //açılışta capslock açıksa kapatıyoruz. ToggleCapsLock(false); #region xml oku MasaDizayn[] info = new MasaDizayn[1]; //eğer masaDizayn listesi bulunmuyorsa default değerlerle ilk dizaynı oluşturuyoruz if (!File.Exists("masaDizayn.xml")) { if (!File.Exists("restoran.xml")) { departmanVarmi[0] = new Restoran(); departmanVarmi[0].departmanAdi = "Departman"; departmanVarmi[0].departmanMenusu = "Menü"; departmanVarmi[0].departmanEkrani = "Masa Ekranı"; XmlSave.SaveRestoran(departmanVarmi, "restoran.xml"); } XmlLoad<Restoran> loadInfoFromDepartman = new XmlLoad<Restoran>(); departmanVarmi = loadInfoFromDepartman.LoadRestoran("restoran.xml"); info[0] = new MasaDizayn(); info[0].masaPlanIsmi = departmanVarmi[0].departmanEkrani; string[][] refresher = new string[][] { new string[] {"RP1", "RP2", "RP3", "RP4", "RP5", null, null}, new string[] {"RP6", "RP7", "RP8", "RP9", "RP10", null, null}, new string[] {"RP11", "RP12", "RP13", "RP14", "RP15", null, null}, new string[] {"RP16", "RP17", "RP18", "RP19", "RP20", null, null}, new string[] {"RP21", "RP22", "RP23", "RP24", "RP25", null, null}, new string[] {null, null, null, null, null, null, null} }; info[0].masaYerleri = refresher; XmlSave.SaveRestoran(info, "masaDizayn.xml"); } else { XmlLoad<Restoran> loadInfoFromDepartman2 = new XmlLoad<Restoran>(); departmanVarmi = loadInfoFromDepartman2.LoadRestoran("restoran.xml"); } //liste varsa okuyoruz XmlLoad<MasaDizayn> loadInfo = new XmlLoad<MasaDizayn>(); info = loadInfo.LoadRestoran("masaDizayn.xml"); //kendi listemize atıyoruz masaDizaynListesi.AddRange(info); //listenin ilk elemanının ismini ekranda gösteriyoruz textTableDesignName.Text = masaDizaynListesi[0].masaPlanIsmi; //Kaç masa eklendiğini tutması için oluşturulan değişken int masaSayisi = 0; //tüm masalar oluşturuluyor(42 adet) ve listenin ilk elemanının planına göre dolular belirleniyor for (int i = 0; i < 6; i++) { for (int j = 0; j < 7; j++) { Button buttonTable = new Button(); buttonTable.UseVisualStyleBackColor = false; buttonTable.BackColor = Color.White; buttonTable.ForeColor = SystemColors.ActiveCaption; buttonTable.Font = new Font("Arial", 12, FontStyle.Bold); buttonTable.Anchor = AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; tablePanel.Controls.Add(buttonTable, j, i); buttonTable.Click += buttonTablePressed; buttonTable.Name = "" + i + j; if (masaDizaynListesi[0].masaYerleri[i][j] != null) { buttonTable.Text = masaDizaynListesi[0].masaYerleri[i][j]; buttonTable.Visible = true; masaSayisi++; } else buttonTable.Visible = false; } } numericTableCount.Value = masaSayisi; newTableForm.Text = textTableDesignName.Text; treeMasaPlanName.Nodes.Add(masaDizaynListesi[0].masaPlanIsmi); //listede başka dizaynlar varsa onların da isimleri gösteriliyor for (int i = 1; i < masaDizaynListesi.Count; i++) { treeMasaPlanName.Nodes.Add(masaDizaynListesi[i].masaPlanIsmi); } //Nodeların eklenmesinden sonra taşma varsa bile ekrana sığması için font boyutunu küçültüyoruz foreach (TreeNode node in treeMasaPlanName.Nodes) { while (treeMasaPlanName.Width - 12 < System.Windows.Forms.TextRenderer.MeasureText(node.Text, new Font(treeMasaPlanName.Font.FontFamily, treeMasaPlanName.Font.Size, treeMasaPlanName.Font.Style)).Width) { treeMasaPlanName.Font = new Font(treeMasaPlanName.Font.FontFamily, treeMasaPlanName.Font.Size - 0.5f, treeMasaPlanName.Font.Style); } } #endregion //ilk dizaynı seçili dizayn yapıyoruz treeMasaPlanName.SelectedNode = treeMasaPlanName.Nodes[0]; // 1 dizayn varsa silinemesin if (treeMasaPlanName.Nodes.Count < 2) buttonDeleteTable.Enabled = false; // 10 dan fazla dizayn eklenemesin if (treeMasaPlanName.Nodes.Count > 9) buttonAddTableDesign.Enabled = false; } }