На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
Страницы: (3) 1 [2] 3  все  ( Перейти к последнему сообщению )  
> Два comboBox
    Чтобы избежать повторений надо данные заносить в TStringList, предварительно у него установив Sorted = True и Duplicate = dupIgnore
      Да, это же еще надо удалить повторяющийся алимент...
      Как бы так (без изысков с файлом типа ini и всяких там других box'ов и stringlist'ов (простите меня, за последнее, уважаемый KAV :) )):

      Создаем два файла ComboBox1.txt и ComboBox2.txt
      Файл ComboBox1.txt
      ExpandedWrap disabled
        Title 1                                    
        Title 2                                    
        Повторяющийся элемент ComboBox'ов          
        Еще один повторяющийся элемент  ComboBox'ов

      Файл ComboBox2.txt
      ExpandedWrap disabled
        pathname1.txt                              
        C:\temp\pathname2.txt
        Повторяющийся элемент ComboBox'ов          
        Еще один повторяющийся элемент  ComboBox'ов

      Пишем:
      ExpandedWrap disabled
        ...
        //---------------------------------------------------------------------------
        void __fastcall TForm1::FormCreate(TObject *Sender)
        {
          ComboBox1->Items->LoadFromFile("ComboBox1.txt");
          ComboBox2->Items->LoadFromFile("ComboBox2.txt");
        }
        //---------------------------------------------------------------------------
        void __fastcall TForm1::ComboBox1Select(TObject *Sender)
        {
        ComboBox2->ItemIndex=ComboBox1->ItemIndex;  // сравнение элементов
          if (ComboBox1->Text.Pos(ComboBox2->Text))
             ShowMessage("Ай-я-яй!\nНа этот раз Вам не удалось избежать повторений в ComboBox'ax!");
          else
             ShowMessage("Повторений в ComboBox'ax нет.");
        }
        //---------------------------------------------------------------------------
        void __fastcall TForm1::ComboBox2Select(TObject *Sender)
        {
        ComboBox1->ItemIndex=ComboBox2->ItemIndex; // сравнение элементов
          if (ComboBox1->Text.Pos(ComboBox2->Text))
             ShowMessage("Ай-я-яй!\nВам снова не удалось избежать повторений в ComboBox'ax!");
          else
             ShowMessage("Повторений в ComboBox'ax нет.");
             }
        //---------------------------------------------------------------------------
         
        void __fastcall TForm1::Button1Click(TObject *Sender)
        {
          ComboBox1->Items->Add(ComboBox1->Text); // добавляем текст
          ComboBox1->Items->SaveToFile("ComboBox1.txt"); // записываем в файл
        }
        //---------------------------------------------------------------------------
        void __fastcall TForm1::Button2Click(TObject *Sender)
        {
          ComboBox2->Items->Add(ComboBox2->Text); // добавляем текст
          ComboBox2->Items->SaveToFile("ComboBox2.txt"); // записываем в файл
        }
        //---------------------------------------------------------------------------
        void __fastcall TForm1::Button3Click(TObject *Sender)
        {
          int i;
          i = ComboBox1->Items->IndexOf(ComboBox2->Text);
            if (i >= 0)
              ComboBox1->Items->Delete(i);
              ComboBox1->ItemIndex = 0; // удаляем элемент ComboBox'a
              {
                ComboBox1->Items->SaveToFile("ComboBox1.txt"); // записываем в файл
              }
        }
        //---------------------------------------------------------------------------
        void __fastcall TForm1::Button4Click(TObject *Sender)
        {
          int i;
          i = ComboBox2->Items->IndexOf(ComboBox1->Text);
            if (i >= 0)
              ComboBox2->Items->Delete(i);
              ComboBox2->ItemIndex = 0; // удаляем элемент ComboBox'a
              {
                ComboBox2->Items->SaveToFile("ComboBox2.txt"); // записываем в файл
              }
        }
        //---------------------------------------------------------------------------
        void __fastcall TForm1::Button5Click(TObject *Sender)
        {
        int i;
             i = ComboBox1->ItemIndex;
             if (i >= 0)
             ComboBox1->Items->Delete(i);
             ComboBox1->ItemIndex = 0;
             {
                ComboBox1->Items->SaveToFile("ComboBox1.txt"); // записываем в файл
              }
        }
        //---------------------------------------------------------------------------
        void __fastcall TForm1::Button6Click(TObject *Sender)
        {
        int i;
             i = ComboBox2->ItemIndex;
             if (i >= 0)
             ComboBox2->Items->Delete(i);
             ComboBox2->ItemIndex = 0;
              {
                ComboBox2->Items->SaveToFile("ComboBox2.txt"); // записываем в файл
              }
        }
        //---------------------------------------------------------------------------
        void __fastcall TForm1::Button7Click(TObject *Sender)
        {
        int ix;
          ix = ComboBox1->Items->IndexOf(ComboBox2->Text);
            if (ix >= 0)
              ComboBox1->Items->Delete(ix); // если есть повтор
              ComboBox1->ItemIndex = 0; // удаляем элемент ComboBox'a
              {
                ComboBox1->Items->SaveToFile("ComboBox1.txt"); // записываем в файл
              }
        {
          int iy;
          iy = ComboBox2->Items->IndexOf(ComboBox1->Text);
            if (iy >= 0)
              ComboBox2->Items->Delete(ix); // если есть повтор
              ComboBox2->ItemIndex = 0; // удаляем элемент ComboBox'a
              {
                ComboBox2->Items->SaveToFile("ComboBox2.txt"); // записываем в файл
              }
           }
        }
        //---------------------------------------------------------------------------

      Теперь в любом ComboBox'e выбираем Повторяющийся элемент ComboBox'ов, и ждем сообщения :)
      Вариант ComboBox2Select->ShowMessages не смог проверить, поскольку у меня было установлено
      ExpandedWrap disabled
        ComboBox2->Enabled = false
      :D
      Сообщение отредактировано: Old -
        Спасибо ДОШЛО
          А вообще-то можно обрабатывать и так:
          ExpandedWrap disabled
            void __fastcall TForm1::ComboBox1Select(TObject *Sender)
            {
            ComboBox2->ItemIndex=ComboBox1->ItemIndex;
              if (ComboBox1->Text.Pos(ComboBox2->Text))
                  {
                     if (Application->MessageBox(
                            "Ай-я-яй!\nОбнаружены совпадения в ComboBox'ax!\nУдалить элемент!",
                            "Проверка сопадений",
                            MB_OK + MB_ICONWARNING))
                            {
                            ComboBox1->Items->Delete(ComboBox1->ItemIndex);// удаляем элемент ComboBox'a
                            ComboBox1->ItemIndex = 0;
                            }
                      }
              else
                 Application->MessageBoxA("Совпадений в ComboBox'ax нет.", "Проверка совпадений", MB_ICONASTERISK);
                 }
            :wall: :wall: :wall:
            что за такое невыходит повторения есть
            :'( :'( :'(
              PsiHo, почитай #16
                Song
                читал
                при использовании Sorted = True получается что когда ты нажал на кнопку оно отсортировало (ну это и понятно) а мне данное действие не подходит...

                а насчет
                Duplicate = dupIgnore

                Где оно что найти не могу может покажешь
                (и просьба пиши поподробнее)
                :yes:
                  Цитата
                  PsiHo, 13.04.04, 12:46
                  а насчет
                  Duplicate = dupIgnore

                  Где оно что найти не могу может покажешь
                  (и просьба пиши поподробнее)

                  оно у TStringList. Но без Sorted оно работать не будет.
                    Цитата PsiHo @ 13.04.04, 06:19
                    :wall: :wall: :wall:
                    что за такое невыходит повторения есть
                    :'( :'( :'(


                    Так оно ж должно удаляться при нажатии кнопочки...

                    Речь по-прежнему идет о сравнении двух ComboBox:
                    ExpandedWrap disabled
                      ComboBox2->ItemIndex=ComboBox1->ItemIndex;
                    ?
                    В таком случае, если все это начать сортировать...
                    Например, если в ComboBox1 после последнего итема на я добавить итем на а и отсортировать...
                    Он же из последнего станет первым, и что тогда с чем сравнивать.
                    Ну да, если вводить в оба бокса две идентичные строки, и потом сортировать, и отлавливать совпадения...
                    Но это уже садомазохизм какой-то получается...
                    И что-то мне очень сильно кажется, что
                    Sorted = True
                    Duplicate = dupIgnore

                    не буде сортировать и сравнивать элементы в двух ComboBox...
                    Сообщение отредактировано: Old -
                      Old,
                      1) перед занесением элемента в любой список прогоняй его через TStringList.
                      2) Постоянно храни данные в TStringList, а после добавления просто ассигни на TComboBox.Items
                      3) Обрабатывай циклом в конце концов, удаляя всё вручную..

                      Удивлён, что такой вопрос столь долго обсуждается.
                        Song

                        а што ты хотел чтобы все вопросы решался мигом или как...
                        а насчет:
                        Sorted = True
                        Duplicate = dupIgnore
                        поставил, но нефига не выходит

                        p.s. может сам побыстрому напишеш, ась...

                        Old
                        да, речь идет по-прежнему о сравнении, а потом и добавке двух combobox'ов
                        ComboBox2->ItemIndex=ComboBox1->ItemIndex;

                        ё - мае:
                        дык, как сделать...
                          Цитата
                          PsiHo, 15.04.04, 15:33
                          а што ты хотел чтобы все вопросы решался мигом

                          именно.

                          После того как поставил Sorted = True и Duplicate = dupIgnore
                          добавляй в список две одинаковых строки. Увидишь, что вторая не добавится.
                            Song
                            я же это уже писал
                            читай #26

                            Цитата
                            PsiHo, 15.04.04, 11:33
                            а насчет:
                            Sorted = True
                            Duplicate = dupIgnore
                            поставил, но нефига не выходит


                            напиши как именно по твоему
                            ( :wacko: )
                            Сообщение отредактировано: PsiHo -
                              Мда.. тяжёлый случай..
                              Хочешь на Дельфи?
                                можна
                                а случай тяжёлый (даже очень ) :D :D :D
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) 1 [2] 3  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0440 ]   [ 16 queries used ]   [ Generated: 1.05.24, 14:41 GMT ]