From dfd5b765f95ea398e1e63d475f8f5845f3409e62 Mon Sep 17 00:00:00 2001 From: alexs75 Date: Mon, 6 Jul 2009 16:26:45 +0000 Subject: [PATCH] quick find in rxdbgrid git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@897 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/rx/Demos/RxDBGrid/RxDBGridDemo.lpi | 153 +++++++++++++-- components/rx/Demos/RxDBGrid/RxDBGridDemo.rc | 4 +- .../rx/Demos/RxDBGrid/rxdbgridmainunit.lfm | 65 ++++++- .../rx/Demos/RxDBGrid/rxdbgridmainunit.lrs | 181 ++++++++++-------- .../rx/Demos/RxDBGrid/rxdbgridmainunit.pas | 25 +++ components/rx/docs/WhatsNew.eng.txt | 2 + components/rx/docs/WhatsNew.rus.txt | 2 + components/rx/docs/faq.txt | 6 +- components/rx/docs/readmy.txt | 16 +- components/rx/docs/todo.txt | 7 - components/rx/rxdbgrid.pas | 82 +++++++- 11 files changed, 427 insertions(+), 116 deletions(-) diff --git a/components/rx/Demos/RxDBGrid/RxDBGridDemo.lpi b/components/rx/Demos/RxDBGrid/RxDBGridDemo.lpi index 69b1ca810..1c192b843 100644 --- a/components/rx/Demos/RxDBGrid/RxDBGridDemo.lpi +++ b/components/rx/Demos/RxDBGrid/RxDBGridDemo.lpi @@ -11,13 +11,13 @@ <Icon Value="0"/> <UseXPManifest Value="True"/> - <ActiveEditorIndexAtStart Value="0"/> + <ActiveEditorIndexAtStart Value="1"/> </General> <VersionInfo> <UseVersionInfo Value="True"/> <CurrentVersionNr Value="3"/> <CurrentMajorRevNr Value="1"/> - <CurrentMinorRevNr Value="1"/> + <CurrentMinorRevNr Value="2"/> <ProjectVersion Value="3.1.1.0"/> <FileDescription Value="Demo application from RXFPC library"/> <LegalCopyright Value="Lagunov Aleksey, GPL 2"/> @@ -47,14 +47,14 @@ <MinVersion Major="1" Release="18" Build="56" Valid="True"/> </Item3> </RequiredPackages> - <Units Count="14"> + <Units Count="15"> <Unit0> <Filename Value="RxDBGridDemo.lpr"/> <IsPartOfProject Value="True"/> <UnitName Value="RxDBGridDemo"/> <CursorPos X="3" Y="11"/> <TopLine Value="1"/> - <UsageCount Value="26"/> + <UsageCount Value="27"/> </Unit0> <Unit1> <Filename Value="rxdbgridmainunit.pas"/> @@ -62,10 +62,10 @@ <ComponentName Value="RxDBGridMainForm"/> <ResourceBaseClass Value="Form"/> <UnitName Value="RxDBGridMainUnit"/> - <CursorPos X="26" Y="118"/> - <TopLine Value="77"/> + <CursorPos X="26" Y="19"/> + <TopLine Value="17"/> <EditorIndex Value="0"/> - <UsageCount Value="26"/> + <UsageCount Value="27"/> <Loaded Value="True"/> </Unit1> <Unit2> @@ -91,12 +91,14 @@ <Unit5> <Filename Value="../../rxdbgrid.pas"/> <UnitName Value="rxdbgrid"/> - <CursorPos X="6" Y="467"/> - <TopLine Value="462"/> + <CursorPos X="1" Y="1740"/> + <TopLine Value="1721"/> + <EditorIndex Value="1"/> <UsageCount Value="12"/> <Bookmarks Count="1"> - <Item0 X="3" Y="1446" ID="1"/> + <Item0 X="3" Y="1462" ID="1"/> </Bookmarks> + <Loaded Value="True"/> </Unit5> <Unit6> <Filename Value="../../../../lcl/lresources.pp"/> @@ -152,12 +154,137 @@ <TopLine Value="1779"/> <UsageCount Value="10"/> </Unit13> + <Unit14> + <Filename Value="../../../../../../../../home/alexs/install/2/rxdbgrid.diff"/> + <CursorPos X="1" Y="21"/> + <TopLine Value="1"/> + <EditorIndex Value="2"/> + <UsageCount Value="10"/> + <Loaded Value="True"/> + <SyntaxHighlighter Value="None"/> + </Unit14> </Units> - <JumpHistory Count="1" HistoryIndex="0"> + <JumpHistory Count="30" HistoryIndex="29"> <Position1> - <Filename Value="rxdbgridmainunit.pas"/> - <Caret Line="31" Column="22" TopLine="11"/> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1725" Column="1" TopLine="1706"/> </Position1> + <Position2> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1727" Column="1" TopLine="1708"/> + </Position2> + <Position3> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1729" Column="1" TopLine="1710"/> + </Position3> + <Position4> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1730" Column="1" TopLine="1711"/> + </Position4> + <Position5> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1732" Column="1" TopLine="1713"/> + </Position5> + <Position6> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1735" Column="1" TopLine="1716"/> + </Position6> + <Position7> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1737" Column="1" TopLine="1718"/> + </Position7> + <Position8> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1740" Column="1" TopLine="1721"/> + </Position8> + <Position9> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1735" Column="1" TopLine="1725"/> + </Position9> + <Position10> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1749" Column="1" TopLine="1730"/> + </Position10> + <Position11> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1738" Column="43" TopLine="1738"/> + </Position11> + <Position12> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1760" Column="1" TopLine="1741"/> + </Position12> + <Position13> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1765" Column="1" TopLine="1746"/> + </Position13> + <Position14> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1738" Column="35" TopLine="1738"/> + </Position14> + <Position15> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1760" Column="1" TopLine="1741"/> + </Position15> + <Position16> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1765" Column="1" TopLine="1746"/> + </Position16> + <Position17> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1757" Column="1" TopLine="1738"/> + </Position17> + <Position18> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1763" Column="1" TopLine="1744"/> + </Position18> + <Position19> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1765" Column="1" TopLine="1746"/> + </Position19> + <Position20> + <Filename Value="../../rxdbgrid.pas"/> + <Caret Line="1766" Column="1" TopLine="1747"/> + </Position20> + <Position21> + <Filename Value="rxdbgridmainunit.pas"/> + <Caret Line="9" Column="12" TopLine="1"/> + </Position21> + <Position22> + <Filename Value="rxdbgridmainunit.pas"/> + <Caret Line="25" Column="20" TopLine="1"/> + </Position22> + <Position23> + <Filename Value="rxdbgridmainunit.pas"/> + <Caret Line="48" Column="48" TopLine="11"/> + </Position23> + <Position24> + <Filename Value="rxdbgridmainunit.pas"/> + <Caret Line="164" Column="48" TopLine="135"/> + </Position24> + <Position25> + <Filename Value="rxdbgridmainunit.pas"/> + <Caret Line="17" Column="19" TopLine="17"/> + </Position25> + <Position26> + <Filename Value="rxdbgridmainunit.pas"/> + <Caret Line="55" Column="58" TopLine="55"/> + </Position26> + <Position27> + <Filename Value="rxdbgridmainunit.pas"/> + <Caret Line="119" Column="31" TopLine="117"/> + </Position27> + <Position28> + <Filename Value="rxdbgridmainunit.pas"/> + <Caret Line="17" Column="26" TopLine="17"/> + </Position28> + <Position29> + <Filename Value="rxdbgridmainunit.pas"/> + <Caret Line="18" Column="26" TopLine="17"/> + </Position29> + <Position30> + <Filename Value="rxdbgridmainunit.pas"/> + <Caret Line="19" Column="26" TopLine="17"/> + </Position30> </JumpHistory> </ProjectOptions> <CompilerOptions> diff --git a/components/rx/Demos/RxDBGrid/RxDBGridDemo.rc b/components/rx/Demos/RxDBGrid/RxDBGridDemo.rc index 6b0be9bbd..dc280a109 100644 --- a/components/rx/Demos/RxDBGrid/RxDBGridDemo.rc +++ b/components/rx/Demos/RxDBGrid/RxDBGridDemo.rc @@ -1,5 +1,5 @@ 1 VERSIONINFO -FILEVERSION 3,1,1,0 +FILEVERSION 3,1,2,0 PRODUCTVERSION 3,1,1,0 { BLOCK "StringFileInfo" @@ -9,7 +9,7 @@ PRODUCTVERSION 3,1,1,0 VALUE "Comments", "\000" VALUE "CompanyName", "\000" VALUE "FileDescription", "Demo application from RXFPC library\000" - VALUE "FileVersion", "3.1.1.0\000" + VALUE "FileVersion", "3.1.2.0\000" VALUE "InternalName", "\000" VALUE "LegalCopyright", "Lagunov Aleksey, GPL 2\000" VALUE "LegalTrademarks", "\000" diff --git a/components/rx/Demos/RxDBGrid/rxdbgridmainunit.lfm b/components/rx/Demos/RxDBGrid/rxdbgridmainunit.lfm index 59a4c1c71..b7e17e12d 100644 --- a/components/rx/Demos/RxDBGrid/rxdbgridmainunit.lfm +++ b/components/rx/Demos/RxDBGrid/rxdbgridmainunit.lfm @@ -1,18 +1,18 @@ object RxDBGridMainForm: TRxDBGridMainForm Left = 263 - Height = 582 + Height = 609 Top = 219 Width = 969 ActiveControl = Panel1 Caption = 'RxDBGrid Demo (ver 3) ...' - ClientHeight = 582 + ClientHeight = 609 ClientWidth = 969 OnCreate = FormCreate LCLVersion = '0.9.27' object RxDBGrid1: TRxDBGrid Left = 0 - Height = 533 - Top = 49 + Height = 542 + Top = 67 Width = 969 TitleButtons = True AutoSort = True @@ -80,7 +80,7 @@ object RxDBGridMainForm: TRxDBGridMainForm Filter.DropDownRows = 0 Filter.ItemIndex = -1 end> - OptionsRx = [rdgFooterRows] + OptionsRx = [rdgAllowColumnsForm, rdgAllowDialogFind, rdgFooterRows, rdgAllowQuickSearch] FooterColor = clYellow FooterRowCount = 1 OnFiltred = RxDBGrid1Filtred @@ -97,14 +97,26 @@ object RxDBGridMainForm: TRxDBGridMainForm end object Panel1: TPanel Left = 0 - Height = 49 + Height = 67 Top = 0 Width = 969 Align = alTop AutoSize = True - ClientHeight = 49 + ClientHeight = 67 ClientWidth = 969 TabOrder = 1 + object Label1: TLabel + AnchorSideLeft.Control = CheckBox1 + AnchorSideLeft.Side = asrBottom + AnchorSideTop.Control = Panel1 + Left = 361 + Height = 18 + Top = 6 + Width = 36 + BorderSpacing.Around = 6 + Caption = 'Mode' + ParentColor = False + end object Button1: TButton AnchorSideLeft.Control = Panel1 AnchorSideTop.Control = Panel1 @@ -146,6 +158,26 @@ object RxDBGridMainForm: TRxDBGridMainForm OnChange = CheckBox1Change TabOrder = 2 end + object ComboBox1: TComboBox + AnchorSideLeft.Control = Label1 + AnchorSideTop.Control = Label1 + AnchorSideTop.Side = asrBottom + Left = 367 + Height = 31 + Top = 30 + Width = 217 + BorderSpacing.Around = 6 + ItemHeight = 0 + ItemIndex = 0 + Items.Strings = ( + 'Edit mode' + 'Quick search mode' + ) + OnChange = ComboBox1Change + Style = csDropDownList + TabOrder = 3 + Text = 'Edit mode' + end end object RxMemoryData1: TRxMemoryData AutoCalcFields = False @@ -283,6 +315,17 @@ object RxDBGridMainForm: TRxDBGridMainForm Action = actOptimizeColumnsWidthAll OnClick = actOptimizeColumnsWidthAllExecute end + object MenuItem5: TMenuItem + Caption = '-' + end + object MenuItem7: TMenuItem + Action = showColumnsDialog + OnClick = showColumnsDialogExecute + end + object MenuItem6: TMenuItem + Action = showFindDialog + OnClick = showFindDialogExecute + end end object ActionList1: TActionList left = 206 @@ -299,6 +342,14 @@ object RxDBGridMainForm: TRxDBGridMainForm Caption = 'Optimize width...' OnExecute = actOptimizeWidthCol1Execute end + object showFindDialog: TAction + Caption = 'Show find dialog...' + OnExecute = showFindDialogExecute + end + object showColumnsDialog: TAction + Caption = 'Show columns dialog...' + OnExecute = showColumnsDialogExecute + end end object Datasource2: TDatasource DataSet = RxMemoryData2 diff --git a/components/rx/Demos/RxDBGrid/rxdbgridmainunit.lrs b/components/rx/Demos/RxDBGrid/rxdbgridmainunit.lrs index b8303d4c0..23c407609 100644 --- a/components/rx/Demos/RxDBGrid/rxdbgridmainunit.lrs +++ b/components/rx/Demos/RxDBGrid/rxdbgridmainunit.lrs @@ -1,11 +1,11 @@ { έςξ - τΰιλ περσπρξβ, ΰβςξμΰςθχερκθ ρξηδΰννϋι lazarus } LazarusResources.Add('TRxDBGridMainForm','FORMDATA',[ - 'TPF0'#17'TRxDBGridMainForm'#16'RxDBGridMainForm'#4'Left'#3#7#1#6'Height'#3'F' + 'TPF0'#17'TRxDBGridMainForm'#16'RxDBGridMainForm'#4'Left'#3#7#1#6'Height'#3'a' +#2#3'Top'#3#219#0#5'Width'#3#201#3#13'ActiveControl'#7#6'Panel1'#7'Caption'#6 - +#26'RxDBGrid Demo (ver 3) ...'#12'ClientHeight'#3'F'#2#11'ClientWidth'#3#201 + +#26'RxDBGrid Demo (ver 3) ...'#12'ClientHeight'#3'a'#2#11'ClientWidth'#3#201 +#3#8'OnCreate'#7#10'FormCreate'#10'LCLVersion'#6#6'0.9.27'#0#9'TRxDBGrid'#9 - +'RxDBGrid1'#4'Left'#2#0#6'Height'#3#21#2#3'Top'#2'1'#5'Width'#3#201#3#12'Tit' + +'RxDBGrid1'#4'Left'#2#0#6'Height'#3#30#2#3'Top'#2'C'#5'Width'#3#201#3#12'Tit' +'leButtons'#9#8'AutoSort'#9#7'Columns'#14#1#15'Title.Alignment'#7#8'taCenter' +#13'Title.Caption'#6#4'Code'#17'Title.Orientation'#7#12'toHorizontal'#9'Fiel' +'dName'#6#2'ID'#16'Footer.Alignment'#7#14'taRightJustify'#20'Footer.DisplayF' @@ -28,83 +28,100 @@ LazarusResources.Add('TRxDBGridMainForm','FORMDATA',[ +'Filter.ItemIndex'#2#255#0#1#15'Title.Alignment'#7#8'taCenter'#17'Title.Orie' +'ntation'#7#12'toHorizontal'#5'Width'#3#150#0#9'FieldName'#6#12'DEVELOPER_ID' +#19'Filter.DropDownRows'#2#0#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'RxDBGrid1Filtred'#5'Align'#7#8'alClient'#10'FocusColor'#7#5 - +'clRed'#13'SelectedColor'#7#11'clHighlight'#13'GridLineStyle'#7#7'psSolid'#10 - +'DataSource'#7#11'Datasource1'#7'Options'#11#9'dgEditing'#8'dgTitles'#11'dgI' - +'ndicator'#14'dgColumnResize'#12'dgColumnMove'#10'dgColLines'#10'dgRowLines' - +#6'dgTabs'#21'dgAlwaysShowSelection'#15'dgConfirmDelete'#14'dgCancelOnExit' - +#13'dgMultiselect'#18'dgHeaderPushedLook'#0#11'ParentColor'#8#9'PopupMenu'#7 - +#10'PopupMenu1'#8'TabOrder'#2#0#10'TitleStyle'#7#8'tsNative'#0#0#6'TPanel'#6 - +'Panel1'#4'Left'#2#0#6'Height'#2'1'#3'Top'#2#0#5'Width'#3#201#3#5'Align'#7#5 - +'alTop'#8'AutoSize'#9#12'ClientHeight'#2'1'#11'ClientWidth'#3#201#3#8'TabOrd' - +'er'#2#1#0#7'TButton'#7'Button1'#22'AnchorSideLeft.Control'#7#6'Panel1'#21'A' - +'nchorSideTop.Control'#7#6'Panel1'#4'Left'#2#6#6'Height'#2'%'#3'Top'#2#6#5'W' - +'idth'#2'\'#6'Action'#7#12'actCalcTotal'#8'AutoSize'#9#20'BorderSpacing.Arou' - +'nd'#2#6#25'BorderSpacing.InnerBorder'#2#4#8'TabOrder'#2#0#0#0#7'TButton'#7 - +'Button2'#22'AnchorSideLeft.Control'#7#7'Button1'#19'AnchorSideLeft.Side'#7#9 - +'asrBottom'#21'AnchorSideTop.Control'#7#6'Panel1'#4'Left'#2'h'#6'Height'#2'%' - +#3'Top'#2#6#5'Width'#3#165#0#6'Action'#7#26'actOptimizeColumnsWidthAll'#8'Au' - +'toSize'#9#20'BorderSpacing.Around'#2#6#25'BorderSpacing.InnerBorder'#2#4#8 - +'TabOrder'#2#1#0#0#9'TCheckBox'#9'CheckBox1'#22'AnchorSideLeft.Control'#7#7 - +'Button2'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7 - +#7'Button1'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#3#19#1#6'Height'#2 - +#21#3'Top'#2#14#5'Width'#2'P'#18'BorderSpacing.Left'#2#6#7'Caption'#6#10'Use' - +' filter'#8'OnChange'#7#15'CheckBox1Change'#8'TabOrder'#2#2#0#0#0#13'TRxMemo' - +'ryData'#13'RxMemoryData1'#14'AutoCalcFields'#8#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'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#1#4'Name'#6#12'Date_Present'#8'DataType'#7#6'ftDate'#9'Precision' - +#2#0#4'Size'#2#0#0#1#4'Name'#6#12'DEVELOPER_ID'#8'DataType'#7#9'ftInteger'#9 - +'Precision'#2#0#4'Size'#2#0#0#0#16'OnFilterRecordEx'#7#27'RxMemoryData1Filte' - +'rRecordEx'#4'left'#3#152#0#3'top'#3#8#1#0#13'TLongintField'#16'RxMemoryData' - +'1ID1'#12'DisplayWidth'#2#10#9'FieldKind'#7#6'fkData'#9'FieldName'#6#2'ID'#5 - +'Index'#2#0#11'LookupCache'#8#13'ProviderFlags'#11#10'pfInUpdate'#9'pfInWher' - +'e'#0#8'ReadOnly'#8#8'Required'#8#0#0#12'TStringField'#18'RxMemoryData1NAME1' - +#12'DisplayWidth'#3#150#0#9'FieldKind'#7#6'fkData'#9'FieldName'#6#4'NAME'#5 - +'Index'#2#1#11'LookupCache'#8#13'ProviderFlags'#11#10'pfInUpdate'#9'pfInWher' - ,'e'#0#8'ReadOnly'#8#8'Required'#8#4'Size'#3#150#0#0#0#11'TFloatField'#19'RxM' - +'emoryData1PRICE1'#12'DisplayWidth'#2#10#9'FieldKind'#7#6'fkData'#9'FieldNam' - +'e'#6#5'PRICE'#5'Index'#2#2#11'LookupCache'#8#13'ProviderFlags'#11#10'pfInUp' - +'date'#9'pfInWhere'#0#8'ReadOnly'#8#8'Required'#8#13'DisplayFormat'#6#8'#,##' - +'0.00'#8'MaxValue'#5#0#0#0#0#0#0#0#0#0#0#8'MinValue'#5#0#0#0#0#0#0#0#0#0#0#9 - +'Precision'#2#2#0#0#12'TStringField'#23'RxMemoryData1Developer1'#12'DisplayW' - +'idth'#3#150#0#9'FieldKind'#7#6'fkData'#9'FieldName'#6#9'Developer'#5'Index' - +#2#3#11'LookupCache'#8#13'ProviderFlags'#11#10'pfInUpdate'#9'pfInWhere'#0#8 - +'ReadOnly'#8#8'Required'#8#4'Size'#3#150#0#0#0#10'TDateField'#26'RxMemoryDat' - +'a1Date_Present1'#12'DisplayWidth'#2#10#9'FieldKind'#7#6'fkData'#9'FieldName' - +#6#12'Date_Present'#5'Index'#2#4#11'LookupCache'#8#13'ProviderFlags'#11#10'p' - +'fInUpdate'#9'pfInWhere'#0#8'ReadOnly'#8#8'Required'#8#0#0#13'TLongintField' - +#26'RxMemoryData1DEVELOPER_ID1'#12'DisplayWidth'#2#10#9'FieldKind'#7#6'fkDat' - +'a'#9'FieldName'#6#12'DEVELOPER_ID'#5'Index'#2#5#9'KeyFields'#6#12'DEVELOPER' - +'_ID'#11'LookupCache'#8#13'LookupDataSet'#7#13'RxMemoryData2'#15'LookupKeyFi' - +'elds'#6#12'DEVELOPER_ID'#17'LookupResultField'#6#14'DEVELOPER_NAME'#13'Prov' - +'iderFlags'#11#10'pfInUpdate'#9'pfInWhere'#0#8'ReadOnly'#8#8'Required'#8#0#0 - +#0#11'TDatasource'#11'Datasource1'#7'DataSet'#7#13'RxMemoryData1'#4'left'#2 - +'x'#3'top'#3#8#1#0#0#10'TPopupMenu'#10'PopupMenu1'#4'left'#3#152#0#3'top'#3 - +#197#0#0#9'TMenuItem'#9'MenuItem1'#6'Action'#7#20'actOptimizeWidthCol1'#7'On' - +'Click'#7#27'actOptimizeWidthCol1Execute'#0#0#9'TMenuItem'#9'MenuItem2'#7'Ca' - +'ption'#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...'#9'OnExecute'#7#19 - +'actCalcTotalExecute'#0#0#7'TAction'#26'actOptimizeColumnsWidthAll'#7'Captio' - +'n'#6#25'Optimize width for all...'#9'OnExecute'#7'!actOptimizeColumnsWidthA' - +'llExecute'#0#0#7'TAction'#20'actOptimizeWidthCol1'#7'Caption'#6#17'Optimize' - +' width...'#9'OnExecute'#7#27'actOptimizeWidthCol1Execute'#0#0#0#11'TDatasou' - +'rce'#11'Datasource2'#7'DataSet'#7#13'RxMemoryData2'#4'left'#3#207#0#3'top'#3 - +#8#1#0#0#13'TRxMemoryData'#13'RxMemoryData2'#14'AutoCalcFields'#8#9'FieldDef' - +'s'#14#1#4'Name'#6#12'DEVELOPER_ID'#8'DataType'#7#9'ftInteger'#9'Precision'#2 - +#0#4'Size'#2#0#0#1#4'Name'#6#14'DEVELOPER_NAME'#8'DataType'#7#8'ftString'#9 - +'Precision'#2#0#4'Size'#3#130#0#0#0#4'left'#3#240#0#3'top'#3#8#1#0#13'TLongi' - +'ntField'#26'RxMemoryData2DEVELOPER_ID1'#12'DisplayWidth'#2#10#9'FieldKind'#7 - +#6'fkData'#9'FieldName'#6#12'DEVELOPER_ID'#5'Index'#2#0#11'LookupCache'#8#13 - +'ProviderFlags'#11#10'pfInUpdate'#9'pfInWhere'#0#8'ReadOnly'#8#8'Required'#8 - +#0#0#12'TStringField'#28'RxMemoryData2DEVELOPER_NAME1'#12'DisplayWidth'#3#130 - +#0#9'FieldKind'#7#6'fkData'#9'FieldName'#6#14'DEVELOPER_NAME'#5'Index'#2#1#11 - +'LookupCache'#8#13'ProviderFlags'#11#10'pfInUpdate'#9'pfInWhere'#0#8'ReadOnl' - +'y'#8#8'Required'#8#4'Size'#3#130#0#0#0#0#0 + +#19'rdgAllowColumnsForm'#18'rdgAllowDialogFind'#13'rdgFooterRows'#19'rdgAllo' + +'wQuickSearch'#0#11'FooterColor'#7#8'clYellow'#14'FooterRowCount'#2#1#9'OnFi' + +'ltred'#7#16'RxDBGrid1Filtred'#5'Align'#7#8'alClient'#10'FocusColor'#7#5'clR' + +'ed'#13'SelectedColor'#7#11'clHighlight'#13'GridLineStyle'#7#7'psSolid'#10'D' + +'ataSource'#7#11'Datasource1'#7'Options'#11#9'dgEditing'#8'dgTitles'#11'dgIn' + +'dicator'#14'dgColumnResize'#12'dgColumnMove'#10'dgColLines'#10'dgRowLines'#6 + +'dgTabs'#21'dgAlwaysShowSelection'#15'dgConfirmDelete'#14'dgCancelOnExit'#13 + +'dgMultiselect'#18'dgHeaderPushedLook'#0#11'ParentColor'#8#9'PopupMenu'#7#10 + +'PopupMenu1'#8'TabOrder'#2#0#10'TitleStyle'#7#8'tsNative'#0#0#6'TPanel'#6'Pa' + +'nel1'#4'Left'#2#0#6'Height'#2'C'#3'Top'#2#0#5'Width'#3#201#3#5'Align'#7#5'a' + +'lTop'#8'AutoSize'#9#12'ClientHeight'#2'C'#11'ClientWidth'#3#201#3#8'TabOrde' + +'r'#2#1#0#6'TLabel'#6'Label1'#22'AnchorSideLeft.Control'#7#9'CheckBox1'#19'A' + +'nchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#6'Panel1'#4 + +'Left'#3'i'#1#6'Height'#2#18#3'Top'#2#6#5'Width'#2'$'#20'BorderSpacing.Aroun' + +'d'#2#6#7'Caption'#6#4'Mode'#11'ParentColor'#8#0#0#7'TButton'#7'Button1'#22 + +'AnchorSideLeft.Control'#7#6'Panel1'#21'AnchorSideTop.Control'#7#6'Panel1'#4 + +'Left'#2#6#6'Height'#2'%'#3'Top'#2#6#5'Width'#2'\'#6'Action'#7#12'actCalcTot' + +'al'#8'AutoSize'#9#20'BorderSpacing.Around'#2#6#25'BorderSpacing.InnerBorder' + +#2#4#8'TabOrder'#2#0#0#0#7'TButton'#7'Button2'#22'AnchorSideLeft.Control'#7#7 + +'Button1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7 + +#6'Panel1'#4'Left'#2'h'#6'Height'#2'%'#3'Top'#2#6#5'Width'#3#165#0#6'Action' + +#7#26'actOptimizeColumnsWidthAll'#8'AutoSize'#9#20'BorderSpacing.Around'#2#6 + +#25'BorderSpacing.InnerBorder'#2#4#8'TabOrder'#2#1#0#0#9'TCheckBox'#9'CheckB' + +'ox1'#22'AnchorSideLeft.Control'#7#7'Button2'#19'AnchorSideLeft.Side'#7#9'as' + +'rBottom'#21'AnchorSideTop.Control'#7#7'Button1'#18'AnchorSideTop.Side'#7#9 + +'asrCenter'#4'Left'#3#19#1#6'Height'#2#21#3'Top'#2#14#5'Width'#2'P'#18'Borde' + +'rSpacing.Left'#2#6#7'Caption'#6#10'Use filter'#8'OnChange'#7#15'CheckBox1Ch' + +'ange'#8'TabOrder'#2#2#0#0#9'TComboBox'#9'ComboBox1'#22'AnchorSideLeft.Contr' + +'ol'#7#6'Label1'#21'AnchorSideTop.Control'#7#6'Label1'#18'AnchorSideTop.Side' + +#7#9'asrBottom'#4'Left'#3'o'#1#6'Height'#2#31#3'Top'#2#30#5'Width'#3#217#0#20 + +'BorderSpacing.Around'#2#6#10'ItemHeight'#2#0#9'ItemIndex'#2#0#13'Items.Stri' + +'ngs'#1#6#9'Edit mode'#6#17'Quick search mode'#0#8'OnChange'#7#15'ComboBox1C' + +'hange'#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#3#4'Text'#6#9'Edit mode' + +#0#0#0#13'TRxMemoryData'#13'RxMemoryData1'#14'AutoCalcFields'#8#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 + ,'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#1#4'Name'#6#12'Date_Present'#8'DataType'#7#6'ftDate' + +#9'Precision'#2#0#4'Size'#2#0#0#1#4'Name'#6#12'DEVELOPER_ID'#8'DataType'#7#9 + +'ftInteger'#9'Precision'#2#0#4'Size'#2#0#0#0#16'OnFilterRecordEx'#7#27'RxMem' + +'oryData1FilterRecordEx'#4'left'#3#152#0#3'top'#3#8#1#0#13'TLongintField'#16 + +'RxMemoryData1ID1'#12'DisplayWidth'#2#10#9'FieldKind'#7#6'fkData'#9'FieldNam' + +'e'#6#2'ID'#5'Index'#2#0#11'LookupCache'#8#13'ProviderFlags'#11#10'pfInUpdat' + +'e'#9'pfInWhere'#0#8'ReadOnly'#8#8'Required'#8#0#0#12'TStringField'#18'RxMem' + +'oryData1NAME1'#12'DisplayWidth'#3#150#0#9'FieldKind'#7#6'fkData'#9'FieldNam' + +'e'#6#4'NAME'#5'Index'#2#1#11'LookupCache'#8#13'ProviderFlags'#11#10'pfInUpd' + +'ate'#9'pfInWhere'#0#8'ReadOnly'#8#8'Required'#8#4'Size'#3#150#0#0#0#11'TFlo' + +'atField'#19'RxMemoryData1PRICE1'#12'DisplayWidth'#2#10#9'FieldKind'#7#6'fkD' + +'ata'#9'FieldName'#6#5'PRICE'#5'Index'#2#2#11'LookupCache'#8#13'ProviderFlag' + +'s'#11#10'pfInUpdate'#9'pfInWhere'#0#8'ReadOnly'#8#8'Required'#8#13'DisplayF' + +'ormat'#6#8'#,##0.00'#8'MaxValue'#5#0#0#0#0#0#0#0#0#0#0#8'MinValue'#5#0#0#0#0 + +#0#0#0#0#0#0#9'Precision'#2#2#0#0#12'TStringField'#23'RxMemoryData1Developer' + +'1'#12'DisplayWidth'#3#150#0#9'FieldKind'#7#6'fkData'#9'FieldName'#6#9'Devel' + +'oper'#5'Index'#2#3#11'LookupCache'#8#13'ProviderFlags'#11#10'pfInUpdate'#9 + +'pfInWhere'#0#8'ReadOnly'#8#8'Required'#8#4'Size'#3#150#0#0#0#10'TDateField' + +#26'RxMemoryData1Date_Present1'#12'DisplayWidth'#2#10#9'FieldKind'#7#6'fkDat' + +'a'#9'FieldName'#6#12'Date_Present'#5'Index'#2#4#11'LookupCache'#8#13'Provid' + +'erFlags'#11#10'pfInUpdate'#9'pfInWhere'#0#8'ReadOnly'#8#8'Required'#8#0#0#13 + +'TLongintField'#26'RxMemoryData1DEVELOPER_ID1'#12'DisplayWidth'#2#10#9'Field' + +'Kind'#7#6'fkData'#9'FieldName'#6#12'DEVELOPER_ID'#5'Index'#2#5#9'KeyFields' + +#6#12'DEVELOPER_ID'#11'LookupCache'#8#13'LookupDataSet'#7#13'RxMemoryData2' + +#15'LookupKeyFields'#6#12'DEVELOPER_ID'#17'LookupResultField'#6#14'DEVELOPER' + +'_NAME'#13'ProviderFlags'#11#10'pfInUpdate'#9'pfInWhere'#0#8'ReadOnly'#8#8'R' + +'equired'#8#0#0#0#11'TDatasource'#11'Datasource1'#7'DataSet'#7#13'RxMemoryDa' + +'ta1'#4'left'#2'x'#3'top'#3#8#1#0#0#10'TPopupMenu'#10'PopupMenu1'#4'left'#3 + +#152#0#3'top'#3#197#0#0#9'TMenuItem'#9'MenuItem1'#6'Action'#7#20'actOptimize' + +'WidthCol1'#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'a' + +'ctCalcTotal'#7'OnClick'#7#19'actCalcTotalExecute'#0#0#9'TMenuItem'#9'MenuIt' + +'em3'#6'Action'#7#26'actOptimizeColumnsWidthAll'#7'OnClick'#7'!actOptimizeCo' + +'lumnsWidthAllExecute'#0#0#9'TMenuItem'#9'MenuItem5'#7'Caption'#6#1'-'#0#0#9 + +'TMenuItem'#9'MenuItem7'#6'Action'#7#17'showColumnsDialog'#7'OnClick'#7#24's' + +'howColumnsDialogExecute'#0#0#9'TMenuItem'#9'MenuItem6'#6'Action'#7#14'showF' + +'indDialog'#7'OnClick'#7#21'showFindDialogExecute'#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...'#9'OnExecute'#7#19'actCalcTotalExecute'#0#0#7'T' + +'Action'#26'actOptimizeColumnsWidthAll'#7'Caption'#6#25'Optimize width for a' + +'ll...'#9'OnExecute'#7'!actOptimizeColumnsWidthAllExecute'#0#0#7'TAction'#20 + +'actOptimizeWidthCol1'#7'Caption'#6#17'Optimize width...'#9'OnExecute'#7#27 + +'actOptimizeWidthCol1Execute'#0#0#7'TAction'#14'showFindDialog'#7'Caption'#6 + +#19'Show find dialog...'#9'OnExecute'#7#21'showFindDialogExecute'#0#0#7'TAct' + +'ion'#17'showColumnsDialog'#7'Caption'#6#22'Show columns dialog...'#9'OnExec' + +'ute'#7#24'showColumnsDialogExecute'#0#0#0#11'TDatasource'#11'Datasource2'#7 + +'DataSet'#7#13'RxMemoryData2'#4'left'#3#207#0#3'top'#3#8#1#0#0#13'TRxMemoryD' + +'ata'#13'RxMemoryData2'#14'AutoCalcFields'#8#9'FieldDefs'#14#1#4'Name'#6#12 + +'DEVELOPER_ID'#8'DataType'#7#9'ftInteger'#9'Precision'#2#0#4'Size'#2#0#0#1#4 + +'Name'#6#14'DEVELOPER_NAME'#8'DataType'#7#8'ftString'#9'Precision'#2#0#4'Siz' + +'e'#3#130#0#0#0#4'left'#3#240#0#3'top'#3#8#1#0#13'TLongintField'#26'RxMemory' + +'Data2DEVELOPER_ID1'#12'DisplayWidth'#2#10#9'FieldKind'#7#6'fkData'#9'FieldN' + +'ame'#6#12'DEVELOPER_ID'#5'Index'#2#0#11'LookupCache'#8#13'ProviderFlags'#11 + +#10'pfInUpdate'#9'pfInWhere'#0#8'ReadOnly'#8#8'Required'#8#0#0#12'TStringFie' + +'ld'#28'RxMemoryData2DEVELOPER_NAME1'#12'DisplayWidth'#3#130#0#9'FieldKind'#7 + +#6'fkData'#9'FieldName'#6#14'DEVELOPER_NAME'#5'Index'#2#1#11'LookupCache'#8 + +#13'ProviderFlags'#11#10'pfInUpdate'#9'pfInWhere'#0#8'ReadOnly'#8#8'Required' + +#8#4'Size'#3#130#0#0#0#0#0 ]); diff --git a/components/rx/Demos/RxDBGrid/rxdbgridmainunit.pas b/components/rx/Demos/RxDBGrid/rxdbgridmainunit.pas index b42c89b0b..6d0ac70a5 100644 --- a/components/rx/Demos/RxDBGrid/rxdbgridmainunit.pas +++ b/components/rx/Demos/RxDBGrid/rxdbgridmainunit.pas @@ -14,14 +14,21 @@ type TRxDBGridMainForm = class(TForm) actCalcTotal: TAction; + MenuItem5: TMenuItem; + MenuItem6: TMenuItem; + MenuItem7: TMenuItem; + showColumnsDialog: TAction; + showFindDialog: TAction; actOptimizeWidthCol1: TAction; actOptimizeColumnsWidthAll: TAction; ActionList1: TActionList; Button1: TButton; Button2: TButton; CheckBox1: TCheckBox; + ComboBox1: TComboBox; Datasource1: TDatasource; Datasource2: TDatasource; + Label1: TLabel; MenuItem1: TMenuItem; MenuItem2: TMenuItem; MenuItem3: TMenuItem; @@ -43,10 +50,13 @@ type procedure actOptimizeColumnsWidthAllExecute(Sender: TObject); procedure actOptimizeWidthCol1Execute(Sender: TObject); procedure CheckBox1Change(Sender: TObject); + procedure ComboBox1Change(Sender: TObject); procedure FormCreate(Sender: TObject); procedure RxDBGrid1Filtred(Sender: TObject); procedure RxMemoryData1FilterRecordEx(DataSet: TDataSet; var Accept: Boolean ); + procedure showColumnsDialogExecute(Sender: TObject); + procedure showFindDialogExecute(Sender: TObject); private procedure DoFillFilters; public @@ -107,6 +117,16 @@ begin end; end; +procedure TRxDBGridMainForm.showColumnsDialogExecute(Sender: TObject); +begin + RxDBGrid1.ShowColumnsDialog; +end; + +procedure TRxDBGridMainForm.showFindDialogExecute(Sender: TObject); +begin + RxDBGrid1.ShowFindDialog; +end; + procedure TRxDBGridMainForm.DoFillFilters; var C:TRxColumn; @@ -156,6 +176,11 @@ begin RxMemoryData1.Filtered:=CheckBox1.Checked; end; +procedure TRxDBGridMainForm.ComboBox1Change(Sender: TObject); +begin + RxDBGrid1.ReadOnly:=ComboBox1.ItemIndex <> 0; +end; + initialization {$I rxdbgridmainunit.lrs} diff --git a/components/rx/docs/WhatsNew.eng.txt b/components/rx/docs/WhatsNew.eng.txt index 8bd2eaa13..d53d522d4 100644 --- a/components/rx/docs/WhatsNew.eng.txt +++ b/components/rx/docs/WhatsNew.eng.txt @@ -19,6 +19,8 @@ - fix sort order in TRxMemDataSet - fix draw buttons in ToolPanel with use system themes - fix error in TRxDBComboBox + + New mode - Quick search data in grid (code from with minor fix) + 22.05.2008 - version 2.0.0.136 (svn revision 100) + In TRxCustomDBLookupCombo add check for CircularDataLink + in TRxCustomDBLookupCombo accelerated drawing data diff --git a/components/rx/docs/WhatsNew.rus.txt b/components/rx/docs/WhatsNew.rus.txt index 4f7679844..c095c0458 100644 --- a/components/rx/docs/WhatsNew.rus.txt +++ b/components/rx/docs/WhatsNew.rus.txt @@ -23,6 +23,8 @@ + Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ объСдинСния ячССк Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (смотритС Π² Π΄Π΅ΠΌΠΊΠ΅ Π½Π° RxDBGrid) - Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π° ошибка установки значСния для TRxDBComboBox + + Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π½ Ρ€Π΅ΠΆΠΈΠΌ быстрого поиска (ΠΊΠΎΠ΄ ΠΎΡ‚ АлСксСя Козлова с нСбольшими Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠΌΠΈ) - ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ смотри ΠΏΡƒΠ½ΠΊΡ‚ 6 Π² Ρ„Π°ΠΉΠ»Π΅ readmy.txt + 22.05.2008 - вСрсия 2.0.0.136 (svn revision 100) + Π£ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° TRxCustomDBLookupCombo Π²Π²Π΅Π΄Ρ‘Π½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π° CircularDataLink + Π£ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° TRxCustomDBLookupCombo ускорСна отрисовка Π΄Π°Π½Π½Ρ‹Ρ… diff --git a/components/rx/docs/faq.txt b/components/rx/docs/faq.txt index 252e06a86..e48d22046 100644 --- a/components/rx/docs/faq.txt +++ b/components/rx/docs/faq.txt @@ -3,4 +3,8 @@ HOME ΠΈ END Π½Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ Π² Π½Π°Ρ‡Π°Π»ΠΎ/ΠΊΠΎΠ½Π΅Ρ† списка A. Для отобраТСния списка ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ TRxDBGrid (прямой наслСдник TDBGrid) - Π² Π½Ρ‘ΠΌ для позиционирования Π² - Π½Π°Ρ‡Π°Π»ΠΎ/ΠΊΠΎΠ½Π΅Ρ† списка клавиши Ctrl+Home/Ctrl+End \ No newline at end of file + Π½Π°Ρ‡Π°Π»ΠΎ/ΠΊΠΎΠ½Π΅Ρ† списка клавиши Ctrl+Home/Ctrl+End + +2. Π’ RxDBGrid Ρ€Π΅ΠΆΠΈΠΌ быстрого поиска Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΈ RxDBGrid.ReadOnly = true + ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ смотри ΠΏΡƒΠ½ΠΊΡ‚ 6 Π² Ρ„Π°ΠΉΠ»Π΅ readmy.txt + diff --git a/components/rx/docs/readmy.txt b/components/rx/docs/readmy.txt index 4d7bb8a76..00e5574b2 100644 --- a/components/rx/docs/readmy.txt +++ b/components/rx/docs/readmy.txt @@ -48,4 +48,18 @@ объяснСниС Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΡ‚Π΅Ρ€Π΅ фокуса TDbGrid ΠΈ Π΅Π³ΠΎ наслСдниСи Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Cancel -6. Вопросы Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΡ‹Π»ΠΎΠΌ ΠΈΠ»ΠΈ Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ΅ FreePascal.ru (ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅ΠΉ) +6. +ΠΠΎΠ²ΡˆΠ΅ΡΡ‚Π²ΠΎ: Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π² RxDBGrid UTF8-быстрый поиск. +Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΎΠΏΡ†ΠΈΠ΅ΠΉ rdgAllowQuickUTF8Search (Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π΅Ρ‘ Π² rxoptions, это Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ? ΠΈΠ»ΠΈ Π±Ρ‹Π»ΠΎ +Π»ΡƒΡ‡ΡˆΠ΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² состав Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΡ†ΠΈΠΉ?) +УправляСтся свойством QuickUTF8Search +НС Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° список "ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ…" клавиш ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ…: CBadQuickUTF8SearchSymbols +По ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌ клавишам сбрасываСт подстроку поиска: CCancelQuickUTF8SearchKeys +Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий поиска Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ‚ΠΈΠΏ TRxQuickUTF8SearchNotifyEvent +ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ поиска Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ событиС BeforeQuickUTF8Search, Π² качСствС AValue +пСрСдаётся подстрока-ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ Π½Π° поиск, Ссли Π΅Ρ‘ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ QuickUTF8Search +поиск производится Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ +ПослС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ поиска вызываСтся событиС AfterQuickUTF8Search, ΠΊΡƒΠ΄Π° пСрСдаётся Π² +качСствС AValue прСдыдущая подстрока поиска. ПослСднСС событиС ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для +отобраТСния Π³Π΄Π΅ Π½ΠΈ Π±ΡƒΠ΄ΡŒ Π½Π° ΠΎΠ±Ρ‰Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ подстроки поиска. +7. Вопросы Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΡ‹Π»ΠΎΠΌ ΠΈΠ»ΠΈ Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ΅ FreePascal.ru (ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅ΠΉ) diff --git a/components/rx/docs/todo.txt b/components/rx/docs/todo.txt index 38eb2a9b9..4c758fb2a 100644 --- a/components/rx/docs/todo.txt +++ b/components/rx/docs/todo.txt @@ -2,11 +2,4 @@ Π² TPageManager Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ситуация прямого измСнСния Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ Π² PageControl-Π΅ -2. Π’ RxDBGrid - - ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ объСдСнСниС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π² ΠΎΠ΄ΠΈΠ½ Π³Ρ€ΡƒΠΏΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ: - |-----------------| - | | - |-----------------| - | | | - |-----------------| diff --git a/components/rx/rxdbgrid.pas b/components/rx/rxdbgrid.pas index c5528146b..9e45f95d7 100644 --- a/components/rx/rxdbgrid.pas +++ b/components/rx/rxdbgrid.pas @@ -6,10 +6,16 @@ interface uses Classes, SysUtils, LResources, LCLType, LCLIntf, Forms, Controls, - Graphics, Dialogs, Grids, DBGrids, DB, PropertyStorage, vclutils, LMessages, - types, StdCtrls; + Graphics, Dialogs, Grids, dbutils, DBGrids, DB, PropertyStorage, vclutils, + LMessages, types, StdCtrls; + +const + CBadQuickSearchSymbols = [VK_UNKNOWN..VK_HELP]+[VK_LWIN..VK_SLEEP]+[VK_NUMLOCK..VK_SCROLL]+[VK_LSHIFT..VK_OEM_102]+[VK_PROCESSKEY]+[VK_ATTN..VK_UNDEFINED]; + CCancelQuickSearchKeys = [VK_ESCAPE,VK_CANCEL,VK_DELETE,VK_INSERT,VK_DOWN,VK_UP,VK_NEXT,VK_PRIOR,VK_TAB,VK_RETURN,VK_HOME,VK_END,VK_SPACE,VK_MULTIPLY]; type + TRxQuickSearchNotifyEvent = procedure(Sender: TObject; Field : TField; var AValue : string) of object; + TSortMarker = (smNone, smDown, smUp); TGetBtnParamsEvent = procedure (Sender: TObject; Field: TField; @@ -34,7 +40,8 @@ type rdgXORColSizing, rdgFilter, rdgMultiTitleLines, - rdgMrOkOnDblClik + rdgMrOkOnDblClik, + rdgAllowQuickSearch ); TOptionsRx = set of TOptionRx; @@ -241,6 +248,10 @@ type FRxDbGridLookupComboEditor:TCustomControl; FRxDbGridDateEditor:TWinControl; + FAfterQuickSearch : TRxQuickSearchNotifyEvent; + FBeforeQuickSearch : TRxQuickSearchNotifyEvent; + FQuickUTF8Search : String; + function GetColumns: TRxDbGridColumns; function GetPropertyStorage: TCustomPropertyStorage; function GetTitleButtons: boolean; @@ -282,6 +293,7 @@ type procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; procedure KeyDown(var Key : Word; Shift : TShiftState); override; + procedure UTF8KeyPress(var UTF8Key: TUTF8Char); override; function CreateColumns: TGridColumns; override; procedure DrawCellBitmap(RxColumn:TRxColumn; aRect: TRect; aState: TGridDrawState; AImageIndex:integer); virtual; procedure SetEditText(ACol, ARow: Longint; const Value: string); override; @@ -297,6 +309,7 @@ type procedure InternalOptimizeColumnsWidth(AColList:TList); function IsDefaultRowHeightStored:boolean; procedure VisualChange; override; + procedure SetQuickUTF8Search(AValue : String); public constructor Create(AOwner: TComponent); override; destructor Destroy; override; @@ -317,7 +330,10 @@ type procedure OptimizeColumnsWidth(AColList:String); procedure OptimizeColumnsWidthAll; procedure UpdateTitleHight; + property QuickUTF8Search:String read FQuickUTF8Search write SetQuickUTF8Search; published + property AfterQuickSearch: TRxQuickSearchNotifyEvent read FAfterQuickSearch write FAfterQuickSearch; + property BeforeQuickSearch: TRxQuickSearchNotifyEvent read FBeforeQuickSearch write FBeforeQuickSearch; property OnGetBtnParams: TGetBtnParamsEvent read FOnGetBtnParams write FOnGetBtnParams; property TitleButtons: boolean read GetTitleButtons write SetTitleButtons; property AutoSort:boolean read FAutoSort write SetAutoSort; @@ -1698,14 +1714,73 @@ begin inherited MouseUp(Button, Shift, X, Y); end; +procedure TRxDBGrid.SetQuickUTF8Search(AValue : String); +var + ClearSearchValue : Boolean; + OldSearchString : String; +begin + if ( rdgAllowQuickSearch in OptionsRx ) then + begin + OldSearchString := Self.FQuickUTF8Search; + if (OldSearchString <> AValue ) and Assigned(Self.FBeforeQuickSearch) then + Self.FBeforeQuickSearch(Self, SelectedField, AValue); + if OldSearchString <> AValue then + begin + ClearSearchValue := True; + if ( Length(AValue) > 0 ) and ( Self.DatalinkActive ) then + begin + if (DataSource.DataSet.State = dsBrowse) and (not (DataSource.DataSet.EOF and DataSource.DataSet.BOF)) then + begin + //1.Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΊΡƒ поиска... + if DataSetLocateThrough(Self.DataSource.DataSet, Self.SelectedField.FieldName,AValue,[loPartialKey,loCaseInsensitive]) then + Self.FQuickUTF8Search := AValue; + ClearSearchValue := False; + end; + end; + if ClearSearchValue then + begin + Self.FQuickUTF8Search := ''; + end; + if (OldSearchString <> Self.FQuickUTF8Search ) and Assigned(Self.FAfterQuickSearch) then + Self.FAfterQuickSearch(Self, SelectedField, OldSearchString); + end + end; + //TODO: ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ищущСйся Π±ΡƒΠΊΠ²Ρ‹/строки. +end; + +procedure TRxDBGrid.UTF8KeyPress(var UTF8Key: TUTF8Char); +var + CheckUp : Boolean; +begin + inherited UTF8KeyPress(UTF8Key); + if ReadOnly then + begin + //0. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Ρ‡Ρ‚ΠΎ это ΠΊΠ½ΠΎΠΏΠΊΠ° значащая, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ "строку поиска" + if Length(UTF8Key) = 1 then + begin + //DebugLn('Ord Of Key:',IntToStr(Ord(UTF8Key[1]))); + CheckUp := not ( Ord(UTF8Key[1]) in CBadQuickSearchSymbols ) + end + else + CheckUp := True; + // DebugLn('RxDBGrid.UTF8KeyPress check',IfThen(CheckUp,'True','False'),'INIT UTF8Key= ',UTF8Key,' Selected Field: ', Self.SelectedField.FieldName); + if CheckUp then + QuickUTF8Search := QuickUTF8Search + Trim(UTF8Key); + end; +end; + procedure TRxDBGrid.KeyDown(var Key: Word; Shift: TShiftState); var FTmpReadOnly:boolean; begin + //DebugLn('RxDBGrid.KeyDown ',Name,' INIT Key= ',IntToStr(Key)); + if (Key in CCancelQuickSearchKeys) then + if Length(QuickUTF8Search) > 0 then QuickUTF8Search := ''; case Key of ord('F'):begin if (ssCtrl in Shift) and (rdgAllowDialogFind in OptionsRx) then begin + if Length(QuickUTF8Search) > 0 then QuickUTF8Search := ''; ShowFindDialog; exit; end; @@ -1713,6 +1788,7 @@ begin ord('W'):begin if (ssCtrl in Shift) and (rdgAllowColumnsForm in OptionsRx) then begin + if Length(QuickUTF8Search) > 0 then QuickUTF8Search := ''; ShowColumnsDialog; exit; end;