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

Статус
В этой теме нельзя размещать новые ответы.

LEXAlForpostl

Мой дом здесь!
Регистрация
21 Май 2008
Сообщения
766
Реакции
228
Здравствуйте.
Код:
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 ( см **)

Как быть?
 
В твоем примере используеться сразу два (!) метода фильтрования
зачем?

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

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

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

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

пишем код в обработчике FilterRecord()
пишем в переменную Accept true - если надо рядок
false- не надо (отфильтрован)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху