git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES/trunk@83 c93665c3-c93d-084d-9b98-7d5f4a9c3376
199 lines
5.5 KiB
ObjectPascal
199 lines
5.5 KiB
ObjectPascal
unit uViewFiltros;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
Dialogs, uViewInformeBaseParametros, cxStyles, cxGraphics, cxEdit,
|
|
TBXDkPanels, cxControls, cxInplaceContainer, cxVGrid, cxDropDownEdit,
|
|
ImgList, PngImageList, cxFilterControl, uViewInformeBaseGrid,
|
|
cxDBFilterControl, StdCtrls;
|
|
|
|
type
|
|
IViewFiltros = interface(IViewInformeBaseParametros)
|
|
['{52E941A1-F878-4D9C-B10A-DEA96A39D40D}']
|
|
end;
|
|
|
|
TfrViewFiltros = class(TfrViewInformeBaseParametros, IViewFiltros)
|
|
vgFiltros: TcxVerticalGrid;
|
|
TBXLabel1: TTBXLabel;
|
|
cxStyleRepository1: TcxStyleRepository;
|
|
cxStyleNombreColumna: TcxStyle;
|
|
cxStyleCategoria: TcxStyle;
|
|
PngImageList1: TPngImageList;
|
|
vgFiltrosEditorRow1: TcxEditorRow;
|
|
cxFilterControl1: TcxFilterControl;
|
|
TBXAlignmentPanel3: TTBXAlignmentPanel;
|
|
bRefrescar: TButton;
|
|
procedure vgFiltrosEditorRow1EditPropertiesEditValueChanged(
|
|
Sender: TObject);
|
|
procedure bRefrescarClick(Sender: TObject);
|
|
protected
|
|
procedure RellenarFiltros;
|
|
procedure SetViewInformeBaseGrid(const Value: IViewInformeBaseGrid); override;
|
|
procedure SetModificable(const Value: Boolean); override;
|
|
public
|
|
procedure Execute; override;
|
|
procedure Refresh; override;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{$R *.dfm}
|
|
|
|
uses
|
|
cxCustomData, cxFilter, cxGridDBDataDefinitions,
|
|
cxGridDBTableView, cxGridCustomTableView, cxFilterConsts, cxClasses,
|
|
cxDBData;
|
|
|
|
{ TfrViewFiltros }
|
|
|
|
procedure TfrViewFiltros.Execute;
|
|
begin
|
|
inherited;
|
|
cxFilterControl1.ApplyFilter;
|
|
FViewInformeBaseGrid.FocusedView.DataController.Filter.Active := True;
|
|
end;
|
|
|
|
procedure TfrViewFiltros.Refresh;
|
|
begin
|
|
inherited;
|
|
cxFilterControl1.UpdateFilter;
|
|
SetModificable(Modificable);
|
|
// RellenarFiltros;
|
|
end;
|
|
|
|
procedure TfrViewFiltros.RellenarFiltros;
|
|
var
|
|
i : Integer;
|
|
ACaption : String;
|
|
ARow : TcxEditorRow;
|
|
AColumn : TcxGridDBColumn;
|
|
AValueList : TcxDataFilterValueList;
|
|
|
|
procedure GetFilterStrings(AStrings: TStrings;
|
|
AValueList: TcxDataFilterValueList);
|
|
var
|
|
I: Integer;
|
|
S: string;
|
|
begin
|
|
AStrings.BeginUpdate;
|
|
try
|
|
AStrings.Clear;
|
|
for I := 0 to AValueList.Count - 1 do
|
|
begin
|
|
S := AValueList[I].DisplayText;
|
|
AStrings.AddObject(S, TObject(AValueList[I]));
|
|
end;
|
|
finally
|
|
AStrings.EndUpdate;
|
|
end;
|
|
end;
|
|
|
|
procedure AddRow;
|
|
begin
|
|
ARow := vgFiltros.Add(TcxEditorRow) as TcxEditorRow;
|
|
ARow.Parent := NIL;
|
|
ARow.Properties.Caption := AColumn.Caption;
|
|
ARow.Properties.EditPropertiesClassName := 'TcxComboBoxProperties';
|
|
with (TcxComboBoxProperties(ARow.Properties.EditProperties)) do
|
|
begin
|
|
ARow.Properties.ImageIndex := 0;
|
|
ImmediateDropDown := True;
|
|
ImmediatePost := True;
|
|
ImmediateUpdateText := True;
|
|
PostPopupValueOnTab := True;
|
|
OnEditValueChanged := vgFiltrosEditorRow1EditPropertiesEditValueChanged;
|
|
GetFilterStrings(Items, AValueList);
|
|
end;
|
|
end;
|
|
|
|
begin
|
|
{ vgFiltros.BeginUpdate;
|
|
try
|
|
vgFiltros.ClearRows;
|
|
for i := 0 to ViewInformeBaseParametros.FocusedView.VisibleColumnCount - 1 do
|
|
begin
|
|
AColumn := TcxGridDBColumn(ViewInformeBaseParametros.FocusedView.VisibleColumns[i]);
|
|
AValueList := ViewInformeBaseParametros.FilterValueList[AColumn.Index];
|
|
AddRow;
|
|
end;
|
|
finally
|
|
vgFiltros.EndUpdate;
|
|
end;
|
|
}
|
|
end;
|
|
|
|
procedure TfrViewFiltros.SetViewInformeBaseGrid(const Value: IViewInformeBaseGrid);
|
|
begin
|
|
inherited;
|
|
cxFilterControl1.LinkComponent := FViewInformeBaseGrid.FocusedView;
|
|
end;
|
|
|
|
procedure TfrViewFiltros.vgFiltrosEditorRow1EditPropertiesEditValueChanged(
|
|
Sender: TObject);
|
|
var
|
|
ARow : TcxEditorRow;
|
|
AColumn : TcxGridDBColumn;
|
|
AItemIndex : Integer;
|
|
begin
|
|
{ ARow := TcxEditorRow(vgFiltros.FocusedRow);
|
|
|
|
if not Assigned(ARow) then
|
|
Exit;
|
|
|
|
with (TcxComboBoxProperties(ARow.Properties.EditProperties)) do
|
|
AItemIndex := Items.IndexOf(ARow.Properties.Value);
|
|
|
|
AColumn := ViewInformeBaseParametros.GetColumnByCaption(ARow.Properties.Caption);
|
|
|
|
if Assigned(AColumn) and (AItemIndex <> -1) then
|
|
begin
|
|
AColumn.DataBinding.Filter.BeginUpdate;
|
|
try
|
|
with ViewInformeBaseParametros.FilterValueList[AColumn.Index][AItemIndex]^ do
|
|
begin
|
|
if not (Kind in [fviAll, fviCustom]) then
|
|
AColumn.DataBinding.Filter.Active := True;
|
|
case Kind of
|
|
fviAll:
|
|
begin
|
|
AColumn.Filtered := False;
|
|
ARow.Properties.Value := '';
|
|
end;
|
|
fviCustom:
|
|
ViewInformeBaseParametros.FocusedView.Filtering.RunCustomizeDialog(AColumn);
|
|
fviBlanks:
|
|
AColumn.DataBinding.AddToFilter(nil, foEqual, Value,
|
|
cxGetResourceStringNet(cxSFilterBlankCaption));
|
|
fviNonBlanks:
|
|
AColumn.DataBinding.AddToFilter(nil, foNotEqual, Value,
|
|
cxGetResourceStringNet(cxSFilterBlankCaption));
|
|
fviValue, fviMRU:
|
|
begin
|
|
AColumn.DataBinding.AddToFilter(nil, foEqual, Value, DisplayText);
|
|
AColumn.DataBinding.FilterMRUValueItems.Add(Value, DisplayText);
|
|
end;
|
|
end;
|
|
end;
|
|
finally
|
|
AColumn.DataBinding.Filter.EndUpdate;
|
|
end;
|
|
end;}
|
|
end;
|
|
|
|
procedure TfrViewFiltros.bRefrescarClick(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
Execute;
|
|
end;
|
|
|
|
procedure TfrViewFiltros.SetModificable(const Value: Boolean);
|
|
begin
|
|
inherited;
|
|
vgFiltros.Enabled := Value;
|
|
end;
|
|
|
|
end.
|
|
|