1. RxDBGrid - create new shortcat - Ctrl+A - select all rows

2. RxDBGrid - new procedure - SelectAllRows
3. RxDBGrid - try to fix error with edit Lockup filed in modal dialogs
4. RxDBGrid - add new key strokes:
    rxgcSelectAll - select all rows
    rxgcDeSelectAll - deselect all rows
    rxgcInvertSelection - invert selection
    rxgcOptimizeColumnsWidth - Optimize all columns width
5. New packet (rx_sort_fbdataset.lpk) and component (TRxSortFBDataSet) - add to project sort engine for FBDataSet


git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2536 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
alexs75
2012-09-24 14:21:22 +00:00
parent 4ec44f8456
commit c2e3789352
9 changed files with 214 additions and 5 deletions

View File

@@ -296,6 +296,10 @@ msgstr "Mover columna seleccionada para arriba"
msgid "Move selected column down"
msgstr "Mover columna seleccionada para abajo"
#: rxdconst.srxdbgridselectallrows
msgid "Select all rows"
msgstr ""
#: rxdconst.srxdbgridselectcolumns
msgid "Select visible collumns"
msgstr "Seleccionar Columnas Visibles"

View File

@@ -296,6 +296,10 @@ msgstr ""
msgid "Move selected column down"
msgstr ""
#: rxdconst.srxdbgridselectallrows
msgid "Select all rows"
msgstr ""
#: rxdconst.srxdbgridselectcolumns
msgid "Select visible collumns"
msgstr ""

View File

@@ -296,6 +296,10 @@ msgstr "Переместить выбранное поле выше"
msgid "Move selected column down"
msgstr "Переместить выбранное поле ниже"
#: rxdconst.srxdbgridselectallrows
msgid "Select all rows"
msgstr "Выделить все строки"
#: rxdconst.srxdbgridselectcolumns
msgid "Select visible collumns"
msgstr "Выбор столбцов для отображения"

View File

@@ -0,0 +1,47 @@
<?xml version="1.0"?>
<CONFIG>
<Package Version="4">
<Name Value="rx_sort_fbdataset"/>
<CompilerOptions>
<Version Value="11"/>
<SearchPaths>
<UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)/"/>
</SearchPaths>
<Other>
<CompilerMessages>
<MsgFileName Value=""/>
</CompilerMessages>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
<Files Count="2">
<Item1>
<Filename Value="rxsortfbdataset.pas"/>
<HasRegisterProc Value="True"/>
<UnitName Value="RxSortFBDataSet"/>
</Item1>
<Item2>
<Filename Value="exsortfb.pas"/>
<UnitName Value="exsortfb"/>
</Item2>
</Files>
<Type Value="RunAndDesignTime"/>
<RequiredPkgs Count="3">
<Item1>
<PackageName Value="rxnew"/>
</Item1>
<Item2>
<PackageName Value="fbdemofpc"/>
</Item2>
<Item3>
<PackageName Value="FCL"/>
</Item3>
</RequiredPkgs>
<UsageOptions>
<UnitPath Value="$(PkgOutDir)"/>
</UsageOptions>
<PublishOptions>
<Version Value="2"/>
</PublishOptions>
</Package>
</CONFIG>

View File

@@ -0,0 +1,21 @@
{ This file was automatically created by Lazarus. Do not edit!
This source is only used to compile and install the package.
}
unit rx_sort_fbdataset;
interface
uses
RxSortFBDataSet, exsortfb, LazarusPackageIntf;
implementation
procedure Register;
begin
RegisterUnit('RxSortFBDataSet', @RxSortFBDataSet.Register);
end;
initialization
RegisterPackage('rx_sort_fbdataset', @Register);
end.

View File

