Esempio n. 1
0
        void cbПп_SelectedValueChanged(object sender, EventArgs e)
        {
            IПостПризнак пп    = cbПп.SelectedItem as IПостПризнак;
            int          кодПп = пп.GetIndex();
            ЧастьРечи    чр    = (ЧастьРечи)cbЧр.SelectedItem;
            IИзмПризнак  ип    = ПризнакFactory.ИзмПризнак(чр);

            int[] arrИп = ип.GetLegalValues(кодПп);
            dgvMorph.Rows.Clear();
            dgvMorph.Rows.Add(arrИп.Length);
            cbНф.Items.Clear();
            for (int i = 0; i < arrИп.Length; i++)
            {
                ип = ПризнакFactory.ИзмПризнак(чр);
                ип.Initialize(arrИп[i]);
                string форма = tbОсн1.Text + tbОсн2.Text + tbОсн3.Text;
                dgvMorph.Rows[i].Cells["Наличие"].Value     = true;
                dgvMorph.Rows[i].Cells["КодИзмПризн"].Value = arrИп[i];
                dgvMorph.Rows[i].Cells["ИзмПризн"].Value    = ип.ToString();
                dgvMorph.Rows[i].Cells["Оконч1"].Value      = "";
                dgvMorph.Rows[i].Cells["Оконч2"].Value      = "";
                dgvMorph.Rows[i].Cells["Оконч3"].Value      = "";
                dgvMorph.Rows[i].Cells["Форма"].Value       = форма;

                cbНф.Items.Add(ип);
            }
        }
Esempio n. 2
0
        void cbЧр_SelectedValueChanged(object sender, EventArgs e)
        {
            ЧастьРечи    чр = (ЧастьРечи)cbЧр.SelectedItem;
            IПостПризнак пп = ПризнакFactory.ПостПризнак(чр);

            int[] arrПп = пп.GetLegalValues();
            cbПп.Items.Clear();
            foreach (byte кодПп in arrПп)
            {
                пп = ПризнакFactory.ПостПризнак(чр);
                пп.Initialize(кодПп);
                cbПп.Items.Add(пп);
            }
        }
Esempio n. 3
0
        void btnCreate_Click(object sender, EventArgs e)
        {
            try
            {
                DataAdapter  da         = new DataAdapter(conn);
                ЧастьРечи    чр         = (ЧастьРечи)cbЧр.SelectedItem;
                IПостПризнак пп         = (IПостПризнак)cbПп.SelectedItem;
                int          кодПп      = пп.GetIndex();
                IИзмПризнак  ипНф       = (IИзмПризнак)cbНф.SelectedItem;
                int          кодИпНф    = ипНф.GetIndex();
                int          кодОкончНф = -1;
                foreach (DataGridViewRow r in dgvMorph.Rows)
                {
                    int кодИп = (int)r.Cells["КодИзмПризн"].Value;
                    if ((bool)r.Cells["Наличие"].Value == false)
                    {
                        if (кодИп == кодИпНф)
                        {
                            throw new Exception("Выберете другую начальную форму");
                        }
                        else
                        {
                            continue;
                        }
                    }
                    if (кодИп == кодИпНф)
                    {
                        string оконч1 = (string)r.Cells["Оконч1"].Value;
                        string оконч2 = (string)r.Cells["Оконч2"].Value;
                        string оконч3 = (string)r.Cells["Оконч3"].Value;

                        string начФорма = tbОсн1.Text + оконч1 +
                                          tbОсн2.Text + оконч2 + tbОсн3.Text + оконч3;
                        Форма[] arrФорма = da.НайтиФормы(начФорма);
                        foreach (Форма f in arrФорма)
                        {
                            if (f.частьРечи == чр && f.постПризн.GetIndex() == кодПп)
                            {
                                throw new Exception("Слово уже имеется в словаре");
                            }
                        }

                        кодОкончНф = da.СоздатьОкончание(кодИп, оконч1, оконч2, оконч3);
                    }
                }

                int кодОсн = da.СоздатьОснову(чр, кодПп,
                                              tbОсн1.Text, tbОсн2.Text, tbОсн3.Text, кодОкончНф);
                foreach (DataGridViewRow r in dgvMorph.Rows)
                {
                    int кодИп = (int)r.Cells["КодИзмПризн"].Value;
                    if ((bool)r.Cells["Наличие"].Value == false)
                    {
                        continue;
                    }
                    string оконч1 = (string)r.Cells["Оконч1"].Value;
                    string оконч2 = (string)r.Cells["Оконч2"].Value;
                    string оконч3 = (string)r.Cells["Оконч3"].Value;
                    int    кодОконч;
                    if (кодИп != кодИпНф)
                    {
                        кодОконч = da.СоздатьОкончание(кодИп, оконч1, оконч2, оконч3);
                        da.СоздатьФорму(кодОсн, кодОконч);
                    }
                }

                if (chbAddTempl.Checked)
                {
                    da.СоздатьОбразец(кодОсн, tbНазв.Text, tbПрим.Text);
                }
                MessageBox.Show("Слово добавлено");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }