void __fastcall TGridModeDemoMainForm::tvDataControllerFilterGetValueList( TcxFilterCriteria *Sender, int AItemIndex, TcxDataFilterValueList *AValueList) { TDataSet *ADataSet = ((TcxGridDBTableView*)Grid->FocusedView)->DataController->DataSet; TcxGridDBColumn *AColumn = ((TcxGridDBTableView*)Grid->FocusedView)->Columns[AItemIndex]; bool AIsLookupColumn = (AColumn->PropertiesClass == __classid(TcxLookupComboBoxProperties)); try{ Screen->Cursor = crHourGlass; GridModeDemoDataDM->qryHelper->SQL->Clear(); GridModeDemoDataDM->qryHelper->SQL->Add( "Select DISTINCT " + AColumn->DataBinding->FieldName + " From " + GridModeDemoDataDM->GetTableNameByDataSet(ADataSet)); GridModeDemoDataDM->qryHelper->SQL->Add( GetSQLCondition((TcxGridDBTableView*)Grid->FocusedView, false)); GridModeDemoDataDM->qryHelper->Open(); GridModeDemoDataDM->qryHelper->First(); while (!GridModeDemoDataDM->qryHelper->Eof){ Variant ADisplayValue = GridModeDemoDataDM->qryHelper->Fields->Fields[0]->Value; if (AIsLookupColumn){ TcxLookupComboBoxProperties *AProperties = (TcxLookupComboBoxProperties*)AColumn->GetProperties(); ADataSet = AProperties->ListSource->DataSet; ADisplayValue = ADataSet->Lookup( AProperties->KeyFieldNames,ADisplayValue, AProperties->ListFieldNames); } if (VarIsNull(ADisplayValue)) return; AValueList->Add(fviValue, GridModeDemoDataDM->qryHelper->Fields->Fields[0]->Value, ADisplayValue, false); GridModeDemoDataDM->qryHelper->Next(); } GridModeDemoDataDM->qryHelper->Close(); } __finally{ Screen->Cursor = crDefault; } }