C++ Builder и мультивыборка

Тема в разделе "Другие языки", создана пользователем LEXAlForpostl, 12 ноя 2009.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    739
    Симпатии:
    226
    Здравствуйте.
    Код:
    void __fastcall TForm2::RG1Click(TObject *Sender)
    {
    if (RG1->ItemIndex==0)
            Table1->Filtered=false;
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm2::Button2Click(TObject *Sender)
    {
    
    Table1->Filtered  = false;
    Table1->Filtered  =  true;
    }
    //---------------------------------------------------------------------------
    
    
    
    void __fastcall TForm2::Table1FilterRecord(TDataSet *DataSet, bool &Accept)
    {
    Accept =  ((RG1->ItemIndex == 1) && ( ((CS2->Value)==0 &&(
           Table1nazr->Value==CB1->Text
    )) ||
    ((CS2->Value)>0 &&  (CB1->Text=="" )&&
    ( (Table1cena->Value <=  (CS2->Value)) && (Table1cena->Value >=  (CS1->Value)) )
    )
    
    *||((CS2->Value)==0 &&  (Table1nazr->Value==CB1->Text)&&
    (Table1nazr->Value==LB1->Items->Strings[LB1->ItemIndex]) )
    
    
    || ((CS2->Value)>0 &&(Table1nazr->Value==CB1->Text)&&
    ( (Table1cena->Value <=  (CS2->Value)) && (Table1cena->Value >=  (CS1->Value)) )
    )
    ) );
    
    }
    
    //---------------------------------------------------------------------------
    
    void __fastcall TForm2::Button4Click(TObject *Sender)
    {   //Table1->Filtered  = false;
            //if (RG1->ItemIndex==1)
    
           **  for(int i=0; i<LB1->Items->Count; i++)
     {
      if(LB1->Selected[i])
    
      Table1->Filter="nazr=' " + LB1->Items->Strings[LB1->ItemIndex] + " ' ";
    
    
     }
        //Table1->Filtered  =  true;
    
    
    
    }
    //---------------------------------------------------------------------------
    На форме есть таблица- Table1 с полем по которому делаем фильтрацию nazr (название района), компонент радио группа кнопок - RG1Click
    Кнопка обновить - Button2 , кнопка выбрать -Button4, компонент (ListBox) выбора нескольких районов - LB1 и другие компоненты которые корректно работают

    Надо сделать выбор по нескольким районам , указав их в компоненте LB1, это выполняется. но выбор идет только по тому району который был выделен последним в списке выбранных , и либо прописать выбор нескольких районов в методе Асcерt – фильтрации ( cм * ) или отдельно по нажатию кнопки Button4 ( см **)

    Как быть?
     
  2. mayami

    mayami Создатель

    Регистр.:
    12 ноя 2009
    Сообщения:
    19
    Симпатии:
    8
    В твоем примере используеться сразу два (!) метода фильтрования
    зачем?

    1й метод - простой

    установка фильтра
    Table1->Filtered=false;
    //тут ставим фильтр
    Table1->Filter = " ... "
    Table1->Filtered=true;

    отключение фильтра
    Table->Filter = "";
    Table->Filter = false;

    2й метод - сложнее, для более сложного фильтрования которое сложно (не возможно) сделать через метод 1

    пишем код в обработчике FilterRecord()
    пишем в переменную Accept true - если надо рядок
    false- не надо (отфильтрован)
     
Статус темы:
Закрыта.