quick find in rxdbgrid

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@897 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
alexs75
2009-07-06 16:26:45 +00:00
parent 6ab87b285d
commit dfd5b765f9
11 changed files with 427 additions and 116 deletions

View File

@ -11,13 +11,13 @@
<Title Value="RxDBGrid demo"/> <Title Value="RxDBGrid demo"/>
<Icon Value="0"/> <Icon Value="0"/>
<UseXPManifest Value="True"/> <UseXPManifest Value="True"/>
<ActiveEditorIndexAtStart Value="0"/> <ActiveEditorIndexAtStart Value="1"/>
</General> </General>
<VersionInfo> <VersionInfo>
<UseVersionInfo Value="True"/> <UseVersionInfo Value="True"/>
<CurrentVersionNr Value="3"/> <CurrentVersionNr Value="3"/>
<CurrentMajorRevNr Value="1"/> <CurrentMajorRevNr Value="1"/>
<CurrentMinorRevNr Value="1"/> <CurrentMinorRevNr Value="2"/>
<ProjectVersion Value="3.1.1.0"/> <ProjectVersion Value="3.1.1.0"/>
<FileDescription Value="Demo application from RXFPC library"/> <FileDescription Value="Demo application from RXFPC library"/>
<LegalCopyright Value="Lagunov Aleksey, GPL 2"/> <LegalCopyright Value="Lagunov Aleksey, GPL 2"/>
@ -47,14 +47,14 @@
<MinVersion Major="1" Release="18" Build="56" Valid="True"/> <MinVersion Major="1" Release="18" Build="56" Valid="True"/>
</Item3> </Item3>
</RequiredPackages> </RequiredPackages>
<Units Count="14"> <Units Count="15">
<Unit0> <Unit0>
<Filename Value="RxDBGridDemo.lpr"/> <Filename Value="RxDBGridDemo.lpr"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="RxDBGridDemo"/> <UnitName Value="RxDBGridDemo"/>
<CursorPos X="3" Y="11"/> <CursorPos X="3" Y="11"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="26"/> <UsageCount Value="27"/>
</Unit0> </Unit0>
<Unit1> <Unit1>
<Filename Value="rxdbgridmainunit.pas"/> <Filename Value="rxdbgridmainunit.pas"/>
@ -62,10 +62,10 @@
<ComponentName Value="RxDBGridMainForm"/> <ComponentName Value="RxDBGridMainForm"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<UnitName Value="RxDBGridMainUnit"/> <UnitName Value="RxDBGridMainUnit"/>
<CursorPos X="26" Y="118"/> <CursorPos X="26" Y="19"/>
<TopLine Value="77"/> <TopLine Value="17"/>
<EditorIndex Value="0"/> <EditorIndex Value="0"/>
<UsageCount Value="26"/> <UsageCount Value="27"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit1> </Unit1>
<Unit2> <Unit2>
@ -91,12 +91,14 @@
<Unit5> <Unit5>
<Filename Value="../../rxdbgrid.pas"/> <Filename Value="../../rxdbgrid.pas"/>
<UnitName Value="rxdbgrid"/> <UnitName Value="rxdbgrid"/>
<CursorPos X="6" Y="467"/> <CursorPos X="1" Y="1740"/>
<TopLine Value="462"/> <TopLine Value="1721"/>
<EditorIndex Value="1"/>
<UsageCount Value="12"/> <UsageCount Value="12"/>
<Bookmarks Count="1"> <Bookmarks Count="1">
<Item0 X="3" Y="1446" ID="1"/> <Item0 X="3" Y="1462" ID="1"/>
</Bookmarks> </Bookmarks>
<Loaded Value="True"/>
</Unit5> </Unit5>
<Unit6> <Unit6>
<Filename Value="../../../../lcl/lresources.pp"/> <Filename Value="../../../../lcl/lresources.pp"/>
@ -152,12 +154,137 @@
<TopLine Value="1779"/> <TopLine Value="1779"/>
<UsageCount Value="10"/> <UsageCount Value="10"/>
</Unit13> </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> </Units>
<JumpHistory Count="1" HistoryIndex="0"> <JumpHistory Count="30" HistoryIndex="29">
<Position1> <Position1>
<Filename Value="rxdbgridmainunit.pas"/> <Filename Value="../../rxdbgrid.pas"/>
<Caret Line="31" Column="22" TopLine="11"/> <Caret Line="1725" Column="1" TopLine="1706"/>
</Position1> </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> </JumpHistory>
</ProjectOptions> </ProjectOptions>
<CompilerOptions> <CompilerOptions>

View File

