• R/O
  • SSH
  • HTTPS

akdf: Commit


Commit MetaInfo

Revision566 (tree)
Time2022-01-13 23:38:51
Authorderekwildstar

Log Message

Criação dos eventos TKRKDBGrid.OnXXXClearSelection que são disparados quando a lista de itens selecionados no grid é limpa. Isso só acontece quando se está usando o teclado para parar de selecionar registros, o que limpa a seleção. Esses eventos foram criados para que, caso a lista de selecionados seja limpa, haja uma forma de, por exemplo, recalcular algo que era baseado nos itens selecionados, porque os eventos OnXXXMultiSelect só são disparados quando se adiciona ou se remove um único registro da lista de seleção.

Change Summary

Incremental Difference

--- trunk/dtp/DataControls/prj/Delphi 10 (Delphi 2006)/KRKDataControlsD.bdsproj (revision 565)
+++ trunk/dtp/DataControls/prj/Delphi 10 (Delphi 2006)/KRKDataControlsD.bdsproj (revision 566)
@@ -13,104 +13,106 @@
1313 <Compiler>
1414 <Compiler Name="UnitAliases"></Compiler>
1515 <Compiler Name="NamespacePrefix"></Compiler>
16- <Compiler Name="DefaultNamespace"></Compiler> <Compiler Name="A">8</Compiler>
17- <Compiler Name="B">0</Compiler>
18- <Compiler Name="C">1</Compiler>
19- <Compiler Name="D">1</Compiler>
20- <Compiler Name="E">0</Compiler>
21- <Compiler Name="F">0</Compiler>
22- <Compiler Name="G">1</Compiler>
23- <Compiler Name="H">1</Compiler>
24- <Compiler Name="I">1</Compiler>
25- <Compiler Name="J">0</Compiler>
26- <Compiler Name="K">0</Compiler>
27- <Compiler Name="L">1</Compiler>
28- <Compiler Name="M">0</Compiler>
29- <Compiler Name="N">1</Compiler>
30- <Compiler Name="O">1</Compiler>
31- <Compiler Name="P">1</Compiler>
32- <Compiler Name="Q">0</Compiler>
33- <Compiler Name="R">0</Compiler>
34- <Compiler Name="S">0</Compiler>
35- <Compiler Name="T">0</Compiler>
36- <Compiler Name="U">0</Compiler>
37- <Compiler Name="V">1</Compiler>
38- <Compiler Name="W">0</Compiler>
39- <Compiler Name="X">1</Compiler>
40- <Compiler Name="Y">1</Compiler>
41- <Compiler Name="Z">1</Compiler>
42- <Compiler Name="ShowHints">True</Compiler>
43- <Compiler Name="ShowWarnings">True</Compiler>
44- <Compiler Name="GenerateDocumentation">False</Compiler>
45- <Compiler Name="SymbolDeprecated">True</Compiler>
46- <Compiler Name="SymbolLibrary">True</Compiler>
47- <Compiler Name="SymbolPlatform">True</Compiler>
48- <Compiler Name="SymbolExperimental">True</Compiler>
49- <Compiler Name="UnitLibrary">True</Compiler>
50- <Compiler Name="UnitPlatform">True</Compiler>
51- <Compiler Name="UnitDeprecated">True</Compiler>
52- <Compiler Name="UnitExperimental">True</Compiler>
53- <Compiler Name="HResultCompat">True</Compiler>
54- <Compiler Name="HidingMember">True</Compiler>
55- <Compiler Name="HiddenVirtual">True</Compiler>
56- <Compiler Name="Garbage">True</Compiler>
57- <Compiler Name="BoundsError">True</Compiler>
58- <Compiler Name="ZeroNilCompat">True</Compiler>
59- <Compiler Name="StringConstTruncated">True</Compiler>
60- <Compiler Name="ForLoopVarVarPar">True</Compiler>
61- <Compiler Name="TypedConstVarPar">True</Compiler>
62- <Compiler Name="AsgToTypedConst">True</Compiler>
63- <Compiler Name="CaseLabelRange">True</Compiler>
64- <Compiler Name="ForVariable">True</Compiler>
65- <Compiler Name="ConstructingAbstract">True</Compiler>
66- <Compiler Name="ComparisonFalse">True</Compiler>
67- <Compiler Name="ComparisonTrue">True</Compiler>
68- <Compiler Name="ComparingSignedUnsigned">True</Compiler>
69- <Compiler Name="CombiningSignedUnsigned">True</Compiler>
70- <Compiler Name="UnsupportedConstruct">True</Compiler>
71- <Compiler Name="FileOpen">True</Compiler>
72- <Compiler Name="FileOpenUnitSrc">True</Compiler>
73- <Compiler Name="BadGlobalSymbol">True</Compiler>
74- <Compiler Name="DuplicateConstructorDestructor">True</Compiler>
75- <Compiler Name="InvalidDirective">True</Compiler>
76- <Compiler Name="PackageNoLink">True</Compiler>
77- <Compiler Name="PackageThreadVar">True</Compiler>
78- <Compiler Name="ImplicitImport">True</Compiler>
79- <Compiler Name="HPPEMITIgnored">True</Compiler>
80- <Compiler Name="NoRetVal">True</Compiler>
81- <Compiler Name="UseBeforeDef">True</Compiler>
82- <Compiler Name="ForLoopVarUndef">True</Compiler>
83- <Compiler Name="UnitNameMismatch">True</Compiler>
84- <Compiler Name="NoCFGFileFound">True</Compiler>
85- <Compiler Name="ImplicitVariants">True</Compiler>
86- <Compiler Name="UnicodeToLocale">True</Compiler>
87- <Compiler Name="LocaleToUnicode">True</Compiler>
88- <Compiler Name="ImagebaseMultiple">True</Compiler>
89- <Compiler Name="SuspiciousTypecast">True</Compiler>
90- <Compiler Name="PrivatePropAccessor">True</Compiler>
91- <Compiler Name="UnsafeType">False</Compiler>
92- <Compiler Name="UnsafeCode">False</Compiler>
93- <Compiler Name="UnsafeCast">False</Compiler>
94- <Compiler Name="OptionTruncated">True</Compiler>
95- <Compiler Name="WideCharReduced">True</Compiler>
96- <Compiler Name="DuplicatesIgnored">True</Compiler>
97- <Compiler Name="UnitInitSeq">True</Compiler>
98- <Compiler Name="LocalPInvoke">True</Compiler>
99- <Compiler Name="MessageDirective">True</Compiler>
100- <Compiler Name="CodePage"></Compiler>
101- </Compiler>
16+ <Compiler Name="DefaultNamespace"></Compiler>
17+ <Compiler Name="A">8</Compiler>
18+ <Compiler Name="B">0</Compiler>
19+ <Compiler Name="C">1</Compiler>
20+ <Compiler Name="D">1</Compiler>
21+ <Compiler Name="E">0</Compiler>
22+ <Compiler Name="F">0</Compiler>
23+ <Compiler Name="G">1</Compiler>
24+ <Compiler Name="H">1</Compiler>
25+ <Compiler Name="I">1</Compiler>
26+ <Compiler Name="J">0</Compiler>
27+ <Compiler Name="K">0</Compiler>
28+ <Compiler Name="L">1</Compiler>
29+ <Compiler Name="M">0</Compiler>
30+ <Compiler Name="N">1</Compiler>
31+ <Compiler Name="O">1</Compiler>
32+ <Compiler Name="P">1</Compiler>
33+ <Compiler Name="Q">0</Compiler>
34+ <Compiler Name="R">0</Compiler>
35+ <Compiler Name="S">0</Compiler>
36+ <Compiler Name="T">0</Compiler>
37+ <Compiler Name="U">0</Compiler>
38+ <Compiler Name="V">1</Compiler>
39+ <Compiler Name="W">0</Compiler>
40+ <Compiler Name="X">1</Compiler>
41+ <Compiler Name="Y">1</Compiler>
42+ <Compiler Name="Z">1</Compiler>
43+ <Compiler Name="ShowHints">True</Compiler>
44+ <Compiler Name="ShowWarnings">True</Compiler>
45+ <Compiler Name="GenerateDocumentation">False</Compiler>
46+ <Compiler Name="SymbolDeprecated">True</Compiler>
47+ <Compiler Name="SymbolLibrary">True</Compiler>
48+ <Compiler Name="SymbolPlatform">True</Compiler>
49+ <Compiler Name="SymbolExperimental">True</Compiler>
50+ <Compiler Name="UnitLibrary">True</Compiler>
51+ <Compiler Name="UnitPlatform">True</Compiler>
52+ <Compiler Name="UnitDeprecated">True</Compiler>
53+ <Compiler Name="UnitExperimental">True</Compiler>
54+ <Compiler Name="HResultCompat">True</Compiler>
55+ <Compiler Name="HidingMember">True</Compiler>
56+ <Compiler Name="HiddenVirtual">True</Compiler>
57+ <Compiler Name="Garbage">True</Compiler>
58+ <Compiler Name="BoundsError">True</Compiler>
59+ <Compiler Name="ZeroNilCompat">True</Compiler>
60+ <Compiler Name="StringConstTruncated">True</Compiler>
61+ <Compiler Name="ForLoopVarVarPar">True</Compiler>
62+ <Compiler Name="TypedConstVarPar">True</Compiler>
63+ <Compiler Name="AsgToTypedConst">True</Compiler>
64+ <Compiler Name="CaseLabelRange">True</Compiler>
65+ <Compiler Name="ForVariable">True</Compiler>
66+ <Compiler Name="ConstructingAbstract">True</Compiler>
67+ <Compiler Name="ComparisonFalse">True</Compiler>
68+ <Compiler Name="ComparisonTrue">True</Compiler>
69+ <Compiler Name="ComparingSignedUnsigned">True</Compiler>
70+ <Compiler Name="CombiningSignedUnsigned">True</Compiler>
71+ <Compiler Name="UnsupportedConstruct">True</Compiler>
72+ <Compiler Name="FileOpen">True</Compiler>
73+ <Compiler Name="FileOpenUnitSrc">True</Compiler>
74+ <Compiler Name="BadGlobalSymbol">True</Compiler>
75+ <Compiler Name="DuplicateConstructorDestructor">True</Compiler>
76+ <Compiler Name="InvalidDirective">True</Compiler>
77+ <Compiler Name="PackageNoLink">True</Compiler>
78+ <Compiler Name="PackageThreadVar">True</Compiler>
79+ <Compiler Name="ImplicitImport">True</Compiler>
80+ <Compiler Name="HPPEMITIgnored">True</Compiler>
81+ <Compiler Name="NoRetVal">True</Compiler>
82+ <Compiler Name="UseBeforeDef">True</Compiler>
83+ <Compiler Name="ForLoopVarUndef">True</Compiler>
84+ <Compiler Name="UnitNameMismatch">True</Compiler>
85+ <Compiler Name="NoCFGFileFound">True</Compiler>
86+ <Compiler Name="ImplicitVariants">True</Compiler>
87+ <Compiler Name="UnicodeToLocale">True</Compiler>
88+ <Compiler Name="LocaleToUnicode">True</Compiler>
89+ <Compiler Name="ImagebaseMultiple">True</Compiler>
90+ <Compiler Name="SuspiciousTypecast">True</Compiler>
91+ <Compiler Name="PrivatePropAccessor">True</Compiler>
92+ <Compiler Name="UnsafeType">False</Compiler>
93+ <Compiler Name="UnsafeCode">False</Compiler>
94+ <Compiler Name="UnsafeCast">False</Compiler>
95+ <Compiler Name="OptionTruncated">True</Compiler>
96+ <Compiler Name="WideCharReduced">True</Compiler>
97+ <Compiler Name="DuplicatesIgnored">True</Compiler>
98+ <Compiler Name="UnitInitSeq">True</Compiler>
99+ <Compiler Name="LocalPInvoke">True</Compiler>
100+ <Compiler Name="MessageDirective">True</Compiler>
101+ <Compiler Name="CodePage"></Compiler>
102+ </Compiler>
102103 <Linker>
103- <Linker Name="ExeDescription">Anak Krakatoa Data Controls</Linker> <Linker Name="MapFile">0</Linker>
104- <Linker Name="OutputObjs">0</Linker>
105- <Linker Name="GenerateHpps">False</Linker>
106- <Linker Name="ConsoleApp">1</Linker>
107- <Linker Name="DebugInfo">False</Linker>
108- <Linker Name="RemoteSymbols">False</Linker>
109- <Linker Name="GenerateDRC">False</Linker>
110- <Linker Name="MinStackSize">16384</Linker>
111- <Linker Name="MaxStackSize">1048576</Linker>
112- <Linker Name="ImageBase">4194304</Linker>
113- </Linker>
104+ <Linker Name="ExeDescription">Anak Krakatoa Data Controls</Linker>
105+ <Linker Name="MapFile">0</Linker>
106+ <Linker Name="OutputObjs">0</Linker>
107+ <Linker Name="GenerateHpps">False</Linker>
108+ <Linker Name="ConsoleApp">1</Linker>
109+ <Linker Name="DebugInfo">False</Linker>
110+ <Linker Name="RemoteSymbols">False</Linker>
111+ <Linker Name="GenerateDRC">False</Linker>
112+ <Linker Name="MinStackSize">16384</Linker>
113+ <Linker Name="MaxStackSize">1048576</Linker>
114+ <Linker Name="ImageBase">4194304</Linker>
115+ </Linker>
114116 <Directories>
115117 <Directories Name="UnitOutputDir">..\..\dcu\d10</Directories>
116118 <Directories Name="PackageDLLOutputDir"></Directories>
@@ -117,53 +119,55 @@
117119 <Directories Name="PackageDCPOutputDir"></Directories>
118120 <Directories Name="SearchPath">..\..\RES</Directories>
119121 <Directories Name="Conditionals"></Directories>
120- <Directories Name="DebugSourceDirs"></Directories> <Directories Name="OutputDir"></Directories>
121- <Directories Name="Packages"></Directories>
122- <Directories Name="UsePackages">False</Directories>
123- </Directories> <FileVersion>
124- <FileVersion Name="Version">7.0</FileVersion>
125- </FileVersion>
126- <Parameters>
127- <Parameters Name="RunParams"></Parameters>
128- <Parameters Name="HostApplication"></Parameters>
129- <Parameters Name="Launcher"></Parameters>
130- <Parameters Name="UseLauncher">False</Parameters>
131- <Parameters Name="DebugCWD"></Parameters>
132- <Parameters Name="Debug Symbols Search Path"></Parameters>
133- <Parameters Name="LoadAllSymbols">True</Parameters>
134- <Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
135- </Parameters>
136- <Language>
137- <Language Name="ActiveLang"></Language>
138- <Language Name="ProjectLang">$00000000</Language>
139- <Language Name="RootDir"></Language>
140- </Language>
141- <VersionInfo>
142- <VersionInfo Name="IncludeVerInfo">False</VersionInfo>
143- <VersionInfo Name="AutoIncBuild">False</VersionInfo>
144- <VersionInfo Name="MajorVer">1</VersionInfo>
145- <VersionInfo Name="MinorVer">0</VersionInfo>
146- <VersionInfo Name="Release">0</VersionInfo>
147- <VersionInfo Name="Build">0</VersionInfo>
148- <VersionInfo Name="Debug">False</VersionInfo>
149- <VersionInfo Name="PreRelease">False</VersionInfo>
150- <VersionInfo Name="Special">False</VersionInfo>
151- <VersionInfo Name="Private">False</VersionInfo>
152- <VersionInfo Name="DLL">False</VersionInfo>
153- <VersionInfo Name="Locale">1046</VersionInfo>
154- <VersionInfo Name="CodePage">1252</VersionInfo>
155- </VersionInfo>
156- <VersionInfoKeys>
157- <VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
158- <VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
159- <VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
160- <VersionInfoKeys Name="InternalName"></VersionInfoKeys>
161- <VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
162- <VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
163- <VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
164- <VersionInfoKeys Name="ProductName"></VersionInfoKeys>
165- <VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
166- <VersionInfoKeys Name="Comments"></VersionInfoKeys>
167- </VersionInfoKeys>
168- </Delphi.Personality>
122+ <Directories Name="DebugSourceDirs"></Directories>
123+ <Directories Name="OutputDir"></Directories>
124+ <Directories Name="Packages"></Directories>
125+ <Directories Name="UsePackages">False</Directories>
126+ </Directories>
127+ <FileVersion>
128+ <FileVersion Name="Version">7.0</FileVersion>
129+ </FileVersion>
130+ <Parameters>
131+ <Parameters Name="RunParams"></Parameters>
132+ <Parameters Name="HostApplication"></Parameters>
133+ <Parameters Name="Launcher"></Parameters>
134+ <Parameters Name="UseLauncher">False</Parameters>
135+ <Parameters Name="DebugCWD"></Parameters>
136+ <Parameters Name="Debug Symbols Search Path"></Parameters>
137+ <Parameters Name="LoadAllSymbols">True</Parameters>
138+ <Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
139+ </Parameters>
140+ <Language>
141+ <Language Name="ActiveLang"></Language>
142+ <Language Name="ProjectLang">$00000000</Language>
143+ <Language Name="RootDir"></Language>
144+ </Language>
145+ <VersionInfo>
146+ <VersionInfo Name="IncludeVerInfo">False</VersionInfo>
147+ <VersionInfo Name="AutoIncBuild">False</VersionInfo>
148+ <VersionInfo Name="MajorVer">1</VersionInfo>
149+ <VersionInfo Name="MinorVer">0</VersionInfo>
150+ <VersionInfo Name="Release">0</VersionInfo>
151+ <VersionInfo Name="Build">0</VersionInfo>
152+ <VersionInfo Name="Debug">False</VersionInfo>
153+ <VersionInfo Name="PreRelease">False</VersionInfo>
154+ <VersionInfo Name="Special">False</VersionInfo>
155+ <VersionInfo Name="Private">False</VersionInfo>
156+ <VersionInfo Name="DLL">False</VersionInfo>
157+ <VersionInfo Name="Locale">1046</VersionInfo>
158+ <VersionInfo Name="CodePage">1252</VersionInfo>
159+ </VersionInfo>
160+ <VersionInfoKeys>
161+ <VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
162+ <VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
163+ <VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
164+ <VersionInfoKeys Name="InternalName"></VersionInfoKeys>
165+ <VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
166+ <VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
167+ <VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
168+ <VersionInfoKeys Name="ProductName"></VersionInfoKeys>
169+ <VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
170+ <VersionInfoKeys Name="Comments"></VersionInfoKeys>
171+ </VersionInfoKeys>
172+ </Delphi.Personality>
169173 </BorlandProject>
--- trunk/rtp/src/Vcl/KRK.Vcl.DBGrids.pas (revision 565)
+++ trunk/rtp/src/Vcl/KRK.Vcl.DBGrids.pas (revision 566)
@@ -83,11 +83,17 @@
8383 TDBGridOptionsEx = set of TDBGridOptionEx;
8484
8585 TMultiSelectEventTrigger = (msetMouseDown,msetKeyDown);
86-
8786 TBeforeMultiSelectEvent = procedure(aSender: TObject; aMultiSelectEventTrigger: TMultiSelectEventTrigger; var aCanChangeSelection: Boolean) of object;
88-
8987 TAfterMultiSelectEvent = procedure(aSender: TObject; aMultiSelectEventTrigger: TMultiSelectEventTrigger) of object;
90-
88+ // Os eventos disparados antes e após uma limpeza de seleção, sempre são
89+ // feitos por meio de msetKeyDown, porque o procedure ClearSelection é
90+ // executado apenas dentro de TCustomKRKDBGrid.KeyDown, por este motivo não é
91+ // necessária uma assinatura especial para este evento. Se no futuro você
92+ // expuser este procededura (ClearSelection), de forma que ele seja usado em
93+ // Runtime no código do usuário, tenha em mente que ele poderá ser executado
94+ // em duas situações, por meio de MouseDown e diretamente via código
95+ TBeforeClearSelectionEvent = TNotifyEvent;
96+ TAfterClearSelectionEvent = TNotifyEvent;
9197 TAfterDrawAlternateRowColor = function (ASender: TObject; const ACanvas: TCanvas; AColumn: TColumn): Boolean of object;
9298
9399 TCustomKRKDBGrid = class(TCustomDBGrid)
@@ -106,6 +112,8 @@
106112 FIsESCKey: Boolean;
107113 FOnBeforeMultiSelect: TBeforeMultiSelectEvent;
108114 FOnAfterMultiSelect: TAfterMultiSelectEvent;
115+ FOnBeforeClearSelection: TBeforeClearSelectionEvent;
116+ FOnAfterClearSelection: TAfterClearSelectionEvent;
109117 FSortArrow: TSortArrow;
110118 FVariableWidthColumns: WideString;
111119 FRecNoColumnName: String;
@@ -148,6 +156,8 @@
148156 property OptionsEx: TDBGridOptionsEx read FOptionsEx write SetOptionsEx default [dgAllowTitleClick];
149157 property OnBeforeMultiSelect: TBeforeMultiSelectEvent read FOnBeforeMultiSelect write FOnBeforeMultiSelect;
150158 property OnAfterMultiSelect: TAfterMultiSelectEvent read FOnAfterMultiSelect write FOnAfterMultiSelect;
159+ property OnBeforeClearSelection: TBeforeClearSelectionEvent read FOnBeforeClearSelection write FOnBeforeClearSelection;
160+ property OnAfterClearSelection: TAfterClearSelectionEvent read FOnAfterClearSelection write FOnAfterClearSelection;
151161 property RowColors: TRowColors read FRowColors write FRowColors;
152162 property SortArrow: TSortArrow read FSortArrow write FSortArrow;
153163 property VariableWidthColumns: WideString read FVariableWidthColumns write FVariableWidthColumns;
@@ -204,6 +214,8 @@
204214 property VariableWidthColumns;
205215 property OnAfterMultiselect;
206216 property OnBeforeMultiSelect;
217+ property OnBeforeClearSelection;
218+ property OnAfterClearSelection;
207219 property OnCellClick;
208220 property OnColEnter;
209221 property OnColExit;
@@ -1049,33 +1061,34 @@
10491061
10501062 procedure DoSelection(Select: Boolean; Direction: Integer);
10511063 var
1052- CanChangeSelection: Boolean;
1064+ CanChangeSelection: Boolean;
10531065 begin
1054- BeginUpdate;
1055- try
1056- if (dgMultiSelect in Options) and Datalink.Active then
1057- if Select and (ssShift in Shift) then
1058- begin
1059- CanChangeSelection := True; { Por padr?o sempre pode mudar a sele??o }
1060- if Assigned(FOnBeforeMultiSelect) then
1061- FOnBeforeMultiSelect(Self,msetKeyDown,CanChangeSelection);
1066+ BeginUpdate;
1067+ try
1068+ if (dgMultiSelect in Options) and Datalink.Active then
1069+ if Select and (ssShift in Shift) then
1070+ begin
1071+ CanChangeSelection := True; { Por padrão sempre pode mudar a seleção }
10621072
1063- if CanChangeSelection then
1064- begin
1065- SelectedRows.CurrentRowSelected := not SelectedRows.CurrentRowSelected;
1073+ if Assigned(FOnBeforeMultiSelect) then
1074+ FOnBeforeMultiSelect(Self,msetKeyDown,CanChangeSelection);
10661075
1067- if Assigned(FOnAfterMultiSelect) then
1068- FOnAfterMultiSelect(Self,msetKeyDown);
1069- end;
1070- end
1071- else
1072- ClearSelection;
1076+ if CanChangeSelection then
1077+ begin
1078+ SelectedRows.CurrentRowSelected := not SelectedRows.CurrentRowSelected;
10731079
1074- if Direction <> 0 then
1075- Datalink.DataSet.MoveBy(Direction);
1076- finally
1077- EndUpdate;
1078- end;
1080+ if Assigned(FOnAfterMultiSelect) then
1081+ FOnAfterMultiSelect(Self,msetKeyDown);
1082+ end;
1083+ end
1084+ else
1085+ ClearSelection;
1086+
1087+ if Direction <> 0 then
1088+ Datalink.DataSet.MoveBy(Direction);
1089+ finally
1090+ EndUpdate;
1091+ end;
10791092 end;
10801093
10811094 procedure NextRow(Select: Boolean);
Show on old repository browser