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 }