Стартовый пул
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
program project1;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
uses
|
||||
{$IFDEF UNIX}{$IFDEF UseCThreads}
|
||||
cthreads,
|
||||
{$ENDIF}{$ENDIF}
|
||||
Interfaces, // this includes the LCL widgetset
|
||||
Forms, Unit1, rxnew;
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
Application.Initialize;
|
||||
Application.CreateForm(TForm1, Form1);
|
||||
Application.Run;
|
||||
end.
|
||||
|
@@ -0,0 +1,295 @@
|
||||
{ rxdbgrid unit
|
||||
|
||||
Copyright (C) 2005-2017 Lagunov Aleksey alexs75@yandex.ru and Lazarus team
|
||||
original conception from rx library for Delphi (c)
|
||||
|
||||
This library is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Library General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or (at your
|
||||
option) any later version with the following modification:
|
||||
|
||||
As a special exception, the copyright holders of this library give you
|
||||
permission to link this library with independent modules to produce an
|
||||
executable, regardless of the license terms of these independent modules,and
|
||||
to copy and distribute the resulting executable under terms of your choice,
|
||||
provided that you also meet, for each linked independent module, the terms
|
||||
and conditions of the license of that module. An independent module is a
|
||||
module which is not derived from or based on this library. If you modify
|
||||
this library, you may extend this exception to your version of the library,
|
||||
but you are not obligated to do so. If you do not wish to do so, delete this
|
||||
exception statement from your version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public License
|
||||
along with this library; if not, write to the Free Software Foundation,
|
||||
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
}
|
||||
|
||||
{$I rx.inc}
|
||||
|
||||
unit RxDBGrid_PopUpFilterUnit;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, DividerBevel, ListFilterEdit, Forms, Controls,
|
||||
Graphics, Dialogs, Buttons, ComCtrls, CheckLst, ButtonPanel, StdCtrls, Menus,
|
||||
rxdbgrid;
|
||||
|
||||
type
|
||||
|
||||
{ TRxDBGrid_PopUpFilterForm }
|
||||
|
||||
TRxDBGrid_PopUpFilterForm = class(TForm)
|
||||
ButtonPanel1: TButtonPanel;
|
||||
CheckBox1: TCheckBox;
|
||||
CheckListBox1: TCheckListBox;
|
||||
DividerBevel1: TDividerBevel;
|
||||
DividerBevel2: TDividerBevel;
|
||||
DividerBevel3: TDividerBevel;
|
||||
MenuItem1: TMenuItem;
|
||||
MenuItem2: TMenuItem;
|
||||
MenuItem3: TMenuItem;
|
||||
PopupMenu1: TPopupMenu;
|
||||
SpeedButton1: TSpeedButton;
|
||||
SpeedButton2: TSpeedButton;
|
||||
SpeedButton3: TSpeedButton;
|
||||
SpeedButton4: TSpeedButton;
|
||||
SpeedButton5: TSpeedButton;
|
||||
SpeedButton6: TSpeedButton;
|
||||
SpeedButton8: TSpeedButton;
|
||||
SpeedButton9: TSpeedButton;
|
||||
procedure CheckBox1Change(Sender: TObject);
|
||||
procedure CheckListBox1ClickCheck(Sender: TObject);
|
||||
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||
procedure MenuItem1Click(Sender: TObject);
|
||||
procedure SpeedButton1Click(Sender: TObject);
|
||||
procedure SpeedButton3Click(Sender: TObject);
|
||||
procedure SpeedButton4Click(Sender: TObject);
|
||||
procedure SpeedButton5Click(Sender: TObject);
|
||||
procedure SpeedButton6Click(Sender: TObject);
|
||||
procedure SpeedButton9Click(Sender: TObject);
|
||||
private
|
||||
FRxDBGrid:TRxDBGrid;
|
||||
FRxColumn: TRxColumn;
|
||||
procedure UpdateChList;
|
||||
procedure Localize;
|
||||
public
|
||||
constructor CreatePopUpFilterForm(ARxColumn: TRxColumn);
|
||||
end;
|
||||
|
||||
implementation
|
||||
uses LCLType, rxdconst;
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
{ TRxDBGrid_PopUpFilterForm }
|
||||
|
||||
procedure TRxDBGrid_PopUpFilterForm.SpeedButton1Click(Sender: TObject);
|
||||
begin
|
||||
if TComponent(Sender).Tag > 0 then
|
||||
FRxColumn.SortOrder:=smUp
|
||||
else
|
||||
if TComponent(Sender).Tag < 0 then
|
||||
FRxColumn.SortOrder:=smDown
|
||||
else
|
||||
FRxColumn.SortOrder:=smNone;
|
||||
FRxDBGrid.SetSort([FRxColumn.FieldName], [FRxColumn.SortOrder], true);
|
||||
Close;
|
||||
end;
|
||||
|
||||
procedure TRxDBGrid_PopUpFilterForm.SpeedButton3Click(Sender: TObject);
|
||||
begin
|
||||
FRxColumn.Filter.State:=rxfsAll;
|
||||
FRxColumn.Filter.CurrentValues.Clear;
|
||||
FRxDBGrid.DataSource.DataSet.Filtered := True;
|
||||
FRxDBGrid.DataSource.DataSet.First;
|
||||
Close;
|
||||
end;
|
||||
|
||||
procedure TRxDBGrid_PopUpFilterForm.SpeedButton4Click(Sender: TObject);
|
||||
begin
|
||||
FRxColumn.Filter.State:=rxfsEmpty;
|
||||
FRxDBGrid.DataSource.DataSet.Filtered := True;
|
||||
FRxDBGrid.DataSource.DataSet.First;
|
||||
Close;
|
||||
end;
|
||||
|
||||
procedure TRxDBGrid_PopUpFilterForm.SpeedButton5Click(Sender: TObject);
|
||||
begin
|
||||
FRxColumn.Filter.State:=rxfsNonEmpty;
|
||||
FRxDBGrid.DataSource.DataSet.Filtered := True;
|
||||
FRxDBGrid.DataSource.DataSet.First;
|
||||
Close;
|
||||
end;
|
||||
|
||||
procedure TRxDBGrid_PopUpFilterForm.SpeedButton6Click(Sender: TObject);
|
||||
begin
|
||||
Hide;
|
||||
Close;
|
||||
FRxDBGrid.ShowFilterDialog;
|
||||
end;
|
||||
|
||||
procedure TRxDBGrid_PopUpFilterForm.SpeedButton9Click(Sender: TObject);
|
||||
var
|
||||
K, i: Integer;
|
||||
begin
|
||||
K:=CheckListBox1.ItemIndex;
|
||||
if K < 0 then
|
||||
K:=0;
|
||||
|
||||
for i:=0 to CheckListBox1.Items.Count-1 do
|
||||
if i = k then
|
||||
CheckListBox1.Checked[i]:=TComponent(Sender).Tag > 0
|
||||
else
|
||||
CheckListBox1.Checked[i]:=TComponent(Sender).Tag = 0;
|
||||
CheckListBox1ClickCheck(nil);
|
||||
end;
|
||||
|
||||
procedure TRxDBGrid_PopUpFilterForm.UpdateChList;
|
||||
var
|
||||
i, Cnt: Integer;
|
||||
S: String;
|
||||
begin
|
||||
CheckListBox1.Items.BeginUpdate;
|
||||
CheckListBox1.Items.Clear;
|
||||
Cnt:=FRxColumn.Filter.ValueList.Count - 1;
|
||||
{
|
||||
if FRxColumn.Filter.Style = rxfstBoth then
|
||||
Dec(Cnt);
|
||||
}
|
||||
for i:=0 to Cnt do
|
||||
begin
|
||||
S:=FRxColumn.Filter.ValueList[i];
|
||||
if (S <> FRxColumn.Filter.AllValue) and (S <> FRxColumn.Filter.EmptyValue) then
|
||||
CheckListBox1.Checked[CheckListBox1.Items.Add(S)]:=FRxColumn.Filter.CurrentValues.IndexOf(S) >= 0;
|
||||
end;
|
||||
|
||||
CheckListBox1ClickCheck(nil);
|
||||
|
||||
CheckListBox1.Items.EndUpdate;
|
||||
end;
|
||||
|
||||
procedure TRxDBGrid_PopUpFilterForm.Localize;
|
||||
begin
|
||||
DividerBevel1.Caption:=sSorting;
|
||||
SpeedButton1.Caption:=sAscending;
|
||||
SpeedButton2.Caption:=sDescending;
|
||||
DividerBevel2.Caption:=sQuickFilter;
|
||||
SpeedButton3.Caption:=sClearFilter;
|
||||
SpeedButton4.Caption:=sEmptyValues;
|
||||
SpeedButton5.Caption:=sNotEmpty;
|
||||
SpeedButton6.Caption:=sStandartFilter;
|
||||
CheckBox1.Caption:=sAllValues;
|
||||
SpeedButton9.Hint:=sHintShowOnlyCurrentItem;
|
||||
SpeedButton8.Hint:=sHintHideOnlyCurrentItem;
|
||||
end;
|
||||
|
||||
constructor TRxDBGrid_PopUpFilterForm.CreatePopUpFilterForm(ARxColumn: TRxColumn
|
||||
);
|
||||
begin
|
||||
inherited Create(ARxColumn.Grid);
|
||||
BorderStyle:=bsNone;
|
||||
FRxColumn:=ARxColumn;
|
||||
FRxDBGrid:=FRxColumn.Grid as TRxDBGrid;
|
||||
Localize;
|
||||
UpdateChList;
|
||||
end;
|
||||
|
||||
procedure TRxDBGrid_PopUpFilterForm.FormKeyDown(Sender: TObject; var Key: Word;
|
||||
Shift: TShiftState);
|
||||
begin
|
||||
if Key = VK_ESCAPE then
|
||||
ModalResult:=mrCancel;
|
||||
end;
|
||||
|
||||
procedure TRxDBGrid_PopUpFilterForm.MenuItem1Click(Sender: TObject);
|
||||
begin
|
||||
CheckBox1.Checked:=TComponent(Sender).Tag = 1;
|
||||
end;
|
||||
|
||||
procedure TRxDBGrid_PopUpFilterForm.CheckBox1Change(Sender: TObject);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
CheckListBox1.OnClickCheck:=nil;
|
||||
for i:=0 to CheckListBox1.Items.Count - 1 do
|
||||
CheckListBox1.Checked[i]:=CheckBox1.Checked;
|
||||
CheckListBox1.OnClickCheck:=@CheckListBox1ClickCheck;
|
||||
// CheckListBox1ClickCheck(nil);
|
||||
end;
|
||||
|
||||
procedure TRxDBGrid_PopUpFilterForm.CheckListBox1ClickCheck(Sender: TObject);
|
||||
var
|
||||
AC, AU: Boolean;
|
||||
i: Integer;
|
||||
begin
|
||||
AC:=true;
|
||||
AU:=true;
|
||||
for i:=0 to CheckListBox1.Items.Count-1 do
|
||||
begin
|
||||
if not CheckListBox1.Checked[i] then
|
||||
AC:=false;
|
||||
if CheckListBox1.Checked[i] then
|
||||
AU:=false;
|
||||
end;
|
||||
|
||||
CheckBox1.OnChange:=nil;
|
||||
if AC then
|
||||
CheckBox1.Checked:=true
|
||||
else
|
||||
if AU then
|
||||
CheckBox1.Checked:=false
|
||||
else
|
||||
CheckBox1.State:=cbGrayed;
|
||||
CheckBox1.OnChange:=@CheckBox1Change;
|
||||
end;
|
||||
|
||||
procedure TRxDBGrid_PopUpFilterForm.FormClose(Sender: TObject;
|
||||
var CloseAction: TCloseAction);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
if ModalResult = mrOk then
|
||||
begin
|
||||
FRxDBGrid.DataSource.DataSet.DisableControls;
|
||||
FRxDBGrid.DataSource.DataSet.Filtered := false;
|
||||
if CheckBox1.Checked then
|
||||
begin
|
||||
FRxColumn.Filter.State:=rxfsAll;
|
||||
FRxColumn.Filter.CurrentValues.Assign(CheckListBox1.Items);
|
||||
end
|
||||
else
|
||||
if CheckBox1.State = cbUnchecked then
|
||||
begin
|
||||
FRxColumn.Filter.State:=rxfsAll;
|
||||
FRxColumn.Filter.CurrentValues.Clear;
|
||||
end
|
||||
else
|
||||
begin
|
||||
FRxColumn.Filter.CurrentValues.BeginUpdate;
|
||||
FRxColumn.Filter.CurrentValues.Clear;
|
||||
for i:=0 to CheckListBox1.Items.Count-1 do
|
||||
if CheckListBox1.Checked[i] then
|
||||
FRxColumn.Filter.CurrentValues.Add(CheckListBox1.Items[i]);
|
||||
FRxColumn.Filter.CurrentValues.EndUpdate;
|
||||
if (FRxColumn.Filter.CurrentValues.Count > 0) then
|
||||
FRxColumn.Filter.State:=rxfsFilter
|
||||
else
|
||||
FRxColumn.Filter.State:=rxfsAll;
|
||||
end;
|
||||
FRxDBGrid.DataSource.DataSet.Filtered := True;
|
||||
FRxDBGrid.DataSource.DataSet.First;
|
||||
FRxDBGrid.DataSource.DataSet.EnableControls;
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
|
||||
|
Binary file not shown.
Reference in New Issue
Block a user