@@ -102,7 +102,9 @@ type
TRxDBGridCommand = (rxgcNone, rxgcShowFindDlg, rxgcShowColumnsDlg,
rxgcShowFilterDlg, rxgcShowSortDlg, rxgcShowQuickFilter,
rxgcHideQuickFilter
rxgcHideQuickFilter, rxgcSelectAll, rxgcDeSelectAll, rxgcInvertSelection,
rxgcOptimizeColumnsWidth
);
TRxDSState = (rxdsInactive, rxdsActive);
@@ -596,6 +598,7 @@ type
procedure OnFilterClose(Sender: TObject);
procedure OnSortBy(Sender: TObject);
procedure OnChooseVisibleFields(Sender: TObject);
procedure OnSelectAllRows(Sender: TObject);
procedure Loaded; override;
procedure UpdateFooterRowOnUpdateActive;
@@ -620,6 +623,9 @@ type
procedure UpdateTitleHight;
procedure GetOnCreateLookup;
procedure GetOnDisplayLookup;
procedure SelectAllRows;
procedure DeSelectAllRows;
procedure InvertSelection;
property Canvas;
property DefaultTextStyle;
@@ -765,7 +771,7 @@ uses Math, rxdconst, rxstrutils, rxdbgrid_findunit, rxdbgrid_columsunit,
rxlookup, tooledit, LCLProc, rxfilterby, rxsortby;
const
EditorCommandStrs: array[0..6] of TIdentMapEntry =
EditorCommandStrs: array[0..10] of TIdentMapEntry =
(
(Value: Ord(rxgcNone); Name: 'rxcgNone'),
(Value: Ord(rxgcShowFindDlg); Name: 'rxgcShowFindDlg'),
@@ -773,7 +779,11 @@ const
(Value: Ord(rxgcShowFilterDlg); Name: 'rxgcShowFilterDlg'),
(Value: Ord(rxgcShowSortDlg); Name: 'rxgcShowSortDlg'),
(Value: Ord(rxgcShowQuickFilter); Name: 'rxgcShowQuickFilter'),
(Value: Ord(rxgcHideQuickFilter); Name: 'rxgcHideQuickFilter')
(Value: Ord(rxgcHideQuickFilter); Name: 'rxgcHideQuickFilter'),
(Value: Ord(rxgcSelectAll); Name: 'rxgcSelectAll'),
(Value: Ord(rxgcDeSelectAll); Name: 'rxgcDeSelectAll'),
(Value: Ord(rxgcInvertSelection); Name: 'rxgcInvertSelection'),
(Value: Ord(rxgcOptimizeColumnsWidth); Name: 'rxgcOptimizeColumnsWidth')
);
var
@@ -1589,6 +1599,7 @@ begin
CreateMenuItem(#0, '-', nil);
CreateMenuItem('C', sRxDBGridSortByColumns, @OnSortBy);
CreateMenuItem('W', sRxDBGridSelectColumns, @OnChooseVisibleFields);
CreateMenuItem('A', sRxDBGridSelectAllRows, @OnSelectAllRows);
end;
function TRxDBGrid.GetPropertyStorage: TCustomPropertyStorage;
@@ -2063,6 +2074,7 @@ begin
F_PopupMenu.Items[3].ShortCut := DoShortCut(rxgcHideQuickFilter);
F_PopupMenu.Items[5].ShortCut := DoShortCut(rxgcShowSortDlg);
F_PopupMenu.Items[6].ShortCut := DoShortCut(rxgcShowColumnsDlg);
F_PopupMenu.Items[7].ShortCut := DoShortCut(rxgcSelectAll);
end;
function TRxDBGrid.SortEngineOptions: TRxSortEngineOptions;
@@ -3167,8 +3179,12 @@ begin
rxgcShowQuickFilter: DoShowQuickFilter;
rxgcHideQuickFilter: OnFilterClose(Self);
rxgcShowSortDlg: OnSortBy(Self);
else
exit;
rxgcSelectAll: SelectAllRows;
rxgcDeSelectAll: DeSelectAllRows;
rxgcInvertSelection:InvertSelection;
rxgcOptimizeColumnsWidth:OptimizeColumnsWidthAll;
else
exit;
end;
Key := 0;
end;
@@ -3739,6 +3755,11 @@ begin
ShowColumnsDialog;
end;
procedure TRxDBGrid.OnSelectAllRows(Sender: TObject);
begin
SelectAllRows;
end;
procedure TRxDBGrid.Loaded;
begin
inherited Loaded;
@@ -3830,6 +3851,76 @@ begin
if Assigned(F_DisplayLookup) then
F_DisplayLookup(FRxDbGridLookupComboEditor);
end;
procedure TRxDBGrid.SelectAllRows;
var
P:TBookMark;
begin
if DatalinkActive then
begin
DataSource.DataSet.DisableControls;
P:=DataSource.DataSet.Bookmark;
try
DataSource.DataSet.First;
while not DataSource.DataSet.EOF do
begin
SelectedRows.CurrentRowSelected:=true;
DataSource.DataSet.Next;
end;
finally
DataSource.DataSet.Bookmark:=P;
DataSource.DataSet.EnableControls;
end;
Invalidate;
end;
end;
procedure TRxDBGrid.DeSelectAllRows;
var
P:TBookMark;
begin
if DatalinkActive then
begin
DataSource.DataSet.DisableControls;
P:=DataSource.DataSet.Bookmark;
try
DataSource.DataSet.First;
while not DataSource.DataSet.EOF do
begin
SelectedRows.CurrentRowSelected:=false;
DataSource.DataSet.Next;
end;
finally
DataSource.DataSet.Bookmark:=P;
DataSource.DataSet.EnableControls;
end;
Invalidate;
end;
end;
procedure TRxDBGrid.InvertSelection;
var
P:TBookMark;
begin
if DatalinkActive then
begin
DataSource.DataSet.DisableControls;
P:=DataSource.DataSet.Bookmark;
try
DataSource.DataSet.First;
while not DataSource.DataSet.EOF do
begin
SelectedRows.CurrentRowSelected:=not SelectedRows.CurrentRowSelected;
DataSource.DataSet.Next;
end;
finally
DataSource.DataSet.Bookmark:=P;
DataSource.DataSet.EnableControls;
end;
Invalidate;
end;
end;
//!!!
constructor TRxDBGrid.Create(AOwner: TComponent);
begin
@@ -4704,6 +4795,10 @@ begin
AddE(rxgcShowSortDlg, Menus.ShortCut(Ord('S'), [ssCtrl]));
AddE(rxgcShowQuickFilter, Menus.ShortCut(Ord('Q'), [ssCtrl]));
AddE(rxgcHideQuickFilter, Menus.ShortCut(Ord('H'), [ssCtrl]));
AddE(rxgcSelectAll, Menus.ShortCut(Ord('A'), [ssCtrl]));
AddE(rxgcDeSelectAll, Menus.ShortCut(Ord('-'), [ssCtrl]));
AddE(rxgcInvertSelection, Menus.ShortCut(Ord('*'), [ssCtrl]));
AddE(rxgcOptimizeColumnsWidth, Menus.ShortCut(Ord('+'), [ssCtrl]));
end;
function TRxDBGridKeyStrokes.FindRxCommand(AKey: word;

View File

@@ -110,6 +110,7 @@ resourcestring
sRxDBGridSortByColumns = 'Sort data for collumns';// Ctrl+C';'Ordenar por Columnas Ctrl+C';
sRxDBGridSelectColumns = 'Select visible collumns';// Ctrl+W';'Seleccionar Columnas Ctrl+W';
sRxDBGridEmptiFilter = '(Empty)';
sRxDBGridSelectAllRows = 'Select all rows';// Ctrl+W';'Seleccionar Columnas Ctrl+W';
//RxDBGrid filter form
sRxFilterFormSelectExp = 'Enter filter expression for data in table:';

View File

@@ -1204,6 +1204,7 @@ begin
if AResult and Assigned(FDataLink.DataSource) then
begin
FDataLink.Edit;
Visible:=true;
NeedUpdateData;//We need to update DataField;
end;

View File

@@ -0,0 +1,32 @@
unit RxSortFBDataSet;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils;
type
TRxSortFBDataSet = class(TComponent)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
end;
procedure Register;
implementation
uses exsortfb;
procedure Register;
begin
RegisterComponents('RX DBAware',[TRxSortFBDataSet]);
end;
end.