diff --git a/components/rx/Demos/RxDBGrid/RxDBGridDemo.lpi b/components/rx/Demos/RxDBGrid/RxDBGridDemo.lpi
index cd55fbf20..1e722ddf3 100644
--- a/components/rx/Demos/RxDBGrid/RxDBGridDemo.lpi
+++ b/components/rx/Demos/RxDBGrid/RxDBGridDemo.lpi
@@ -47,7 +47,7 @@
-
+
@@ -56,10 +56,10 @@
-
-
+
+
-
+
@@ -88,7 +88,7 @@
-
+
@@ -114,127 +114,51 @@
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -258,7 +182,7 @@
-
+
@@ -267,6 +191,10 @@
+
+
+
+
diff --git a/components/rx/Demos/RxDBGrid/rxdbgridmainunit.lfm b/components/rx/Demos/RxDBGrid/rxdbgridmainunit.lfm
index cd6aa428a..e3f74f602 100644
--- a/components/rx/Demos/RxDBGrid/rxdbgridmainunit.lfm
+++ b/components/rx/Demos/RxDBGrid/rxdbgridmainunit.lfm
@@ -2,18 +2,18 @@ object RxDBGridMainForm: TRxDBGridMainForm
Left = 353
Height = 582
Top = 161
- Width = 652
- HorzScrollBar.Page = 651
+ Width = 827
+ HorzScrollBar.Page = 826
VertScrollBar.Page = 581
ActiveControl = RxDBGrid1
Caption = 'RxDBGrid Demo (ver 2) ...'
ClientHeight = 582
- ClientWidth = 652
+ ClientWidth = 827
OnCreate = FormCreate
object RxDBGrid1: TRxDBGrid
Height = 532
Top = 50
- Width = 652
+ Width = 827
Columns = <
item
Title.Alignment = taCenter
@@ -22,6 +22,7 @@ object RxDBGridMainForm: TRxDBGridMainForm
Footer.Alignment = taRightJustify
Footer.DisplayFormat = 'Count: %d'
Footer.ValueType = fvtCount
+ Filter.Color = clLime
Filter.ItemIndex = -1
end
item
@@ -29,6 +30,14 @@ object RxDBGridMainForm: TRxDBGridMainForm
Title.Caption = 'Software Name'
Width = 450
FieldName = 'NAME'
+ Filter.Color = clLime
+ Filter.ItemIndex = -1
+ end
+ item
+ Title.Alignment = taCenter
+ Width = 150
+ FieldName = 'Developer'
+ Filter.Color = clLime
Filter.ItemIndex = -1
end
item
@@ -41,11 +50,13 @@ object RxDBGridMainForm: TRxDBGridMainForm
Footer.DisplayFormat = '#,##0.00'
Footer.FieldName = 'PRICE'
Footer.ValueType = fvtSum
+ Filter.Color = clLime
Filter.ItemIndex = -1
end>
OptionsRx = [rdgFooterRows]
FooterColor = clYellow
FooterRowCount = 1
+ OnFiltred = RxDBGrid1Filtred
Align = alClient
FocusColor = clRed
SelectedColor = clHighlight
@@ -61,10 +72,10 @@ object RxDBGridMainForm: TRxDBGridMainForm
end
object Panel1: TPanel
Height = 50
- Width = 652
+ Width = 827
Align = alTop
ClientHeight = 50
- ClientWidth = 652
+ ClientWidth = 827
TabOrder = 1
object Button1: TButton
Left = 8
@@ -84,9 +95,18 @@ object RxDBGridMainForm: TRxDBGridMainForm
BorderSpacing.InnerBorder = 4
TabOrder = 1
end
+ object CheckBox1: TCheckBox
+ Left = 241
+ Height = 13
+ Top = 8
+ Width = 61
+ Caption = 'Use filter'
+ OnChange = CheckBox1Change
+ TabOrder = 2
+ UseOnChange = True
+ end
end
object RxMemoryData1: TRxMemoryData
- Active = True
FieldDefs = <
item
Name = 'ID'
@@ -105,9 +125,45 @@ object RxDBGridMainForm: TRxDBGridMainForm
DataType = ftFloat
Precision = 2
Size = 12
+ end
+ item
+ Name = 'Developer'
+ DataType = ftString
+ Precision = -1
+ Size = 150
end>
- left = 152
+ OnFilterRecordEx = RxMemoryData1FilterRecordEx
+ left = 144
top = 264
+ object RxMemoryData1ID1: TLongintField
+ AlignMent = taRightJustify
+ DisplayWidth = 10
+ FieldName = 'ID'
+ ProviderFlags = [pfInUpdate, pfInWhere]
+ end
+ object RxMemoryData1NAME1: TStringField
+ DisplayWidth = 150
+ FieldName = 'NAME'
+ Index = 1
+ ProviderFlags = [pfInUpdate, pfInWhere]
+ Size = 150
+ end
+ object RxMemoryData1PRICE1: TFloatField
+ AlignMent = taRightJustify
+ DisplayWidth = 10
+ FieldName = 'PRICE'
+ Index = 2
+ ProviderFlags = [pfInUpdate, pfInWhere]
+ DisplayFormat = '#,##0.00'
+ Precision = 2
+ end
+ object RxMemoryData1Developer1: TStringField
+ DisplayWidth = 150
+ FieldName = 'Developer'
+ Index = 3
+ ProviderFlags = [pfInUpdate, pfInWhere]
+ Size = 150
+ end
end
object Datasource1: TDatasource
DataSet = RxMemoryData1
diff --git a/components/rx/Demos/RxDBGrid/rxdbgridmainunit.lrs b/components/rx/Demos/RxDBGrid/rxdbgridmainunit.lrs
index f8e11879e..e698485d5 100644
--- a/components/rx/Demos/RxDBGrid/rxdbgridmainunit.lrs
+++ b/components/rx/Demos/RxDBGrid/rxdbgridmainunit.lrs
@@ -2,51 +2,68 @@
LazarusResources.Add('TRxDBGridMainForm','FORMDATA',[
'TPF0'#17'TRxDBGridMainForm'#16'RxDBGridMainForm'#4'Left'#3'a'#1#6'Height'#3
- +'F'#2#3'Top'#3#161#0#5'Width'#3#140#2#18'HorzScrollBar.Page'#3#139#2#18'Vert'
- +'ScrollBar.Page'#3'E'#2#13'ActiveControl'#7#9'RxDBGrid1'#7'Caption'#6#26'RxD'
- +'BGrid Demo (ver 2) ...'#12'ClientHeight'#3'F'#2#11'ClientWidth'#3#140#2#8
- +'OnCreate'#7#10'FormCreate'#0#9'TRxDBGrid'#9'RxDBGrid1'#6'Height'#3#20#2#3'T'
- +'op'#2'2'#5'Width'#3#140#2#7'Columns'#14#1#15'Title.Alignment'#7#8'taCenter'
- +#13'Title.Caption'#6#4'Code'#9'FieldName'#6#2'ID'#16'Footer.Alignment'#7#14
- +'taRightJustify'#20'Footer.DisplayFormat'#6#9'Count: %d'#16'Footer.ValueType'
- +#7#8'fvtCount'#16'Filter.ItemIndex'#2#255#0#1#15'Title.Alignment'#7#8'taCent'
- +'er'#13'Title.Caption'#6#13'Software Name'#5'Width'#3#194#1#9'FieldName'#6#4
- +'NAME'#16'Filter.ItemIndex'#2#255#0#1#15'Title.Alignment'#7#8'taCenter'#13'T'
- +'itle.Caption'#6#4'Cost'#5'Width'#2'Z'#9'FieldName'#6#5'PRICE'#13'DisplayFor'
- +'mat'#6#8'#,##0.00'#16'Footer.Alignment'#7#14'taRightJustify'#20'Footer.Disp'
- +'layFormat'#6#8'#,##0.00'#16'Footer.FieldName'#6#5'PRICE'#16'Footer.ValueTyp'
- +'e'#7#6'fvtSum'#16'Filter.ItemIndex'#2#255#0#0#9'OptionsRx'#11#13'rdgFooterR'
- +'ows'#0#11'FooterColor'#7#8'clYellow'#14'FooterRowCount'#2#1#5'Align'#7#8'al'
- +'Client'#10'FocusColor'#7#5'clRed'#13'SelectedColor'#7#11'clHighlight'#10'Da'
- +'taSource'#7#11'Datasource1'#10'FixedColor'#7#9'clBtnFace'#7'Options'#11#9'd'
- +'gEditing'#8'dgTitles'#11'dgIndicator'#14'dgColumnResize'#12'dgColumnMove'#10
- +'dgColLines'#10'dgRowLines'#6'dgTabs'#21'dgAlwaysShowSelection'#15'dgConfirm'
- +'Delete'#14'dgCancelOnExit'#13'dgMultiselect'#0#12'OptionsExtra'#11#14'dgeAu'
- +'toColumns'#17'dgeCheckboxColumn'#0#11'ParentColor'#8#9'PopupMenu'#7#10'Popu'
- +'pMenu1'#10'Scrollbars'#7#6'ssBoth'#8'TabOrder'#2#0#7'TabStop'#9#0#0#6'TPane'
- +'l'#6'Panel1'#6'Height'#2'2'#5'Width'#3#140#2#5'Align'#7#5'alTop'#12'ClientH'
- +'eight'#2'2'#11'ClientWidth'#3#140#2#8'TabOrder'#2#1#0#7'TButton'#7'Button1'
- +#4'Left'#2#8#6'Height'#2#25#3'Top'#2#8#5'Width'#2'K'#6'Action'#7#12'actCalcT'
- +'otal'#25'BorderSpacing.InnerBorder'#2#4#8'TabOrder'#2#0#0#0#7'TButton'#7'Bu'
- +'tton2'#4'Left'#2'X'#6'Height'#2#25#3'Top'#2#8#5'Width'#3#136#0#6'Action'#7
- +#26'actOptimizeColumnsWidthAll'#25'BorderSpacing.InnerBorder'#2#4#8'TabOrder'
- +#2#1#0#0#0#13'TRxMemoryData'#13'RxMemoryData1'#6'Active'#9#9'FieldDefs'#14#1
- +#4'Name'#6#2'ID'#8'DataType'#7#9'ftInteger'#9'Precision'#2#255#4'Size'#2#7#0
- +#1#4'Name'#6#4'NAME'#8'DataType'#7#8'ftString'#9'Precision'#2#255#4'Size'#3
- +#150#0#0#1#4'Name'#6#5'PRICE'#8'DataType'#7#7'ftFloat'#9'Precision'#2#2#4'Si'
- +'ze'#2#12#0#0#4'left'#3#152#0#3'top'#3#8#1#0#0#11'TDatasource'#11'Datasource'
- +'1'#7'DataSet'#7#13'RxMemoryData1'#4'left'#2'x'#3'top'#3#8#1#0#0#10'TPopupMe'
- +'nu'#10'PopupMenu1'#4'left'#3#152#0#3'top'#3#197#0#0#9'TMenuItem'#9'MenuItem'
- +'1'#6'Action'#7#20'actOptimizeWidthCol1'#7'OnClick'#7#27'actOptimizeWidthCol'
- +'1Execute'#0#0#9'TMenuItem'#9'MenuItem2'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9
- +'MenuItem4'#6'Action'#7#12'actCalcTotal'#7'OnClick'#7#19'actCalcTotalExecute'
- +#0#0#9'TMenuItem'#9'MenuItem3'#6'Action'#7#26'actOptimizeColumnsWidthAll'#7
- +'OnClick'#7'!actOptimizeColumnsWidthAllExecute'#0#0#0#11'TActionList'#11'Act'
- +'ionList1'#4'left'#3#206#0#3'top'#3#197#0#0#7'TAction'#12'actCalcTotal'#7'Ca'
- +'ption'#6#13'Calc total...'#18'DisableIfNoHandler'#9#9'OnExecute'#7#19'actCa'
- +'lcTotalExecute'#0#0#7'TAction'#26'actOptimizeColumnsWidthAll'#7'Caption'#6
- +#25'Optimize width for all...'#18'DisableIfNoHandler'#9#9'OnExecute'#7'!actO'
- +'ptimizeColumnsWidthAllExecute'#0#0#7'TAction'#20'actOptimizeWidthCol1'#7'Ca'
- +'ption'#6#17'Optimize width...'#18'DisableIfNoHandler'#9#9'OnExecute'#7#27'a'
- +'ctOptimizeWidthCol1Execute'#0#0#0#0
+ +'F'#2#3'Top'#3#161#0#5'Width'#3';'#3#18'HorzScrollBar.Page'#3':'#3#18'VertSc'
+ +'rollBar.Page'#3'E'#2#13'ActiveControl'#7#9'RxDBGrid1'#7'Caption'#6#26'RxDBG'
+ +'rid Demo (ver 2) ...'#12'ClientHeight'#3'F'#2#11'ClientWidth'#3';'#3#8'OnC'
+ +'reate'#7#10'FormCreate'#0#9'TRxDBGrid'#9'RxDBGrid1'#6'Height'#3#20#2#3'Top'
+ +#2'2'#5'Width'#3';'#3#7'Columns'#14#1#15'Title.Alignment'#7#8'taCenter'#13'T'
+ +'itle.Caption'#6#4'Code'#9'FieldName'#6#2'ID'#16'Footer.Alignment'#7#14'taRi'
+ +'ghtJustify'#20'Footer.DisplayFormat'#6#9'Count: %d'#16'Footer.ValueType'#7#8
+ +'fvtCount'#12'Filter.Color'#7#6'clLime'#16'Filter.ItemIndex'#2#255#0#1#15'Ti'
+ +'tle.Alignment'#7#8'taCenter'#13'Title.Caption'#6#13'Software Name'#5'Width'
+ +#3#194#1#9'FieldName'#6#4'NAME'#12'Filter.Color'#7#6'clLime'#16'Filter.ItemI'
+ +'ndex'#2#255#0#1#15'Title.Alignment'#7#8'taCenter'#5'Width'#3#150#0#9'FieldN'
+ +'ame'#6#9'Developer'#12'Filter.Color'#7#6'clLime'#16'Filter.ItemIndex'#2#255
+ +#0#1#15'Title.Alignment'#7#8'taCenter'#13'Title.Caption'#6#4'Cost'#5'Width'#2
+ +'Z'#9'FieldName'#6#5'PRICE'#13'DisplayFormat'#6#8'#,##0.00'#16'Footer.Alignm'
+ +'ent'#7#14'taRightJustify'#20'Footer.DisplayFormat'#6#8'#,##0.00'#16'Footer.'
+ +'FieldName'#6#5'PRICE'#16'Footer.ValueType'#7#6'fvtSum'#12'Filter.Color'#7#6
+ +'clLime'#16'Filter.ItemIndex'#2#255#0#0#9'OptionsRx'#11#13'rdgFooterRows'#0
+ +#11'FooterColor'#7#8'clYellow'#14'FooterRowCount'#2#1#9'OnFiltred'#7#16'RxDB'
+ +'Grid1Filtred'#5'Align'#7#8'alClient'#10'FocusColor'#7#5'clRed'#13'SelectedC'
+ +'olor'#7#11'clHighlight'#10'DataSource'#7#11'Datasource1'#10'FixedColor'#7#9
+ +'clBtnFace'#7'Options'#11#9'dgEditing'#8'dgTitles'#11'dgIndicator'#14'dgColu'
+ +'mnResize'#12'dgColumnMove'#10'dgColLines'#10'dgRowLines'#6'dgTabs'#21'dgAlw'
+ +'aysShowSelection'#15'dgConfirmDelete'#14'dgCancelOnExit'#13'dgMultiselect'#0
+ +#12'OptionsExtra'#11#14'dgeAutoColumns'#17'dgeCheckboxColumn'#0#11'ParentCol'
+ +'or'#8#9'PopupMenu'#7#10'PopupMenu1'#10'Scrollbars'#7#6'ssBoth'#8'TabOrder'#2
+ +#0#7'TabStop'#9#0#0#6'TPanel'#6'Panel1'#6'Height'#2'2'#5'Width'#3';'#3#5'Ali'
+ +'gn'#7#5'alTop'#12'ClientHeight'#2'2'#11'ClientWidth'#3';'#3#8'TabOrder'#2#1
+ +#0#7'TButton'#7'Button1'#4'Left'#2#8#6'Height'#2#25#3'Top'#2#8#5'Width'#2'K'
+ +#6'Action'#7#12'actCalcTotal'#25'BorderSpacing.InnerBorder'#2#4#8'TabOrder'#2
+ +#0#0#0#7'TButton'#7'Button2'#4'Left'#2'X'#6'Height'#2#25#3'Top'#2#8#5'Width'
+ +#3#136#0#6'Action'#7#26'actOptimizeColumnsWidthAll'#25'BorderSpacing.InnerBo'
+ +'rder'#2#4#8'TabOrder'#2#1#0#0#9'TCheckBox'#9'CheckBox1'#4'Left'#3#241#0#6'H'
+ +'eight'#2#13#3'Top'#2#8#5'Width'#2'='#7'Caption'#6#10'Use filter'#8'OnChange'
+ +#7#15'CheckBox1Change'#8'TabOrder'#2#2#11'UseOnChange'#9#0#0#0#13'TRxMemoryD'
+ +'ata'#13'RxMemoryData1'#9'FieldDefs'#14#1#4'Name'#6#2'ID'#8'DataType'#7#9'ft'
+ +'Integer'#9'Precision'#2#255#4'Size'#2#7#0#1#4'Name'#6#4'NAME'#8'DataType'#7
+ +#8'ftString'#9'Precision'#2#255#4'Size'#3#150#0#0#1#4'Name'#6#5'PRICE'#8'Dat'
+ +'aType'#7#7'ftFloat'#9'Precision'#2#2#4'Size'#2#12#0#1#4'Name'#6#9'Developer'
+ +#8'DataType'#7#8'ftString'#9'Precision'#2#255#4'Size'#3#150#0#0#0#16'OnFilte'
+ +'rRecordEx'#7#27'RxMemoryData1FilterRecordEx'#4'left'#3#144#0#3'top'#3#8#1#0
+ +#13'TLongintField'#16'RxMemoryData1ID1'#9'AlignMent'#7#14'taRightJustify'#12
+ +'DisplayWidth'#2#10#9'FieldName'#6#2'ID'#13'ProviderFlags'#11#10'pfInUpdate'
+ +#9'pfInWhere'#0#0#0#12'TStringField'#18'RxMemoryData1NAME1'#12'DisplayWidth'
+ +#3#150#0#9'FieldName'#6#4'NAME'#5'Index'#2#1#13'ProviderFlags'#11#10'pfInUpd'
+ +'ate'#9'pfInWhere'#0#4'Size'#3#150#0#0#0#11'TFloatField'#19'RxMemoryData1PRI'
+ +'CE1'#9'AlignMent'#7#14'taRightJustify'#12'DisplayWidth'#2#10#9'FieldName'#6
+ +#5'PRICE'#5'Index'#2#2#13'ProviderFlags'#11#10'pfInUpdate'#9'pfInWhere'#0#13
+ +'DisplayFormat'#6#8'#,##0.00'#9'Precision'#2#2#0#0#12'TStringField'#23'RxMem'
+ +'oryData1Developer1'#12'DisplayWidth'#3#150#0#9'FieldName'#6#9'Developer'#5
+ +'Index'#2#3#13'ProviderFlags'#11#10'pfInUpdate'#9'pfInWhere'#0#4'Size'#3#150
+ +#0#0#0#0#11'TDatasource'#11'Datasource1'#7'DataSet'#7#13'RxMemoryData1'#4'le'
+ +'ft'#2'x'#3'top'#3#8#1#0#0#10'TPopupMenu'#10'PopupMenu1'#4'left'#3#152#0#3't'
+ +'op'#3#197#0#0#9'TMenuItem'#9'MenuItem1'#6'Action'#7#20'actOptimizeWidthCol1'
+ +#7'OnClick'#7#27'actOptimizeWidthCol1Execute'#0#0#9'TMenuItem'#9'MenuItem2'#7
+ +'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem4'#6'Action'#7#12'actCalcTotal'#7
+ +'OnClick'#7#19'actCalcTotalExecute'#0#0#9'TMenuItem'#9'MenuItem3'#6'Action'#7
+ +#26'actOptimizeColumnsWidthAll'#7'OnClick'#7'!actOptimizeColumnsWidthAllExec'
+ +'ute'#0#0#0#11'TActionList'#11'ActionList1'#4'left'#3#206#0#3'top'#3#197#0#0
+ +#7'TAction'#12'actCalcTotal'#7'Caption'#6#13'Calc total...'#18'DisableIfNoHa'
+ +'ndler'#9#9'OnExecute'#7#19'actCalcTotalExecute'#0#0#7'TAction'#26'actOptimi'
+ +'zeColumnsWidthAll'#7'Caption'#6#25'Optimize width for all...'#18'DisableIfN'
+ +'oHandler'#9#9'OnExecute'#7'!actOptimizeColumnsWidthAllExecute'#0#0#7'TActio'
+ +'n'#20'actOptimizeWidthCol1'#7'Caption'#6#17'Optimize width...'#18'DisableIf'
+ ,'NoHandler'#9#9'OnExecute'#7#27'actOptimizeWidthCol1Execute'#0#0#0#0
]);
diff --git a/components/rx/Demos/RxDBGrid/rxdbgridmainunit.pas b/components/rx/Demos/RxDBGrid/rxdbgridmainunit.pas
index e38646bb2..a69ba93ff 100644
--- a/components/rx/Demos/RxDBGrid/rxdbgridmainunit.pas
+++ b/components/rx/Demos/RxDBGrid/rxdbgridmainunit.pas
@@ -6,7 +6,7 @@ interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, rxmemds,
- DB, rxdbgrid, ExtCtrls, Buttons, Menus, ActnList;
+ DB, rxdbgrid, ExtCtrls, Buttons, Menus, ActnList, StdCtrls;
type
@@ -19,6 +19,7 @@ type
ActionList1: TActionList;
Button1: TButton;
Button2: TButton;
+ CheckBox1: TCheckBox;
Datasource1: TDatasource;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
@@ -28,12 +29,20 @@ type
PopupMenu1: TPopupMenu;
RxDBGrid1: TRxDBGrid;
RxMemoryData1: TRxMemoryData;
+ RxMemoryData1Developer1: TStringField;
+ RxMemoryData1ID1: TLongintField;
+ RxMemoryData1NAME1: TStringField;
+ RxMemoryData1PRICE1: TFloatField;
procedure actCalcTotalExecute(Sender: TObject);
procedure actOptimizeColumnsWidthAllExecute(Sender: TObject);
procedure actOptimizeWidthCol1Execute(Sender: TObject);
+ procedure CheckBox1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
+ procedure RxDBGrid1Filtred(Sender: TObject);
+ procedure RxMemoryData1FilterRecordEx(DataSet: TDataSet; var Accept: Boolean
+ );
private
- { private declarations }
+ procedure DoFillFilters;
public
{ public declarations }
end;
@@ -48,13 +57,62 @@ implementation
procedure TRxDBGridMainForm.FormCreate(Sender: TObject);
begin
RxMemoryData1.Open;
- RxMemoryData1.AppendRecord([1, 'Lazarus 0.9.23', 0]);
- RxMemoryData1.AppendRecord([2, 'Delphi 7.0 Prof', 990]);
- RxMemoryData1.AppendRecord([3, 'Open Office 2.2.0', 0]);
- RxMemoryData1.AppendRecord([4, 'Microsof Office', 150]);
+ RxMemoryData1.AppendRecord([1, 'Lazarus 0.9.23', 0, 'Open source']);
+ RxMemoryData1.AppendRecord([2, 'Delphi 7.0 Prof', 990, 'Borland']);
+ RxMemoryData1.AppendRecord([3, 'Open Office 2.2.0', 0, 'Open source']);
+ RxMemoryData1.AppendRecord([4, 'Microsoft Office', 150, 'Microsoft']);
+ RxMemoryData1.AppendRecord([5, 'Microsoft Windows 95', 50, 'Microsoft']);
+ RxMemoryData1.AppendRecord([6, 'Microsoft Windows 98', 90, 'Microsoft']);
+ RxMemoryData1.AppendRecord([7, 'Microsoft Windows ME', 90, 'Microsoft']);
+ RxMemoryData1.AppendRecord([8, 'Microsoft Windows NT 4.0', 250, 'Microsoft']);
+ RxMemoryData1.AppendRecord([9, 'Microsoft Windows 2000', 150, 'Microsoft']);
+ RxMemoryData1.AppendRecord([10, 'Microsoft Windows XP', 130, 'Microsoft']);
+ RxMemoryData1.AppendRecord([11, 'Microsoft Windows Vista', 180, 'Microsoft']);
+ DoFillFilters;
+ RxMemoryData1.First;
RxDBGrid1.CalcStatTotals; //fix error in GotoBookmark
end;
+procedure TRxDBGridMainForm.RxDBGrid1Filtred(Sender: TObject);
+begin
+ RxMemoryData1.First;
+end;
+
+procedure TRxDBGridMainForm.RxMemoryData1FilterRecordEx(DataSet: TDataSet;
+ var Accept: Boolean);
+var
+ i:integer;
+begin
+ Accept:=true;
+ for i:=0 to RxDBGrid1.Columns.Count-1 do
+ begin
+ with TRxColumn(RxDBGrid1.Columns[i]) do
+ if (Filter.Value<>'') and (Filter.Value<>Field.AsString) then
+ begin
+ Accept:=false;
+ exit;
+ end;
+ end;
+end;
+
+procedure TRxDBGridMainForm.DoFillFilters;
+var
+ C:TRxColumn;
+ i:integer;
+begin
+ RxMemoryData1.First;
+ while not RxMemoryData1.EOF do
+ begin
+ for i:=0 to RxDBGrid1.Columns.Count-1 do
+ begin
+ C:=TRxColumn(RxDBGrid1.Columns[i]);
+ if C.Filter.ValueList.IndexOf(C.Field.AsString)<0 then
+ C.Filter.ValueList.Add(C.Field.AsString);
+ end;
+ RxMemoryData1.Next;
+ end;
+end;
+
procedure TRxDBGridMainForm.actCalcTotalExecute(Sender: TObject);
begin
RxDBGrid1.CalcStatTotals; //fix error in GotoBookmark
@@ -70,6 +128,15 @@ begin
TRxColumn(RxDBGrid1.SelectedColumn).OptimizeWidth;
end;
+procedure TRxDBGridMainForm.CheckBox1Change(Sender: TObject);
+begin
+ if CheckBox1.Checked then
+ RxDBGrid1.OptionsRx:=RxDBGrid1.OptionsRx + [rdgFilter]
+ else
+ RxDBGrid1.OptionsRx:=RxDBGrid1.OptionsRx - [rdgFilter];
+ RxMemoryData1.Filtered:=CheckBox1.Checked;
+end;
+
initialization
{$I rxdbgridmainunit.lrs}
diff --git a/components/rx/WindowsXP.or b/components/rx/WindowsXP.or
deleted file mode 100644
index 9a3ccbaca..000000000
Binary files a/components/rx/WindowsXP.or and /dev/null differ
diff --git a/components/rx/docs/WhatsNew.eng.txt b/components/rx/docs/WhatsNew.eng.txt
index 4da0dcfc2..ebedd8792 100644
--- a/components/rx/docs/WhatsNew.eng.txt
+++ b/components/rx/docs/WhatsNew.eng.txt
@@ -1,3 +1,13 @@
+12.08.2007 - version 1.1.4.93
+ + in TRxDBComboBox publishe any property
+ + in TRxDBLookupCombo add event OnGetGridCellProps
+ + in rx.inc new define
+ RXDBGRID_OPTIONS_WO_CANCEL_ON_EXIT
+ - in RxDBGrid fix error lose focuse after close filte list
+ + in demo for RxDBGrid add demos ¤for visual filtring data
+ + add new component - TAutoPanel ( Dmitry V. Bolshakov) -
+ doc ifn folder auto_panel_doc
+ + in property OptionsRX add new flag - rdgMrOkOnDblClik
25.06.2007 - version 1.1.3.86
- fix error in TRxMemoryData.SortOnFields
+ add sorting in RxDBGrid for TRxMemoryData
diff --git a/components/rx/docs/WhatsNew.rus.txt b/components/rx/docs/WhatsNew.rus.txt
index 9ee558362..5e28eb1a1 100644
--- a/components/rx/docs/WhatsNew.rus.txt
+++ b/components/rx/docs/WhatsNew.rus.txt
@@ -1,3 +1,18 @@
+12.08.2007 - версия 1.1.4.93
+ + В TRxDBComboBox опубликованы недостающие поля
+ + В TRxDBLookupCombo добавлено обработчик OnGetGridCellProps
+ - позволяет задавать при отрисовке фон в выпадающем списке
+ + В rx.inc ввёл новую дерективу компиляции
+ RXDBGRID_OPTIONS_WO_CANCEL_ON_EXIT
+ если она определени - то в свойстве TRxDbGrid.Options выключается флаг
+ dgCancelOnExit (см. пункт 5 из readmy.txt)
+ - В RxDBGrid исправлена ошибка потери фокуса после закрытия списка фильтра
+ + В примере на RxDBGrid добавлен промер на визуальную фильтрацию данных
+ + Добавлен компонент TAutoPanel (автор Dmitry V. Bolshakov) -
+ документация в папке auto_panel_doc
+ + В свойстве OptionsRX добавлен новый флаг - rdgMrOkOnDblClik
+ при его установке при двойном нажатии на RxDbGrid форме, которой принадлежит
+ RxDbGrid присиваивается ModalResult:=mrOk;
25.06.2007 - версия 1.1.3.86
- Исправлена ошибка в методе TRxMemoryData.SortOnFields
+ Добавлена поддержка сортировок из RxDBGrid на TRxMemoryData
diff --git a/components/rx/docs/WhatsNew.txt b/components/rx/docs/WhatsNew.txt
deleted file mode 100644
index 8c0e58f7a..000000000
--- a/components/rx/docs/WhatsNew.txt
+++ /dev/null
@@ -1,184 +0,0 @@
-12.01.2006 - версия 1.0.12.38
- + в RxDbGrid в заголовке колонки добавлено свойство Orientation - отвечает за
- направление отрисовки текста в заголовке столбца
- + добавлена демка для демонстрацииотрисовки текста вертикально (под углом 90
- градусов)
-21.12.2005
- + в RxDbGrid добавлено свойство AllowedOperation - для запрета выплнения некоторых
- операций
- + в RxDbGrid доработан обработчик события OnGetCellProps
- + в TRxMemoryData введено свойство OnFilterRecordEx - временно, пока в TDataSet
- не реализуют работу свойства OnFilterRecord
-16.12.2005 - версия 1.0.11.35
- + доработано поведение TToolbarButton для коректной работы
- в последних сборках Lazarus
- + исправлен регистр в названиях некоторых модулей
- + пробная сборка под Linux
-27.11.2005 - версия 1.0.11.34
- - TToolPanel - исправлена ошибка сохранения свойств панели при
- редактировании её в runtime
-22.10.2005 - версия 1.0.10.33
- + TRxLabel - перенесён компонент
- + TSecretPanel - перенесён компонент
- - TRxMemoryData - внесён код, обходящий ошибку востановления свойства FieldDefs
- в модуле DB - работает вроде теперь всё правильно
- + TRxLoginDialog - начат перенесён
- - TRxDBComboBox - небольшой багфикс
-15.10.2005 - версия 1.0.9.30
- + TRxCustomDBLookupCombo - Улучшена отрисовка
- (старый стиль отрисовки будет при включённом Flat)
- + TRxCustomDBLookupCombo - При нажатии клавишы ESC поле очищается (метод DataField.Clear)
- - TRxCustomDBLookupCombo - Исправлена ошибка отрисовки пустого значения DataField в режиме
- DisplayAllFields - отображается значение свойства EmptyValue
- - TRxCustomDBLookupCombo - Исправлена ошибка открытия списка допустимых значений при
- пустом DataField (список стоял на последней записи)
- - TRxCustomDBLookupCombo - исправлен расчёт высоты выпадающего списка в зависимости
- от значения свойства DropDownCount
- - TRxCustomDBLookupCombo - исправлен выбор значения в выпадающем спсике нажатием
- клавишы Enter
- + TRxMemoryData - Введён код для обхода глюка Lazarus с не корректным созданием полей
- по данным FieldDefs, которые были созданы в Design-time
- + TRxMemoryData - реализован редактор компоненты - копия струтктуры из другого
- DataSet-а
- + TRxDBGrid - подключен редактор свойства FieldName у колонки
- + TRxDBGrid - реализована возможность подстановки значений для отображения
- через свойства KeyList и PickList (аналогично TRxDBComboBox)
-10.10.2005
- - Исправлена ошибка при рисовании изображения в RxDbGrid из ImageList,
- также операция немного ускорена
- - исправлена ошибка при изменении ширины колонки (деление на 0)
- + начата работа над сохранением состояния колонок RxDbGrid через FormStorage
- - Небольшой багофикс при работе с изображениями в TToolPanel
- + Добавил компонент TPageManager
- + Написал новый компонент TRxAppIcon - это для тех кто не хочет возиться с
- ресурсами - в момент запуска приложению будет сопоставлена указанная иконка.
- т.к. она хранится не в стандартном виндовом ресурсе - поэтому проводник
- будет показывать на приложении обычную иконку - но в момент запуска
- появится указанная. Работает только под Windows - если кто знает как это
- делается в других системах - допишите.
- Когда в лазаре доделают нормальную работу с иконками - компоненту надо
- переписать - а может лазарь научится создавать стандартный ресурс виндовый
- для программы - тогда в этой компоненте надобность вобще отпадёт
-
-08.10.2005
- + Окно настройки теперь вегда сверху
- + Для более тонкой настройки отображения кнопок добави в опциях тулбара
- два дополнительных флага - tpGlyphPopup, tpCaptionPopup
- - небольшие багофиксы
- + реализована работа с изображениями в RxDbGrid через ImageList (см. readmy.txt)
- + Добавлен компонент TRXXPManifest - работает только под Windows -
- поддержка XP манифеста
-05.10.2005
- + убрал свойстов Flat, TransparentBtn
- + Добавил свойство Options, включающее tpFlatBtns, tpTransparentBtns
- + Добавил включение окна настройки подвойному клику на панели
- правой кнопкой мышки с зажатым Ctrl
- - исправл баг множественного открытия окна настройки панели
- + у TToolbarItem добавил свойство Tag
-
-04.10.2005
- + в TToolPanel пофиксил баг не верного начального размера кнопки
- + Добавлена возможность прорисовки кнопок в стиле WindowsXP
- + При в стиле Flat и WindowsXP при наведении курсора на кнопку
- она приподнимается для лучшего визуализации
- - т.к. TImageList.Draw не умеет рисовать запроещённое состояние
- изоражения при задисабливании Action не дисаблится картинка
- также из-за этого нет возможности сделать изображение с тенью
- - вылазиет баг в лазаре если в дизайнере удалить напрямую с панели
- кнопку (не через Items) - ещё не знаю как в лазаре в дизайнере
- для некоторых элементов запретить удаление
- + Добавил демку для TToolPanel
-
-03.10.2005
- + перевёл все имена файлов к нижнему регистру
- + в TToolPanel пофиксил некторые баги
- + работает окно настройки панели
- + Поддерживается DropDownMenu в стиле полного нажатия кнопки
- + скрытие не нужных кнопок (настройка в run-time)
-
-
-02.10.2005 (beta)
- + Начата реализация (полностью своя) TToolPanel - аналог RxToolbar
- по функциональности похоже на стандартный ToolBar - точно
- также работает через Actions (для добавления кнопок использовать метод Items)
- полностью моя перерисовка кнопок - нормальный внешний вид.
- работает:
- + кустомизация расположения кнопок и внешнего вида в run-time
- + сохранение во внешний конфигурационный файл через propstorage
- будут реализованы:
- - DropDownMenu - в зависимости от стиля кнопки либо выпадает
- при нажатии на кнопку, либо будет отдельнная облясть кнопки (суб.кнопка) для
- вызова меню
- - скрытие ненужных кнопок (настройка в run-time)
- - стили отображения (сейчас стандарт Win9x, Flat) - добавляю как в WinXP
- - мастер создания панели в DesignTime в лазаре
- змеченые глюки
- - не всегда коректно востанавливается при ширина кнопок
-
- принимаю заявки на функциональность и ошибки
-
-30.10.2005
- + перенёс
- + перенёс RxDice, RxSwith, TRxDBComboBox
- + Разбил на 2 закладки - RX и RX DBAware
- - исправил баг с начальным размером у TRxDBLookupCombo
-
-
-28.10.2005
- + практически работает Currency edit (не проверил под линухом)
- - из-за ошибки в функиции FormatFloat из FCL нельзя использовать в строке
- форматирования одинарные или двойные кавычки - повесится
-19.10.2005
- + TRxMemoryData - работает почти полностью - нет поддержки blob - надо разбирать
- + начал перенос Currency edit
- + правил ошибки
- - ещё не всё проверил в линуксе - теоретически должно собраться и работать
-05.10.2005
- + Добавлен TRxDBGrid - написан по "мотивам оригинального, ещё есть что переносить
- самое главное, почему его начал переносить - захотелось сделать сортировку
- наборов данных как в DBGridEh из EhLib. Я вышел с предложением на
- Jesus Reyes (автор DBGrid-а о добавлении функциональности) - он сказал, что нефиг
- превращать стандартный компонент в новогоднюю ёлку. Поэтому стал сам доделывать
- наследника.
- Сейчас работает многострочные заголовки, подерживается нажатие на заголовок
- как на кнопку с опциональным отображением символа сортировки (соответсвующее событие)
-
- также добавил механизм автосортировки см. файл exSortFB.pas - тут наиболее лаконично
- всё. Кратко - для необходимых типов источноков данных
- пишется обёртка (наследник от TExDBGridSortEngine) который умеет в этом
- источнике данных переупорядочивать записи. Мой TFBDataSet (работаю с FireBird)
- умеет сам в локальном кэше сортировать запис - поэтому там всё просто.
- exsortmds.pas - этот модуль для сортировки данных в стандартном MemDS
- немного кривовато написано - практически нет механизмов добраться до внутреннего
- буфера данных (кстати в MemDS есть баг позиционирования курсора на 1-ю запись)
-
- - TRxMemoryData - вроде всё скомпилировалось практически без правки - но чтото при
- добавлении записи - ошибка (подозреваю не совместимость DataSet-а из дельфей и Лазаря)
- надо разобраться. Стандартный MemDS ограничен - нет блоб и прочего.
-31.09.2005
- + Add component TFolderLister - это моя разработка - на основе неё добавлю
- ещё компонент для построения меню, содержащее отчёты для LazReport-a
- (аналог у меня в дельфях моей также разработки)
-07.01.2005
- i'm port next RX components:
- TDBDateEdit - не даёт вводить значения руками - наследство от оригинального
- TDateEdit
- TRxDBCalcEdit
- TRXLookupEdit,
- TRxDBLookupCombo - тут баг - при кидании на форму не коректно устанавливаются
- размеры, приходится руками ресайзить - когда нить доделаю - или кто сможет -
- помогайте.
-
-
- and next modules:
- DateUtil.pas
- DbUtils.pas
- rxdconst.pas
- RXStrutils.pas
- VCLUtils.pas
-
-жду замечаний и предложений
- Лагунов Алексей (alexs)
-
- ALEXS75-на-YANDEX-точка-RU
-
diff --git a/components/rx/docs/readmy.txt b/components/rx/docs/readmy.txt
index 10278702e..ddaeca0a0 100644
--- a/components/rx/docs/readmy.txt
+++ b/components/rx/docs/readmy.txt
@@ -35,4 +35,17 @@
4. Для нормальной работы используйте последнюю версию Lazarus
сборкой не ниже 0.9.19 (10151) - появилась в SVN 01.11.2006
-5. Вопросы задавать мылом или на форуме FreePascal.ru (предпочтительней)
+5. Замечание о RXDBGRID_OPTIONS_WO_CANCEL_ON_EXIT и флаге dgCancelOnExit в
+ TRxDbGrid.Options
+ в случае использования следующей схемы под линуксом:
+ В форму ложим список TRxDbGrid с открытым набором данных и отдельную кнопку (TSpeedButton) на
+ добавление новой записи в набор данных с вызовом другой модальной формы для редактирования
+ добовляемых значение
+ при открытии формы редактирования набор данных, связанный с TRxDbGrid переходит в состояние
+ редактирования
+ это поведени наблюдается только по Linux
+
+ объяснение заключается в том что при потере фокуса TDbGrid и его наследниеи вызывают
+ метод Cancel
+
+6. Вопросы задавать мылом или на форуме FreePascal.ru (предпочтительней)
diff --git a/components/rx/images/mk_res.bat b/components/rx/images/mk_res.bat
index 64a2df3bc..fc43a0773 100644
--- a/components/rx/images/mk_res.bat
+++ b/components/rx/images/mk_res.bat
@@ -1,2 +1,2 @@
del rx.lrs
-C:\lazarus\tools\lazres.exe rx.lrs TDBDateEdit.xpm TRXLookUpEdit.xpm TRxDBCalcEdit.xpm TRxDBLookupCombo.xpm TRxDBGrid.xpm TDualListDialog.xpm TFolderLister.xpm TRxMemoryData.xpm TCURRENCYEDIT.xpm TRXSWITCH.xpm TRXDICE.xpm TRXDBCOMBOBOX.xpm ttoolpanel.xpm trxxpmanifest.xpm TPAGEMANAGER.xpm TRXAPPICON.xpm TSECRETPANEL.xpm TRXLABEL.xpm
+C:\lazarus\tools\lazres.exe rx.lrs TDBDateEdit.xpm TRXLookUpEdit.xpm TRxDBCalcEdit.xpm TRxDBLookupCombo.xpm TRxDBGrid.xpm TDualListDialog.xpm TFolderLister.xpm TRxMemoryData.xpm TCURRENCYEDIT.xpm TRXSWITCH.xpm TRXDICE.xpm TRXDBCOMBOBOX.xpm ttoolpanel.xpm trxxpmanifest.xpm TPAGEMANAGER.xpm TRXAPPICON.xpm TSECRETPANEL.xpm TRXLABEL.xpm tautopanel.xpm
diff --git a/components/rx/registerrx.pas b/components/rx/registerrx.pas
index d3eb6483a..f52a244d7 100644
--- a/components/rx/registerrx.pas
+++ b/components/rx/registerrx.pas
@@ -12,7 +12,8 @@ procedure Register;
implementation
uses PropEdits, dbdateedit, rxlookup, folderlister, rxdbgrid, rxmemds, duallist,
curredit, rxswitch, rxdice, rxdbcomb, rxtoolbar, rxxpman, PageMngr, RxAppIcon,
- Dialogs, ComponentEditors, seldsfrm, DBPropEdits, DB, rxctrls, RxLogin, RxCustomChartPanel;
+ Dialogs, ComponentEditors, seldsfrm, DBPropEdits, DB, rxctrls, RxLogin,
+ RxCustomChartPanel, AutoPanel;
type
@@ -209,6 +210,10 @@ begin
RegisterComponents('RX',[TRxChart]);
end;
+procedure RegisterAutoPanel;
+begin
+ RegisterComponents('RX',[TAutoPanel]);
+end;
procedure Register;
begin
@@ -231,6 +236,8 @@ begin
RegisterUnit('rxdbgrid', @RegisterRxDbGrid);
RegisterUnit('rxmemds', @RegisterRxMemDS);
RegisterUnit('rxdbcomb', @RegisterRxDBComb);
+ RegisterUnit('AutoPanel', @RegisterAutoPanel);
+
//Component Editors
RegisterComponentEditor(TRxAppIcon, TRxAppIconEditor);
diff --git a/components/rx/rx.inc b/components/rx/rx.inc
index f1dcadcec..53571c309 100644
--- a/components/rx/rx.inc
+++ b/components/rx/rx.inc
@@ -5,3 +5,4 @@
{$DEFINE HASVARIANT}
{.$DEFINE ENABLE_Child_Defs}
{$DEFINE NEW_STYLE_TITLE_ALIGNMENT_RXDBGRID}
+{$DEFINE RXDBGRID_OPTIONS_WO_CANCEL_ON_EXIT}
diff --git a/components/rx/rx.lrs b/components/rx/rx.lrs
index fcf86e921..ffc2661c8 100644
--- a/components/rx/rx.lrs
+++ b/components/rx/rx.lrs
@@ -267,3 +267,21 @@ LazarusResources.Add('TRXLABEL','XPM',[
+'........................",'#10'"........................",'#10'"...........'
+'.............",'#10'"........................"};'#10
]);
+
+LazarusResources.Add('tautopanel','XPM',[
+ '/* XPM */'#10'static char *tautopanel_xpm[] = {'#10'/* width height num_colo'
+ +'rs chars_per_pixel */'#10'" 24 24 8 1",'#10'/* colo'
+ +'rs */'#10'"` c #808000",'#10'". c #808080",'#10'"# c #ffffff",'#10'"a c #ff'
+ +'0000",'#10'"b c #000000",'#10'"c c #000000",'#10'"d c #000000",'#10'"e c #0'
+ +'00000",'#10'/* pixels */'#10'"````````````````````````",'#10'"`````````````'
+ +'```````````",'#10'"``...................```",'#10'"``.#################`#``'
+ +'",'#10'"``.#````````````````.#``",'#10'"``.#````````````````.#``",'#10'"``.'
+ +'#````````````````.#``",'#10'"``.#aa``````````````.#``",'#10'"``.a``a```````'
+ +'a`````.#``",'#10'"``.a``a```````a`````.#``",'#10'"``.a``a`a``a`aaa```aa#``"'
+ +','#10'"``.aaaa`a``a``a```a`.a``",'#10'"``.a``a`a``a``a```a`.a``",'#10'"``.a'
+ +'``a`a``a``a```a`.a``",'#10'"``.a``a`a``a``a```a`.a``",'#10'"``.a``a``aaa``a'
+ +'a```aa#``",'#10'"``.#````````````````.#``",'#10'"``.#````````````````.#``",'
+ +#10'"``.#````````````````.#``",'#10'"``.#````````````````.#``",'#10'"``.`...'
+ +'..............#``",'#10'"```###################``",'#10'"``````````````````'
+ +'``````",'#10'"````````````````````````"'#10'};'#10
+]);
diff --git a/components/rx/rxdbcomb.pas b/components/rx/rxdbcomb.pas
index fb41a6cbb..2d3129b94 100644
--- a/components/rx/rxdbcomb.pas
+++ b/components/rx/rxdbcomb.pas
@@ -83,6 +83,10 @@ type
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
+ property Anchors;
+ property ArrowKeysTraverseList;
+ property AutoDropDown;
+ property BorderSpacing;
property Style; { must be published before Items }
property Color;
property Ctl3D;
@@ -94,11 +98,12 @@ type
property Enabled;
property EnableValues: Boolean read FEnableValues write SetEnableValues;
property Font;
- property Anchors;
property Constraints;
property DragKind;
property ItemHeight;
property Items;
+ property ItemWidth;
+ property MaxLength default -1;
property ParentColor;
property ParentCtl3D;
property ParentFont;
diff --git a/components/rx/rxdbgrid.pas b/components/rx/rxdbgrid.pas
index 5e4c43ede..4bcec0b78 100644
--- a/components/rx/rxdbgrid.pas
+++ b/components/rx/rxdbgrid.pas
@@ -11,11 +11,14 @@ uses
type
TSortMarker = (smNone, smDown, smUp);
+
TGetBtnParamsEvent = procedure (Sender: TObject; Field: TField;
AFont: TFont; var Background: TColor; var SortMarker: TSortMarker;
IsDown: Boolean) of object;
+
TGetCellPropsEvent = procedure (Sender: TObject; Field: TField;
AFont: TFont; var Background: TColor) of object;
+
TRxDBGridAllowedOperation = (aoInsert, aoUpdate, aoDelete, aoAppend);
TRxDBGridAllowedOperations = set of TRxDBGridAllowedOperation;
@@ -30,7 +33,8 @@ type
rdgFooterRows,
rdgXORColSizing,
rdgFilter,
- rdgMultiTitleLines
+ rdgMultiTitleLines,
+ rdgMrOkOnDblClik
);
TOptionsRx = set of TOptionRx;
@@ -274,6 +278,7 @@ type
procedure FFilterListEditorOnChange(Sender: TObject);
procedure FFilterListEditorOnCloseUp(Sender: TObject);
procedure InternalOptimizeColumnsWidth(AColList:TList);
+ function IsDefaultRowHeightStored:boolean;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
@@ -330,7 +335,7 @@ type
property Constraints;
property DataSource;
property DefaultDrawing;
- property DefaultRowHeight default 18;
+ property DefaultRowHeight stored IsDefaultRowHeightStored default 18 ;
//property DragCursor;
//property DragKind;
//property DragMode;
@@ -1269,7 +1274,17 @@ begin
inherited MouseDown(Button, Shift, X, Y);
end
else
+ begin
+ if rdgMrOkOnDblClik in FOptionsRx then
+ begin
+ if (Cell.Y > 0) and (Cell.X >= ord(dgIndicator in Options)) and (ssDouble in Shift) then
+ begin
+ if Owner is TCustomForm then
+ TCustomForm(Owner).ModalResult:=mrOk;
+ end;
+ end;
inherited MouseDown(Button, Shift, X, Y);
+ end;
end;
procedure TRxDBGrid.MouseUp(Button: TMouseButton; Shift: TShiftState; X,
@@ -1466,6 +1481,7 @@ procedure TRxDBGrid.FFilterListEditorOnCloseUp(Sender: TObject);
begin
FFilterListEditor.Hide;
FFilterListEditor.Changed;
+ SetFocus;
end;
procedure TRxDBGrid.InternalOptimizeColumnsWidth(AColList: TList);
@@ -1510,6 +1526,11 @@ begin
FreeMem(WA, SizeOf(Integer) * AColList.Count);
end;
+function TRxDBGrid.IsDefaultRowHeightStored: boolean;
+begin
+ Result:=DefaultRowHeight = Canvas.TextHeight('W');
+end;
+
procedure TRxDBGrid.CalcStatTotals;
var
P:TBookmark;
@@ -1593,7 +1614,10 @@ end;
constructor TRxDBGrid.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
-
+{$IFDEF RXDBGRID_OPTIONS_WO_CANCEL_ON_EXIT}
+ Options:=Options - [dgCancelOnExit];
+{$ENDIF}
+
FMarkerUp := TBitmap.Create;
FMarkerUp.Handle := CreatePixmapIndirect(@IMGMarkerUp[0],
GetSysColor(COLOR_BTNFACE));
@@ -2099,9 +2123,9 @@ end;
initialization
ExDBGridSortEngineList:=TStringList.Create;
ExDBGridSortEngineList.Sorted:=true;
-
finalization
- while (ExDBGridSortEngineList.Count>0) do begin
+ while (ExDBGridSortEngineList.Count>0) do
+ begin
ExDBGridSortEngineList.Objects[0].Free;
ExDBGridSortEngineList.Delete(0);
end;
diff --git a/components/rx/rxlookup.pas b/components/rx/rxlookup.pas
index da11493c8..bf7fde5b1 100644
--- a/components/rx/rxlookup.pas
+++ b/components/rx/rxlookup.pas
@@ -144,6 +144,7 @@ type
function GetFlat: Boolean;
function GetGlyph: TBitmap;
function GetNumGlyphs: Integer;
+ function GetOnGetGridCellProps: TGetCellPropsEvent;
function GetPopupVisible: boolean;
procedure SetButtonNeedsFocus(const AValue: Boolean);
procedure SetButtonWidth(const AValue: Integer);
@@ -161,6 +162,7 @@ type
procedure SetLookupField(const AValue: string);
procedure SetLookupSource(const AValue: TDataSource);
procedure SetNumGlyphs(const AValue: Integer);
+ procedure SetOnGetGridCellProps(const AValue: TGetCellPropsEvent);
procedure SetPopUpFormOptions(const AValue: TPopUpFormOptions);
procedure SetReadOnly(const AValue: boolean);
function StoreEmpty: boolean;
@@ -220,6 +222,8 @@ type
property LookupDisplayIndex: Integer read FLookupDisplayIndex write SetLookupDisplayIndex default 0;
property LookupField: string read FLookupField write SetLookupField;
property LookupSource: TDataSource read GetLookupSource write SetLookupSource;
+ property OnGetGridCellProps: TGetCellPropsEvent read GetOnGetGridCellProps
+ write SetOnGetGridCellProps;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
@@ -267,6 +271,7 @@ type
property OnMouseMove;
property OnMouseUp;
property OnStartDrag;
+ property OnGetGridCellProps;
property ParentColor;
property ParentCtl3D;
property ParentFont;
@@ -296,7 +301,7 @@ uses VCLUtils, Math;
function CreateArrowBitmap:TBitmap;
begin
Result:=Graphics.TBitmap.Create;
- Result.LoadFromLazarusResource('btn_downarrow');
+ Result.LoadFromLazarusResource('rxbtn_downarrow');
end;
{ TCustomDBLookupEdit }
@@ -604,6 +609,11 @@ begin
else Result:=0;
end;
+function TRxCustomDBLookupCombo.GetOnGetGridCellProps: TGetCellPropsEvent;
+begin
+ Result:=FPopUpFormOptions.OnGetCellProps;
+end;
+
function TRxCustomDBLookupCombo.GetPopupVisible: boolean;
begin
Result:=Assigned(FRxPopUpForm);
@@ -735,6 +745,12 @@ begin
FButton.NumGlyphs:=AValue;
end;
+procedure TRxCustomDBLookupCombo.SetOnGetGridCellProps(
+ const AValue: TGetCellPropsEvent);
+begin
+ FPopUpFormOptions.OnGetCellProps:=AValue;
+end;
+
procedure TRxCustomDBLookupCombo.SetPopUpFormOptions(
const AValue: TPopUpFormOptions);
begin
@@ -1323,4 +1339,10 @@ begin
FDataControl.LookupDataSetChanged;
end;
+initialization
+ LazarusResources.Add('rxbtn_downarrow','XPM',[
+ '/* XPM */'#13#10'static char * btn_downarrow_xpm[] = {'#13#10'"5 3 2 1",'#13
+ +#10'" '#9'c None",'#13#10'".'#9'c #000000",'#13#10'".....",'#13#10'" ... ",'
+ +#13#10'" . "};'#13#10
+]);
end.
diff --git a/components/rx/rxnew.lpk b/components/rx/rxnew.lpk
index e85f8ce04..37d623734 100644
--- a/components/rx/rxnew.lpk
+++ b/components/rx/rxnew.lpk
@@ -23,8 +23,8 @@ translate to Lazarus by alexs in 2005 - 2007
"/>
-
-
+
+
@@ -174,6 +174,10 @@ translate to Lazarus by alexs in 2005 - 2007
+
+
+
+
diff --git a/components/rx/rxnew.pas b/components/rx/rxnew.pas
index 95b4336ad..1b5432354 100644
--- a/components/rx/rxnew.pas
+++ b/components/rx/rxnew.pas
@@ -1,5 +1,5 @@
-{ This file was automatically created by Lazarus. Do not edit!
-This source is only used to compile and install the package.
+{ Этот файл был автоматически создан Lazarus. Не редактировать!
+Исходный код используется только для компиляции и установки пакета.
}
unit rxnew;
@@ -12,7 +12,7 @@ uses
duallist, boxprocs, tooledit, rxswitch, rxdice, rxdbcomb, rxtoolbar,
rxtbrsetup, fduallst, rxxpman, pagemngr, rxappicon, seldsfrm, rxctrls,
rxlogin, rxdbgrid_findunit, rxdbgrid_columsunit, rxpopupunit,
- rxcustomchartpanel, rxsortmemds, LazarusPackageIntf;
+ rxcustomchartpanel, rxsortmemds, AutoPanel, LazarusPackageIntf;
implementation
diff --git a/components/rx/rxpopupunit.pas b/components/rx/rxpopupunit.pas
index 90d2d11bc..26814055b 100644
--- a/components/rx/rxpopupunit.pas
+++ b/components/rx/rxpopupunit.pas
@@ -117,6 +117,7 @@ type
FColumns: TPopUpFormColumns;
FDropDownCount: integer;
FDropDownWidth: integer;
+ FOnGetCellProps: TGetCellPropsEvent;
FOptions: TPopUpGridOptions;
FShowTitles: boolean;
FTitleButtons: boolean;
@@ -144,6 +145,8 @@ type
property ShowTitles:boolean read FShowTitles write SetShowTitles default false;
property TitleButtons:boolean read FTitleButtons write SetTitleButtons default false;
property TitleStyle:TTitleStyle read FTitleStyle write SetTitleStyle default tsLazarus;
+ property OnGetCellProps: TGetCellPropsEvent read FOnGetCellProps
+ write FOnGetCellProps;
end;
{ TPopUpForm }
@@ -466,6 +469,7 @@ begin
FGrid.TitleButtons:=FPopUpFormOptions.TitleButtons;
FGrid.TitleStyle:=FPopUpFormOptions.TitleStyle;
FGrid.BorderStyle:=FPopUpFormOptions.BorderStyle;
+ FGrid.OnGetCellProps:=FPopUpFormOptions.OnGetCellProps;
end;
{ TPopUpFormOptions }