@ -1,5 +1,5 @@
1 VERSIONINFO 1 VERSIONINFO
FILEVERSION 3,1,1,0 FILEVERSION 3,1,2,0
PRODUCTVERSION 3,1,1,0 PRODUCTVERSION 3,1,1,0
{ {
BLOCK "StringFileInfo" BLOCK "StringFileInfo"
@ -9,7 +9,7 @@ PRODUCTVERSION 3,1,1,0
VALUE "Comments", "\000" VALUE "Comments", "\000"
VALUE "CompanyName", "\000" VALUE "CompanyName", "\000"
VALUE "FileDescription", "Demo application from RXFPC library\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 "InternalName", "\000"
VALUE "LegalCopyright", "Lagunov Aleksey, GPL 2\000" VALUE "LegalCopyright", "Lagunov Aleksey, GPL 2\000"
VALUE "LegalTrademarks", "\000" VALUE "LegalTrademarks", "\000"

View File

@ -1,18 +1,18 @@
object RxDBGridMainForm: TRxDBGridMainForm object RxDBGridMainForm: TRxDBGridMainForm
Left = 263 Left = 263
Height = 582 Height = 609
Top = 219 Top = 219
Width = 969 Width = 969
ActiveControl = Panel1 ActiveControl = Panel1
Caption = 'RxDBGrid Demo (ver 3) ...' Caption = 'RxDBGrid Demo (ver 3) ...'
ClientHeight = 582 ClientHeight = 609
ClientWidth = 969 ClientWidth = 969
OnCreate = FormCreate OnCreate = FormCreate
LCLVersion = '0.9.27' LCLVersion = '0.9.27'
object RxDBGrid1: TRxDBGrid object RxDBGrid1: TRxDBGrid
Left = 0 Left = 0
Height = 533 Height = 542
Top = 49 Top = 67
Width = 969 Width = 969
TitleButtons = True TitleButtons = True
AutoSort = True AutoSort = True
@ -80,7 +80,7 @@ object RxDBGridMainForm: TRxDBGridMainForm
Filter.DropDownRows = 0 Filter.DropDownRows = 0
Filter.ItemIndex = -1 Filter.ItemIndex = -1
end> end>
OptionsRx = [rdgFooterRows] OptionsRx = [rdgAllowColumnsForm, rdgAllowDialogFind, rdgFooterRows, rdgAllowQuickSearch]
FooterColor = clYellow FooterColor = clYellow
FooterRowCount = 1 FooterRowCount = 1
OnFiltred = RxDBGrid1Filtred OnFiltred = RxDBGrid1Filtred
@ -97,14 +97,26 @@ object RxDBGridMainForm: TRxDBGridMainForm
end end
object Panel1: TPanel object Panel1: TPanel
Left = 0 Left = 0
Height = 49 Height = 67
Top = 0 Top = 0
Width = 969 Width = 969
Align = alTop Align = alTop
AutoSize = True AutoSize = True
ClientHeight = 49 ClientHeight = 67
ClientWidth = 969 ClientWidth = 969
TabOrder = 1 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 object Button1: TButton
AnchorSideLeft.Control = Panel1 AnchorSideLeft.Control = Panel1
AnchorSideTop.Control = Panel1 AnchorSideTop.Control = Panel1
@ -146,6 +158,26 @@ object RxDBGridMainForm: TRxDBGridMainForm
OnChange = CheckBox1Change OnChange = CheckBox1Change
TabOrder = 2 TabOrder = 2
end 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 end
object RxMemoryData1: TRxMemoryData object RxMemoryData1: TRxMemoryData
AutoCalcFields = False AutoCalcFields = False
@ -283,6 +315,17 @@ object RxDBGridMainForm: TRxDBGridMainForm
Action = actOptimizeColumnsWidthAll Action = actOptimizeColumnsWidthAll
OnClick = actOptimizeColumnsWidthAllExecute OnClick = actOptimizeColumnsWidthAllExecute
end end
object MenuItem5: TMenuItem
Caption = '-'
end
object MenuItem7: TMenuItem
Action = showColumnsDialog
OnClick = showColumnsDialogExecute
end
object MenuItem6: TMenuItem
Action = showFindDialog
OnClick = showFindDialogExecute
end
end end
object ActionList1: TActionList object ActionList1: TActionList
left = 206 left = 206
@ -299,6 +342,14 @@ object RxDBGridMainForm: TRxDBGridMainForm
Caption = 'Optimize width...' Caption = 'Optimize width...'
OnExecute = actOptimizeWidthCol1Execute OnExecute = actOptimizeWidthCol1Execute
end end
object showFindDialog: TAction
Caption = 'Show find dialog...'
OnExecute = showFindDialogExecute
end
object showColumnsDialog: TAction
Caption = 'Show columns dialog...'
OnExecute = showColumnsDialogExecute
end
end end
object Datasource2: TDatasource object Datasource2: TDatasource
DataSet = RxMemoryData2 DataSet = RxMemoryData2

View File

@ -1,11 +1,11 @@
{ ��� - ���� ��������, ������������� ��������� lazarus } { ��� - ���� ��������, ������������� ��������� lazarus }
LazarusResources.Add('TRxDBGridMainForm','FORMDATA',[ 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 +#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 +#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' +'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' +#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' +'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' +'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' +'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 +#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 +#19'rdgAllowColumnsForm'#18'rdgAllowDialogFind'#13'rdgFooterRows'#19'rdgAllo'
+'OnFiltred'#7#16'RxDBGrid1Filtred'#5'Align'#7#8'alClient'#10'FocusColor'#7#5 +'wQuickSearch'#0#11'FooterColor'#7#8'clYellow'#14'FooterRowCount'#2#1#9'OnFi'
+'clRed'#13'SelectedColor'#7#11'clHighlight'#13'GridLineStyle'#7#7'psSolid'#10 +'ltred'#7#16'RxDBGrid1Filtred'#5'Align'#7#8'alClient'#10'FocusColor'#7#5'clR'
+'DataSource'#7#11'Datasource1'#7'Options'#11#9'dgEditing'#8'dgTitles'#11'dgI' +'ed'#13'SelectedColor'#7#11'clHighlight'#13'GridLineStyle'#7#7'psSolid'#10'D'
+'ndicator'#14'dgColumnResize'#12'dgColumnMove'#10'dgColLines'#10'dgRowLines' +'ataSource'#7#11'Datasource1'#7'Options'#11#9'dgEditing'#8'dgTitles'#11'dgIn'
+#6'dgTabs'#21'dgAlwaysShowSelection'#15'dgConfirmDelete'#14'dgCancelOnExit' +'dicator'#14'dgColumnResize'#12'dgColumnMove'#10'dgColLines'#10'dgRowLines'#6
+#13'dgMultiselect'#18'dgHeaderPushedLook'#0#11'ParentColor'#8#9'PopupMenu'#7 +'dgTabs'#21'dgAlwaysShowSelection'#15'dgConfirmDelete'#14'dgCancelOnExit'#13
+#10'PopupMenu1'#8'TabOrder'#2#0#10'TitleStyle'#7#8'tsNative'#0#0#6'TPanel'#6 +'dgMultiselect'#18'dgHeaderPushedLook'#0#11'ParentColor'#8#9'PopupMenu'#7#10
+'Panel1'#4'Left'#2#0#6'Height'#2'1'#3'Top'#2#0#5'Width'#3#201#3#5'Align'#7#5 +'PopupMenu1'#8'TabOrder'#2#0#10'TitleStyle'#7#8'tsNative'#0#0#6'TPanel'#6'Pa'
+'alTop'#8'AutoSize'#9#12'ClientHeight'#2'1'#11'ClientWidth'#3#201#3#8'TabOrd' +'nel1'#4'Left'#2#0#6'Height'#2'C'#3'Top'#2#0#5'Width'#3#201#3#5'Align'#7#5'a'
+'er'#2#1#0#7'TButton'#7'Button1'#22'AnchorSideLeft.Control'#7#6'Panel1'#21'A' +'lTop'#8'AutoSize'#9#12'ClientHeight'#2'C'#11'ClientWidth'#3#201#3#8'TabOrde'
+'nchorSideTop.Control'#7#6'Panel1'#4'Left'#2#6#6'Height'#2'%'#3'Top'#2#6#5'W' +'r'#2#1#0#6'TLabel'#6'Label1'#22'AnchorSideLeft.Control'#7#9'CheckBox1'#19'A'
+'idth'#2'\'#6'Action'#7#12'actCalcTotal'#8'AutoSize'#9#20'BorderSpacing.Arou' +'nchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#6'Panel1'#4
+'nd'#2#6#25'BorderSpacing.InnerBorder'#2#4#8'TabOrder'#2#0#0#0#7'TButton'#7 +'Left'#3'i'#1#6'Height'#2#18#3'Top'#2#6#5'Width'#2'$'#20'BorderSpacing.Aroun'
+'Button2'#22'AnchorSideLeft.Control'#7#7'Button1'#19'AnchorSideLeft.Side'#7#9 +'d'#2#6#7'Caption'#6#4'Mode'#11'ParentColor'#8#0#0#7'TButton'#7'Button1'#22
+'asrBottom'#21'AnchorSideTop.Control'#7#6'Panel1'#4'Left'#2'h'#6'Height'#2'%' +'AnchorSideLeft.Control'#7#6'Panel1'#21'AnchorSideTop.Control'#7#6'Panel1'#4
+#3'Top'#2#6#5'Width'#3#165#0#6'Action'#7#26'actOptimizeColumnsWidthAll'#8'Au' +'Left'#2#6#6'Height'#2'%'#3'Top'#2#6#5'Width'#2'\'#6'Action'#7#12'actCalcTot'
+'toSize'#9#20'BorderSpacing.Around'#2#6#25'BorderSpacing.InnerBorder'#2#4#8 +'al'#8'AutoSize'#9#20'BorderSpacing.Around'#2#6#25'BorderSpacing.InnerBorder'
+'TabOrder'#2#1#0#0#9'TCheckBox'#9'CheckBox1'#22'AnchorSideLeft.Control'#7#7 +#2#4#8'TabOrder'#2#0#0#0#7'TButton'#7'Button2'#22'AnchorSideLeft.Control'#7#7
+'Button2'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7 +'Button1'#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 +#6'Panel1'#4'Left'#2'h'#6'Height'#2'%'#3'Top'#2#6#5'Width'#3#165#0#6'Action'
+#21#3'Top'#2#14#5'Width'#2'P'#18'BorderSpacing.Left'#2#6#7'Caption'#6#10'Use' +#7#26'actOptimizeColumnsWidthAll'#8'AutoSize'#9#20'BorderSpacing.Around'#2#6
+' filter'#8'OnChange'#7#15'CheckBox1Change'#8'TabOrder'#2#2#0#0#0#13'TRxMemo' +#25'BorderSpacing.InnerBorder'#2#4#8'TabOrder'#2#1#0#0#9'TCheckBox'#9'CheckB'
+'ryData'#13'RxMemoryData1'#14'AutoCalcFields'#8#9'FieldDefs'#14#1#4'Name'#6#2 +'ox1'#22'AnchorSideLeft.Control'#7#7'Button2'#19'AnchorSideLeft.Side'#7#9'as'
+'ID'#8'DataType'#7#9'ftInteger'#9'Precision'#2#255#4'Size'#2#7#0#1#4'Name'#6 +'rBottom'#21'AnchorSideTop.Control'#7#7'Button1'#18'AnchorSideTop.Side'#7#9
+#4'NAME'#8'DataType'#7#8'ftString'#9'Precision'#2#255#4'Size'#3#150#0#0#1#4 +'asrCenter'#4'Left'#3#19#1#6'Height'#2#21#3'Top'#2#14#5'Width'#2'P'#18'Borde'
+'Name'#6#5'PRICE'#8'DataType'#7#7'ftFloat'#9'Precision'#2#2#4'Size'#2#12#0#1 +'rSpacing.Left'#2#6#7'Caption'#6#10'Use filter'#8'OnChange'#7#15'CheckBox1Ch'
+#4'Name'#6#9'Developer'#8'DataType'#7#8'ftString'#9'Precision'#2#255#4'Size' +'ange'#8'TabOrder'#2#2#0#0#9'TComboBox'#9'ComboBox1'#22'AnchorSideLeft.Contr'
+#3#150#0#0#1#4'Name'#6#12'Date_Present'#8'DataType'#7#6'ftDate'#9'Precision' +'ol'#7#6'Label1'#21'AnchorSideTop.Control'#7#6'Label1'#18'AnchorSideTop.Side'
+#2#0#4'Size'#2#0#0#1#4'Name'#6#12'DEVELOPER_ID'#8'DataType'#7#9'ftInteger'#9 +#7#9'asrBottom'#4'Left'#3'o'#1#6'Height'#2#31#3'Top'#2#30#5'Width'#3#217#0#20
+'Precision'#2#0#4'Size'#2#0#0#0#16'OnFilterRecordEx'#7#27'RxMemoryData1Filte' +'BorderSpacing.Around'#2#6#10'ItemHeight'#2#0#9'ItemIndex'#2#0#13'Items.Stri'
+'rRecordEx'#4'left'#3#152#0#3'top'#3#8#1#0#13'TLongintField'#16'RxMemoryData' +'ngs'#1#6#9'Edit mode'#6#17'Quick search mode'#0#8'OnChange'#7#15'ComboBox1C'
+'1ID1'#12'DisplayWidth'#2#10#9'FieldKind'#7#6'fkData'#9'FieldName'#6#2'ID'#5 +'hange'#5'Style'#7#14'csDropDownList'#8'TabOrder'#2#3#4'Text'#6#9'Edit mode'
+'Index'#2#0#11'LookupCache'#8#13'ProviderFlags'#11#10'pfInUpdate'#9'pfInWher' +#0#0#0#13'TRxMemoryData'#13'RxMemoryData1'#14'AutoCalcFields'#8#9'FieldDefs'
+'e'#0#8'ReadOnly'#8#8'Required'#8#0#0#12'TStringField'#18'RxMemoryData1NAME1' +#14#1#4'Name'#6#2'ID'#8'DataType'#7#9'ftInteger'#9'Precision'#2#255#4'Size'#2
+#12'DisplayWidth'#3#150#0#9'FieldKind'#7#6'fkData'#9'FieldName'#6#4'NAME'#5 +#7#0#1#4'Name'#6#4'NAME'#8'DataType'#7#8'ftString'#9'Precision'#2#255#4'Size'
+'Index'#2#1#11'LookupCache'#8#13'ProviderFlags'#11#10'pfInUpdate'#9'pfInWher' +#3#150#0#0#1#4'Name'#6#5'PRICE'#8'DataType'#7#7'ftFloat'#9'Precision'#2#2#4
,'e'#0#8'ReadOnly'#8#8'Required'#8#4'Size'#3#150#0#0#0#11'TFloatField'#19'RxM' ,'Size'#2#12#0#1#4'Name'#6#9'Developer'#8'DataType'#7#8'ftString'#9'Precision'
+'emoryData1PRICE1'#12'DisplayWidth'#2#10#9'FieldKind'#7#6'fkData'#9'FieldNam' +#2#255#4'Size'#3#150#0#0#1#4'Name'#6#12'Date_Present'#8'DataType'#7#6'ftDate'
+'e'#6#5'PRICE'#5'Index'#2#2#11'LookupCache'#8#13'ProviderFlags'#11#10'pfInUp' +#9'Precision'#2#0#4'Size'#2#0#0#1#4'Name'#6#12'DEVELOPER_ID'#8'DataType'#7#9
+'date'#9'pfInWhere'#0#8'ReadOnly'#8#8'Required'#8#13'DisplayFormat'#6#8'#,##' +'ftInteger'#9'Precision'#2#0#4'Size'#2#0#0#0#16'OnFilterRecordEx'#7#27'RxMem'
+'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 +'oryData1FilterRecordEx'#4'left'#3#152#0#3'top'#3#8#1#0#13'TLongintField'#16
+'Precision'#2#2#0#0#12'TStringField'#23'RxMemoryData1Developer1'#12'DisplayW' +'RxMemoryData1ID1'#12'DisplayWidth'#2#10#9'FieldKind'#7#6'fkData'#9'FieldNam'
+'idth'#3#150#0#9'FieldKind'#7#6'fkData'#9'FieldName'#6#9'Developer'#5'Index' +'e'#6#2'ID'#5'Index'#2#0#11'LookupCache'#8#13'ProviderFlags'#11#10'pfInUpdat'
+#2#3#11'LookupCache'#8#13'ProviderFlags'#11#10'pfInUpdate'#9'pfInWhere'#0#8 +'e'#9'pfInWhere'#0#8'ReadOnly'#8#8'Required'#8#0#0#12'TStringField'#18'RxMem'
+'ReadOnly'#8#8'Required'#8#4'Size'#3#150#0#0#0#10'TDateField'#26'RxMemoryDat' +'oryData1NAME1'#12'DisplayWidth'#3#150#0#9'FieldKind'#7#6'fkData'#9'FieldNam'
+'a1Date_Present1'#12'DisplayWidth'#2#10#9'FieldKind'#7#6'fkData'#9'FieldName' +'e'#6#4'NAME'#5'Index'#2#1#11'LookupCache'#8#13'ProviderFlags'#11#10'pfInUpd'
+#6#12'Date_Present'#5'Index'#2#4#11'LookupCache'#8#13'ProviderFlags'#11#10'p' +'ate'#9'pfInWhere'#0#8'ReadOnly'#8#8'Required'#8#4'Size'#3#150#0#0#0#11'TFlo'
+'fInUpdate'#9'pfInWhere'#0#8'ReadOnly'#8#8'Required'#8#0#0#13'TLongintField' +'atField'#19'RxMemoryData1PRICE1'#12'DisplayWidth'#2#10#9'FieldKind'#7#6'fkD'
+#26'RxMemoryData1DEVELOPER_ID1'#12'DisplayWidth'#2#10#9'FieldKind'#7#6'fkDat' +'ata'#9'FieldName'#6#5'PRICE'#5'Index'#2#2#11'LookupCache'#8#13'ProviderFlag'
+'a'#9'FieldName'#6#12'DEVELOPER_ID'#5'Index'#2#5#9'KeyFields'#6#12'DEVELOPER' +'s'#11#10'pfInUpdate'#9'pfInWhere'#0#8'ReadOnly'#8#8'Required'#8#13'DisplayF'
+'_ID'#11'LookupCache'#8#13'LookupDataSet'#7#13'RxMemoryData2'#15'LookupKeyFi' +'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
+'elds'#6#12'DEVELOPER_ID'#17'LookupResultField'#6#14'DEVELOPER_NAME'#13'Prov' +#0#0#0#0#0#0#9'Precision'#2#2#0#0#12'TStringField'#23'RxMemoryData1Developer'
+'iderFlags'#11#10'pfInUpdate'#9'pfInWhere'#0#8'ReadOnly'#8#8'Required'#8#0#0 +'1'#12'DisplayWidth'#3#150#0#9'FieldKind'#7#6'fkData'#9'FieldName'#6#9'Devel'
+#0#11'TDatasource'#11'Datasource1'#7'DataSet'#7#13'RxMemoryData1'#4'left'#2 +'oper'#5'Index'#2#3#11'LookupCache'#8#13'ProviderFlags'#11#10'pfInUpdate'#9
+'x'#3'top'#3#8#1#0#0#10'TPopupMenu'#10'PopupMenu1'#4'left'#3#152#0#3'top'#3 +'pfInWhere'#0#8'ReadOnly'#8#8'Required'#8#4'Size'#3#150#0#0#0#10'TDateField'
+#197#0#0#9'TMenuItem'#9'MenuItem1'#6'Action'#7#20'actOptimizeWidthCol1'#7'On' +#26'RxMemoryData1Date_Present1'#12'DisplayWidth'#2#10#9'FieldKind'#7#6'fkDat'
+'Click'#7#27'actOptimizeWidthCol1Execute'#0#0#9'TMenuItem'#9'MenuItem2'#7'Ca' +'a'#9'FieldName'#6#12'Date_Present'#5'Index'#2#4#11'LookupCache'#8#13'Provid'
+'ption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem4'#6'Action'#7#12'actCalcTotal'#7 +'erFlags'#11#10'pfInUpdate'#9'pfInWhere'#0#8'ReadOnly'#8#8'Required'#8#0#0#13
+'OnClick'#7#19'actCalcTotalExecute'#0#0#9'TMenuItem'#9'MenuItem3'#6'Action'#7 +'TLongintField'#26'RxMemoryData1DEVELOPER_ID1'#12'DisplayWidth'#2#10#9'Field'
+#26'actOptimizeColumnsWidthAll'#7'OnClick'#7'!actOptimizeColumnsWidthAllExec' +'Kind'#7#6'fkData'#9'FieldName'#6#12'DEVELOPER_ID'#5'Index'#2#5#9'KeyFields'
+'ute'#0#0#0#11'TActionList'#11'ActionList1'#4'left'#3#206#0#3'top'#3#197#0#0 +#6#12'DEVELOPER_ID'#11'LookupCache'#8#13'LookupDataSet'#7#13'RxMemoryData2'
+#7'TAction'#12'actCalcTotal'#7'Caption'#6#13'Calc total...'#9'OnExecute'#7#19 +#15'LookupKeyFields'#6#12'DEVELOPER_ID'#17'LookupResultField'#6#14'DEVELOPER'
+'actCalcTotalExecute'#0#0#7'TAction'#26'actOptimizeColumnsWidthAll'#7'Captio' +'_NAME'#13'ProviderFlags'#11#10'pfInUpdate'#9'pfInWhere'#0#8'ReadOnly'#8#8'R'
+'n'#6#25'Optimize width for all...'#9'OnExecute'#7'!actOptimizeColumnsWidthA' +'equired'#8#0#0#0#11'TDatasource'#11'Datasource1'#7'DataSet'#7#13'RxMemoryDa'
+'llExecute'#0#0#7'TAction'#20'actOptimizeWidthCol1'#7'Caption'#6#17'Optimize' +'ta1'#4'left'#2'x'#3'top'#3#8#1#0#0#10'TPopupMenu'#10'PopupMenu1'#4'left'#3
+' width...'#9'OnExecute'#7#27'actOptimizeWidthCol1Execute'#0#0#0#11'TDatasou' +#152#0#3'top'#3#197#0#0#9'TMenuItem'#9'MenuItem1'#6'Action'#7#20'actOptimize'
+'rce'#11'Datasource2'#7'DataSet'#7#13'RxMemoryData2'#4'left'#3#207#0#3'top'#3 +'WidthCol1'#7'OnClick'#7#27'actOptimizeWidthCol1Execute'#0#0#9'TMenuItem'#9
+#8#1#0#0#13'TRxMemoryData'#13'RxMemoryData2'#14'AutoCalcFields'#8#9'FieldDef' +'MenuItem2'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#9'MenuItem4'#6'Action'#7#12'a'
+'s'#14#1#4'Name'#6#12'DEVELOPER_ID'#8'DataType'#7#9'ftInteger'#9'Precision'#2 +'ctCalcTotal'#7'OnClick'#7#19'actCalcTotalExecute'#0#0#9'TMenuItem'#9'MenuIt'
+#0#4'Size'#2#0#0#1#4'Name'#6#14'DEVELOPER_NAME'#8'DataType'#7#8'ftString'#9 +'em3'#6'Action'#7#26'actOptimizeColumnsWidthAll'#7'OnClick'#7'!actOptimizeCo'
+'Precision'#2#0#4'Size'#3#130#0#0#0#4'left'#3#240#0#3'top'#3#8#1#0#13'TLongi' +'lumnsWidthAllExecute'#0#0#9'TMenuItem'#9'MenuItem5'#7'Caption'#6#1'-'#0#0#9
+'ntField'#26'RxMemoryData2DEVELOPER_ID1'#12'DisplayWidth'#2#10#9'FieldKind'#7 +'TMenuItem'#9'MenuItem7'#6'Action'#7#17'showColumnsDialog'#7'OnClick'#7#24's'
+#6'fkData'#9'FieldName'#6#12'DEVELOPER_ID'#5'Index'#2#0#11'LookupCache'#8#13 +'howColumnsDialogExecute'#0#0#9'TMenuItem'#9'MenuItem6'#6'Action'#7#14'showF'
+'ProviderFlags'#11#10'pfInUpdate'#9'pfInWhere'#0#8'ReadOnly'#8#8'Required'#8 +'indDialog'#7'OnClick'#7#21'showFindDialogExecute'#0#0#0#11'TActionList'#11
+#0#0#12'TStringField'#28'RxMemoryData2DEVELOPER_NAME1'#12'DisplayWidth'#3#130 +'ActionList1'#4'left'#3#206#0#3'top'#3#197#0#0#7'TAction'#12'actCalcTotal'#7
+#0#9'FieldKind'#7#6'fkData'#9'FieldName'#6#14'DEVELOPER_NAME'#5'Index'#2#1#11 +'Caption'#6#13'Calc total...'#9'OnExecute'#7#19'actCalcTotalExecute'#0#0#7'T'
+'LookupCache'#8#13'ProviderFlags'#11#10'pfInUpdate'#9'pfInWhere'#0#8'ReadOnl' +'Action'#26'actOptimizeColumnsWidthAll'#7'Caption'#6#25'Optimize width for a'
+'y'#8#8'Required'#8#4'Size'#3#130#0#0#0#0#0 +'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
]); ]);

