![]() |
|
CxGrid'de Runtime Filtreleme (Çözüldü) - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6) +--- Konu Başlığı: CxGrid'de Runtime Filtreleme (Çözüldü) (/showthread.php?tid=2701) |
CxGrid'de Runtime Filtreleme (Çözüldü) - yhackup - 03-10-2018 CxGrid'de runtime filtreleme nasıl yapılır ? böyle örnek buldum ama , anlayamadım. var AItemList: TcxFilterCriteriaItemList; ... with <GridView>.DataController.Filter do begin BeginUpdate; try Root.Clear; Root.BoolOperatorKind := fboOr; Root.AddItem(colCustNo, foLess, 1000, '1000'); AItemList := Root.AddItemList(fboOr); AItemList.AddItem(colName, foLike, 'A%', 'A%'); AItemList.AddItem(colName, foLike, 'Z%', 'Z%'); finally EndUpdate; end; end; Çözüm, var AItemList: TcxFilterCriteriaItemList; Value: String; begin Value := '%' + TcxCustomEdit(Sender).EditValue + '%'; MyCardView.DataController.Filter.BeginUpdate; try MyCardView.DataController.Filter.Root.Clear; MyCardView.DataController.Filter.Root.AddItem(MyCardViewfirma, foLess, 10, '10'); AItemList := MyCardView.DataController.Filter.Root.AddItemList(fboOr); AItemList.AddItem(MyCardViewfirma, foLike, Value, Value); AItemList.AddItem(MyCardViewfirma, foLike, Value, Value); finally MyCardView.DataController.Filter.EndUpdate; MyCardView.DataController.Filter.Active := True; end; end; Cvp: CxGrid'de Runtime Filtreleme (Çözüldü) - adelphiforumz - 03-10-2018 biraz geç gördüm cevap yazana kadar siz halletmişşiniz. Bu da benim yoğurt yiyişim type
TypeFilter = (FilterPasif=0, FilterAktif=1, FilterSave=3, FilterLoad=4);
...
...
type TGridFilterRec = Record
sColName:TcxGridDBColumn;
foKosul:TcxFilterOperatorKind;
vValue:Variant;
vDisplayValue:Variant;
fbokVarmi : Boolean;
fbokBoolOperatorKind : TcxFilterBoolOperatorKind;
end;
...
...
procedure pr_FiltercxGrid(_FilterIslemi:TypeFilter; _GridDBView:TcxGridDBTableView; const _FilterRec:array of TGridFilterRec);
var
AItemList: TcxFilterCriteriaItemList;
I : Integer;
begin
with _GridDBView.DataController.Filter do
begin
BeginUpdate;
try
Root.Clear;
if _FilterIslemi = FilterAktif then
begin
for I := 0 to High(_FilterRec) do
begin
if _FilterRec[I].fbokVarmi = True then
Root.BoolOperatorKind := _FilterRec[I].fbokBoolOperatorKind;
if _FilterRec[I].vDisplayValue <> null then
Root.AddItem(_FilterRec[I].sColName, _FilterRec[I].foKosul, _FilterRec[I].vValue, _FilterRec[I].vDisplayValue)
else
Root.AddItem(_FilterRec[I].sColName, _FilterRec[I].foKosul, _FilterRec[I].vValue, VarToStr(_FilterRec[I].vValue));
end;
end;
except on E: Exception do
begin
prc_LogToFile('Application Err : pr_FiltercxGrid (EntityFunctions) -> Form Adı ' + Screen.ActiveForm.Name + ' -- ' + 'HataSinifi : ' + E.ClassName + ' -- HataMesaji : ' + E.Message, 1, 1);
end;
End;
EndUpdate;
Active := True;
end;
end;
...
...
...
procedure TForm1.btnXClick(Sender: TObject);
var
_FilterRec : array of TGridFilterRec;
begin
SetLength(_FilterRec, 1);
_FilterRec[0].sColName := 'XXXXX';
_FilterRec[0].foKosul := foLike;
_FilterRec[0].vValue := ViewListe.DataController.Filter.PercentWildcard + sEdtArama.Text + ViewListe.DataController.Filter.PercentWildcard;
_FilterRec[0].vDisplayValue := ViewListe.DataController.Filter.PercentWildcard + sEdtArama.Text + ViewListe.DataController.Filter.PercentWildcard;
_FilterRec[0].fbokVarmi := False;
pr_FiltercxGrid(FilterAktif, ViewListe, _FilterRec);
.... yada
pr_FiltercxGrid(FilterPasif, ViewListe, []);
end;
|