This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
LuisLeon_FactuGES/Source/Modulos/Informes base/Views/uViewFiltros.pas
2007-07-10 17:33:08 +00:00

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.