View File

@ -14,14 +14,21 @@ type
TRxDBGridMainForm = class(TForm) TRxDBGridMainForm = class(TForm)
actCalcTotal: TAction; actCalcTotal: TAction;
MenuItem5: TMenuItem;
MenuItem6: TMenuItem;
MenuItem7: TMenuItem;
showColumnsDialog: TAction;
showFindDialog: TAction;
actOptimizeWidthCol1: TAction; actOptimizeWidthCol1: TAction;
actOptimizeColumnsWidthAll: TAction; actOptimizeColumnsWidthAll: TAction;
ActionList1: TActionList; ActionList1: TActionList;
Button1: TButton; Button1: TButton;
Button2: TButton; Button2: TButton;
CheckBox1: TCheckBox; CheckBox1: TCheckBox;
ComboBox1: TComboBox;
Datasource1: TDatasource; Datasource1: TDatasource;
Datasource2: TDatasource; Datasource2: TDatasource;
Label1: TLabel;
MenuItem1: TMenuItem; MenuItem1: TMenuItem;
MenuItem2: TMenuItem; MenuItem2: TMenuItem;
MenuItem3: TMenuItem; MenuItem3: TMenuItem;
@ -43,10 +50,13 @@ type
procedure actOptimizeColumnsWidthAllExecute(Sender: TObject); procedure actOptimizeColumnsWidthAllExecute(Sender: TObject);
procedure actOptimizeWidthCol1Execute(Sender: TObject); procedure actOptimizeWidthCol1Execute(Sender: TObject);
procedure CheckBox1Change(Sender: TObject); procedure CheckBox1Change(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure RxDBGrid1Filtred(Sender: TObject); procedure RxDBGrid1Filtred(Sender: TObject);
procedure RxMemoryData1FilterRecordEx(DataSet: TDataSet; var Accept: Boolean procedure RxMemoryData1FilterRecordEx(DataSet: TDataSet; var Accept: Boolean
); );
procedure showColumnsDialogExecute(Sender: TObject);
procedure showFindDialogExecute(Sender: TObject);
private private
procedure DoFillFilters; procedure DoFillFilters;
public public
@ -107,6 +117,16 @@ begin
end; end;
end; end;
procedure TRxDBGridMainForm.showColumnsDialogExecute(Sender: TObject);
begin
RxDBGrid1.ShowColumnsDialog;
end;
procedure TRxDBGridMainForm.showFindDialogExecute(Sender: TObject);
begin
RxDBGrid1.ShowFindDialog;
end;
procedure TRxDBGridMainForm.DoFillFilters; procedure TRxDBGridMainForm.DoFillFilters;
var var
C:TRxColumn; C:TRxColumn;
@ -156,6 +176,11 @@ begin
RxMemoryData1.Filtered:=CheckBox1.Checked; RxMemoryData1.Filtered:=CheckBox1.Checked;
end; end;
procedure TRxDBGridMainForm.ComboBox1Change(Sender: TObject);
begin
RxDBGrid1.ReadOnly:=ComboBox1.ItemIndex <> 0;
end;
initialization initialization
{$I rxdbgridmainunit.lrs} {$I rxdbgridmainunit.lrs}

View File

@ -19,6 +19,8 @@
- fix sort order in TRxMemDataSet - fix sort order in TRxMemDataSet
- fix draw buttons in ToolPanel with use system themes - fix draw buttons in ToolPanel with use system themes
- fix error in TRxDBComboBox - 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) 22.05.2008 - version 2.0.0.136 (svn revision 100)
+ In TRxCustomDBLookupCombo add check for CircularDataLink + In TRxCustomDBLookupCombo add check for CircularDataLink
+ in TRxCustomDBLookupCombo accelerated drawing data + in TRxCustomDBLookupCombo accelerated drawing data

View File

@ -23,6 +23,8 @@
+ Реализована возможность объединения ячеек в заголовке таблицы + Реализована возможность объединения ячеек в заголовке таблицы
(смотрите в демке на RxDBGrid) (смотрите в демке на RxDBGrid)
- Исправлена ошибка установки значения для TRxDBComboBox - Исправлена ошибка установки значения для TRxDBComboBox
+ Реализовн режим быстрого поиска (код от Алексея Козлова с небольшими доработками) - подробнее смотри пункт 6 в файле readmy.txt
22.05.2008 - версия 2.0.0.136 (svn revision 100) 22.05.2008 - версия 2.0.0.136 (svn revision 100)
+ У объекта TRxCustomDBLookupCombo введён контроль на CircularDataLink + У объекта TRxCustomDBLookupCombo введён контроль на CircularDataLink
+ У объекта TRxCustomDBLookupCombo ускорена отрисовка данных + У объекта TRxCustomDBLookupCombo ускорена отрисовка данных

View File

@ -3,4 +3,8 @@
HOME и END не позиционируют в начало/конец списка HOME и END не позиционируют в начало/конец списка
A. Для отображения списка используется объект TRxDBGrid A. Для отображения списка используется объект TRxDBGrid
(прямой наследник TDBGrid) - в нём для позиционирования в (прямой наследник TDBGrid) - в нём для позиционирования в
начало/конец списка клавиши Ctrl+Home/Ctrl+End начало/конец списка клавиши Ctrl+Home/Ctrl+End
2. В RxDBGrid режим быстрого поиска работает при RxDBGrid.ReadOnly = true
подробнее смотри пункт 6 в файле readmy.txt

View File

@ -48,4 +48,18 @@
объяснение заключается в том что при потере фокуса TDbGrid и его наследниеи вызывают объяснение заключается в том что при потере фокуса TDbGrid и его наследниеи вызывают
метод Cancel метод Cancel
6. Вопросы задавать мылом или на форуме FreePascal.ru (предпочтительней) 6.
Новшество: Добавлен в RxDBGrid UTF8-быстрый поиск.
Включается опцией rdgAllowQuickUTF8Search (добавил её в rxoptions, это нормально? или было
лучше включить в состав других опций?)
Управляется свойством QuickUTF8Search
Не реагирует на список "управляющих" клавиш однобайтовых: CBadQuickUTF8SearchSymbols
По управляющим однобайтовым клавишам сбрасывает подстроку поиска: CCancelQuickUTF8SearchKeys
Для обработки событий поиска добавлен тип TRxQuickUTF8SearchNotifyEvent
Перед началом попытки поиска вызывает событие BeforeQuickUTF8Search, в качестве AValue
передаётся подстрока-кандидат на поиск, если её сбросить в текущее значение QuickUTF8Search
поиск производится не будет
После успешного завершения поиска вызывается событие AfterQuickUTF8Search, куда передаётся в
качестве AValue предыдущая подстрока поиска. Последнее событие удобно использовать для
отображения где ни будь на общей форме текущий подстроки поиска.
7. Вопросы задавать мылом или на форуме FreePascal.ru (предпочтительней)

View File

@ -2,11 +2,4 @@
в TPageManager необходимо обработать ситуация прямого изменения в TPageManager необходимо обработать ситуация прямого изменения
закладки в PageControl-е закладки в PageControl-е
2. В RxDBGrid
- планирую сделать объеденение заголовков в один групирующий:
|-----------------|
| |
|-----------------|
| | |
|-----------------|

View File

@ -6,10 +6,16 @@ interface
uses uses
Classes, SysUtils, LResources, LCLType, LCLIntf, Forms, Controls, Classes, SysUtils, LResources, LCLType, LCLIntf, Forms, Controls,
Graphics, Dialogs, Grids, DBGrids, DB, PropertyStorage, vclutils, LMessages, Graphics, Dialogs, Grids, dbutils, DBGrids, DB, PropertyStorage, vclutils,
types, StdCtrls; 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 type
TRxQuickSearchNotifyEvent = procedure(Sender: TObject; Field : TField; var AValue : string) of object;
TSortMarker = (smNone, smDown, smUp); TSortMarker = (smNone, smDown, smUp);
TGetBtnParamsEvent = procedure (Sender: TObject; Field: TField; TGetBtnParamsEvent = procedure (Sender: TObject; Field: TField;
@ -34,7 +40,8 @@ type
rdgXORColSizing, rdgXORColSizing,
rdgFilter, rdgFilter,
rdgMultiTitleLines, rdgMultiTitleLines,
rdgMrOkOnDblClik rdgMrOkOnDblClik,
rdgAllowQuickSearch
); );
TOptionsRx = set of TOptionRx; TOptionsRx = set of TOptionRx;
@ -241,6 +248,10 @@ type
FRxDbGridLookupComboEditor:TCustomControl; FRxDbGridLookupComboEditor:TCustomControl;
FRxDbGridDateEditor:TWinControl; FRxDbGridDateEditor:TWinControl;
FAfterQuickSearch : TRxQuickSearchNotifyEvent;
FBeforeQuickSearch : TRxQuickSearchNotifyEvent;
FQuickUTF8Search : String;
function GetColumns: TRxDbGridColumns; function GetColumns: TRxDbGridColumns;
function GetPropertyStorage: TCustomPropertyStorage; function GetPropertyStorage: TCustomPropertyStorage;
function GetTitleButtons: boolean; function GetTitleButtons: boolean;
@ -282,6 +293,7 @@ type
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override; X, Y: Integer); override;
procedure KeyDown(var Key : Word; Shift : TShiftState); override; procedure KeyDown(var Key : Word; Shift : TShiftState); override;
procedure UTF8KeyPress(var UTF8Key: TUTF8Char); override;
function CreateColumns: TGridColumns; override; function CreateColumns: TGridColumns; override;
procedure DrawCellBitmap(RxColumn:TRxColumn; aRect: TRect; aState: TGridDrawState; AImageIndex:integer); virtual; procedure DrawCellBitmap(RxColumn:TRxColumn; aRect: TRect; aState: TGridDrawState; AImageIndex:integer); virtual;
procedure SetEditText(ACol, ARow: Longint; const Value: string); override; procedure SetEditText(ACol, ARow: Longint; const Value: string); override;
@ -297,6 +309,7 @@ type
procedure InternalOptimizeColumnsWidth(AColList:TList); procedure InternalOptimizeColumnsWidth(AColList:TList);
function IsDefaultRowHeightStored:boolean; function IsDefaultRowHeightStored:boolean;
procedure VisualChange; override; procedure VisualChange; override;
procedure SetQuickUTF8Search(AValue : String);
public public
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
@ -317,7 +330,10 @@ type
procedure OptimizeColumnsWidth(AColList:String); procedure OptimizeColumnsWidth(AColList:String);
procedure OptimizeColumnsWidthAll; procedure OptimizeColumnsWidthAll;
procedure UpdateTitleHight; procedure UpdateTitleHight;
property QuickUTF8Search:String read FQuickUTF8Search write SetQuickUTF8Search;
published published
property AfterQuickSearch: TRxQuickSearchNotifyEvent read FAfterQuickSearch write FAfterQuickSearch;
property BeforeQuickSearch: TRxQuickSearchNotifyEvent read FBeforeQuickSearch write FBeforeQuickSearch;
property OnGetBtnParams: TGetBtnParamsEvent read FOnGetBtnParams write FOnGetBtnParams; property OnGetBtnParams: TGetBtnParamsEvent read FOnGetBtnParams write FOnGetBtnParams;
property TitleButtons: boolean read GetTitleButtons write SetTitleButtons; property TitleButtons: boolean read GetTitleButtons write SetTitleButtons;
property AutoSort:boolean read FAutoSort write SetAutoSort; property AutoSort:boolean read FAutoSort write SetAutoSort;
@ -1698,14 +1714,73 @@ begin
inherited MouseUp(Button, Shift, X, Y); inherited MouseUp(Button, Shift, X, Y);
end; 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); procedure TRxDBGrid.KeyDown(var Key: Word; Shift: TShiftState);
var var
FTmpReadOnly:boolean; FTmpReadOnly:boolean;
begin begin
//DebugLn('RxDBGrid.KeyDown ',Name,' INIT Key= ',IntToStr(Key));
if (Key in CCancelQuickSearchKeys) then
if Length(QuickUTF8Search) > 0 then QuickUTF8Search := '';
case Key of case Key of
ord('F'):begin ord('F'):begin
if (ssCtrl in Shift) and (rdgAllowDialogFind in OptionsRx) then if (ssCtrl in Shift) and (rdgAllowDialogFind in OptionsRx) then
begin begin
if Length(QuickUTF8Search) > 0 then QuickUTF8Search := '';
ShowFindDialog; ShowFindDialog;
exit; exit;
end; end;
@ -1713,6 +1788,7 @@ begin
ord('W'):begin ord('W'):begin
if (ssCtrl in Shift) and (rdgAllowColumnsForm in OptionsRx) then if (ssCtrl in Shift) and (rdgAllowColumnsForm in OptionsRx) then
begin begin
if Length(QuickUTF8Search) > 0 then QuickUTF8Search := '';
ShowColumnsDialog; ShowColumnsDialog;
exit; exit;
end; end;