• R/O
  • SSH
  • HTTPS

akdf: Commit


Commit MetaInfo

Revision499 (tree)
Time2020-02-28 03:59:07
Authorderekwildstar

Log Message

Novas sub-rotinas e melhorias nas sub-rotinas existentes na unit KRK.Rtl.Common.ComponentUtils
Testador atualizado para testar a nova sub-rotina ClonePopUpMenu

Change Summary

Incremental Difference

--- trunk/dtp/Experts/prj/Delphi 26 (Delphi Rio)/KRKExpertsD.dproj (revision 498)
+++ trunk/dtp/Experts/prj/Delphi 26 (Delphi Rio)/KRKExpertsD.dproj (revision 499)
@@ -2,7 +2,7 @@
22 <PropertyGroup>
33 <ProjectGuid>{2F538A1F-0BE4-4FA9-B625-B73709CC43EA}</ProjectGuid>
44 <MainSource>KRKExpertsD.dpk</MainSource>
5- <ProjectVersion>18.7</ProjectVersion>
5+ <ProjectVersion>18.8</ProjectVersion>
66 <FrameworkType>VCL</FrameworkType>
77 <Base>True</Base>
88 <Config Condition="'$(Config)'==''">Base</Config>
@@ -158,6 +158,10 @@
158158 <RemoteDir>classes</RemoteDir>
159159 <Operation>1</Operation>
160160 </Platform>
161+ <Platform Name="Android64">
162+ <RemoteDir>classes</RemoteDir>
163+ <Operation>1</Operation>
164+ </Platform>
161165 </DeployClass>
162166 <DeployClass Name="AndroidFileProvider">
163167 <Platform Name="Android">
@@ -164,6 +168,10 @@
164168 <RemoteDir>res\xml</RemoteDir>
165169 <Operation>1</Operation>
166170 </Platform>
171+ <Platform Name="Android64">
172+ <RemoteDir>res\xml</RemoteDir>
173+ <Operation>1</Operation>
174+ </Platform>
167175 </DeployClass>
168176 <DeployClass Name="AndroidGDBServer">
169177 <Platform Name="Android">
@@ -176,12 +184,26 @@
176184 <RemoteDir>library\lib\armeabi</RemoteDir>
177185 <Operation>1</Operation>
178186 </Platform>
187+ <Platform Name="Android64">
188+ <RemoteDir>library\lib\armeabi</RemoteDir>
189+ <Operation>1</Operation>
190+ </Platform>
179191 </DeployClass>
192+ <DeployClass Name="AndroidLibnativeArmeabiv7aFile">
193+ <Platform Name="Android64">
194+ <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
195+ <Operation>1</Operation>
196+ </Platform>
197+ </DeployClass>
180198 <DeployClass Name="AndroidLibnativeMipsFile">
181199 <Platform Name="Android">
182200 <RemoteDir>library\lib\mips</RemoteDir>
183201 <Operation>1</Operation>
184202 </Platform>
203+ <Platform Name="Android64">
204+ <RemoteDir>library\lib\mips</RemoteDir>
205+ <Operation>1</Operation>
206+ </Platform>
185207 </DeployClass>
186208 <DeployClass Name="AndroidServiceOutput">
187209 <Platform Name="Android">
@@ -188,12 +210,26 @@
188210 <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
189211 <Operation>1</Operation>
190212 </Platform>
213+ <Platform Name="Android64">
214+ <RemoteDir>library\lib\arm64-v8a</RemoteDir>
215+ <Operation>1</Operation>
216+ </Platform>
191217 </DeployClass>
218+ <DeployClass Name="AndroidServiceOutput_Android32">
219+ <Platform Name="Android64">
220+ <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
221+ <Operation>1</Operation>
222+ </Platform>
223+ </DeployClass>
192224 <DeployClass Name="AndroidSplashImageDef">
193225 <Platform Name="Android">
194226 <RemoteDir>res\drawable</RemoteDir>
195227 <Operation>1</Operation>
196228 </Platform>
229+ <Platform Name="Android64">
230+ <RemoteDir>res\drawable</RemoteDir>
231+ <Operation>1</Operation>
232+ </Platform>
197233 </DeployClass>
198234 <DeployClass Name="AndroidSplashStyles">
199235 <Platform Name="Android">
@@ -200,6 +236,10 @@
200236 <RemoteDir>res\values</RemoteDir>
201237 <Operation>1</Operation>
202238 </Platform>
239+ <Platform Name="Android64">
240+ <RemoteDir>res\values</RemoteDir>
241+ <Operation>1</Operation>
242+ </Platform>
203243 </DeployClass>
204244 <DeployClass Name="AndroidSplashStylesV21">
205245 <Platform Name="Android">
@@ -206,6 +246,10 @@
206246 <RemoteDir>res\values-v21</RemoteDir>
207247 <Operation>1</Operation>
208248 </Platform>
249+ <Platform Name="Android64">
250+ <RemoteDir>res\values-v21</RemoteDir>
251+ <Operation>1</Operation>
252+ </Platform>
209253 </DeployClass>
210254 <DeployClass Name="Android_Colors">
211255 <Platform Name="Android">
@@ -212,6 +256,10 @@
212256 <RemoteDir>res\values</RemoteDir>
213257 <Operation>1</Operation>
214258 </Platform>
259+ <Platform Name="Android64">
260+ <RemoteDir>res\values</RemoteDir>
261+ <Operation>1</Operation>
262+ </Platform>
215263 </DeployClass>
216264 <DeployClass Name="Android_DefaultAppIcon">
217265 <Platform Name="Android">
@@ -218,6 +266,10 @@
218266 <RemoteDir>res\drawable</RemoteDir>
219267 <Operation>1</Operation>
220268 </Platform>
269+ <Platform Name="Android64">
270+ <RemoteDir>res\drawable</RemoteDir>
271+ <Operation>1</Operation>
272+ </Platform>
221273 </DeployClass>
222274 <DeployClass Name="Android_LauncherIcon144">
223275 <Platform Name="Android">
@@ -224,6 +276,10 @@
224276 <RemoteDir>res\drawable-xxhdpi</RemoteDir>
225277 <Operation>1</Operation>
226278 </Platform>
279+ <Platform Name="Android64">
280+ <RemoteDir>res\drawable-xxhdpi</RemoteDir>
281+ <Operation>1</Operation>
282+ </Platform>
227283 </DeployClass>
228284 <DeployClass Name="Android_LauncherIcon36">
229285 <Platform Name="Android">
@@ -230,6 +286,10 @@
230286 <RemoteDir>res\drawable-ldpi</RemoteDir>
231287 <Operation>1</Operation>
232288 </Platform>
289+ <Platform Name="Android64">
290+ <RemoteDir>res\drawable-ldpi</RemoteDir>
291+ <Operation>1</Operation>
292+ </Platform>
233293 </DeployClass>
234294 <DeployClass Name="Android_LauncherIcon48">
235295 <Platform Name="Android">
@@ -236,6 +296,10 @@
236296 <RemoteDir>res\drawable-mdpi</RemoteDir>
237297 <Operation>1</Operation>
238298 </Platform>
299+ <Platform Name="Android64">
300+ <RemoteDir>res\drawable-mdpi</RemoteDir>
301+ <Operation>1</Operation>
302+ </Platform>
239303 </DeployClass>
240304 <DeployClass Name="Android_LauncherIcon72">
241305 <Platform Name="Android">
@@ -242,6 +306,10 @@
242306 <RemoteDir>res\drawable-hdpi</RemoteDir>
243307 <Operation>1</Operation>
244308 </Platform>
309+ <Platform Name="Android64">
310+ <RemoteDir>res\drawable-hdpi</RemoteDir>
311+ <Operation>1</Operation>
312+ </Platform>
245313 </DeployClass>
246314 <DeployClass Name="Android_LauncherIcon96">
247315 <Platform Name="Android">
@@ -248,6 +316,10 @@
248316 <RemoteDir>res\drawable-xhdpi</RemoteDir>
249317 <Operation>1</Operation>
250318 </Platform>
319+ <Platform Name="Android64">
320+ <RemoteDir>res\drawable-xhdpi</RemoteDir>
321+ <Operation>1</Operation>
322+ </Platform>
251323 </DeployClass>
252324 <DeployClass Name="Android_NotificationIcon24">
253325 <Platform Name="Android">
@@ -254,6 +326,10 @@
254326 <RemoteDir>res\drawable-mdpi</RemoteDir>
255327 <Operation>1</Operation>
256328 </Platform>
329+ <Platform Name="Android64">
330+ <RemoteDir>res\drawable-mdpi</RemoteDir>
331+ <Operation>1</Operation>
332+ </Platform>
257333 </DeployClass>
258334 <DeployClass Name="Android_NotificationIcon36">
259335 <Platform Name="Android">
@@ -260,6 +336,10 @@
260336 <RemoteDir>res\drawable-hdpi</RemoteDir>
261337 <Operation>1</Operation>
262338 </Platform>
339+ <Platform Name="Android64">
340+ <RemoteDir>res\drawable-hdpi</RemoteDir>
341+ <Operation>1</Operation>
342+ </Platform>
263343 </DeployClass>
264344 <DeployClass Name="Android_NotificationIcon48">
265345 <Platform Name="Android">
@@ -266,6 +346,10 @@
266346 <RemoteDir>res\drawable-xhdpi</RemoteDir>
267347 <Operation>1</Operation>
268348 </Platform>
349+ <Platform Name="Android64">
350+ <RemoteDir>res\drawable-xhdpi</RemoteDir>
351+ <Operation>1</Operation>
352+ </Platform>
269353 </DeployClass>
270354 <DeployClass Name="Android_NotificationIcon72">
271355 <Platform Name="Android">
@@ -272,6 +356,10 @@
272356 <RemoteDir>res\drawable-xxhdpi</RemoteDir>
273357 <Operation>1</Operation>
274358 </Platform>
359+ <Platform Name="Android64">
360+ <RemoteDir>res\drawable-xxhdpi</RemoteDir>
361+ <Operation>1</Operation>
362+ </Platform>
275363 </DeployClass>
276364 <DeployClass Name="Android_NotificationIcon96">
277365 <Platform Name="Android">
@@ -278,6 +366,10 @@
278366 <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
279367 <Operation>1</Operation>
280368 </Platform>
369+ <Platform Name="Android64">
370+ <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
371+ <Operation>1</Operation>
372+ </Platform>
281373 </DeployClass>
282374 <DeployClass Name="Android_SplashImage426">
283375 <Platform Name="Android">
@@ -284,6 +376,10 @@
284376 <RemoteDir>res\drawable-small</RemoteDir>
285377 <Operation>1</Operation>
286378 </Platform>
379+ <Platform Name="Android64">
380+ <RemoteDir>res\drawable-small</RemoteDir>
381+ <Operation>1</Operation>
382+ </Platform>
287383 </DeployClass>
288384 <DeployClass Name="Android_SplashImage470">
289385 <Platform Name="Android">
@@ -290,6 +386,10 @@
290386 <RemoteDir>res\drawable-normal</RemoteDir>
291387 <Operation>1</Operation>
292388 </Platform>
389+ <Platform Name="Android64">
390+ <RemoteDir>res\drawable-normal</RemoteDir>
391+ <Operation>1</Operation>
392+ </Platform>
293393 </DeployClass>
294394 <DeployClass Name="Android_SplashImage640">
295395 <Platform Name="Android">
@@ -296,6 +396,10 @@
296396 <RemoteDir>res\drawable-large</RemoteDir>
297397 <Operation>1</Operation>
298398 </Platform>
399+ <Platform Name="Android64">
400+ <RemoteDir>res\drawable-large</RemoteDir>
401+ <Operation>1</Operation>
402+ </Platform>
299403 </DeployClass>
300404 <DeployClass Name="Android_SplashImage960">
301405 <Platform Name="Android">
@@ -302,6 +406,10 @@
302406 <RemoteDir>res\drawable-xlarge</RemoteDir>
303407 <Operation>1</Operation>
304408 </Platform>
409+ <Platform Name="Android64">
410+ <RemoteDir>res\drawable-xlarge</RemoteDir>
411+ <Operation>1</Operation>
412+ </Platform>
305413 </DeployClass>
306414 <DeployClass Name="Android_Strings">
307415 <Platform Name="Android">
@@ -308,6 +416,10 @@
308416 <RemoteDir>res\values</RemoteDir>
309417 <Operation>1</Operation>
310418 </Platform>
419+ <Platform Name="Android64">
420+ <RemoteDir>res\values</RemoteDir>
421+ <Operation>1</Operation>
422+ </Platform>
311423 </DeployClass>
312424 <DeployClass Name="DebugSymbols">
313425 <Platform Name="iOSSimulator">
@@ -377,6 +489,9 @@
377489 <Platform Name="Android">
378490 <Operation>0</Operation>
379491 </Platform>
492+ <Platform Name="Android64">
493+ <Operation>0</Operation>
494+ </Platform>
380495 <Platform Name="iOSDevice32">
381496 <Operation>0</Operation>
382497 </Platform>
@@ -664,6 +779,9 @@
664779 <Platform Name="Android">
665780 <Operation>1</Operation>
666781 </Platform>
782+ <Platform Name="Android64">
783+ <Operation>1</Operation>
784+ </Platform>
667785 </DeployClass>
668786 <DeployClass Name="ProjectiOSDeviceDebug">
669787 <Platform Name="iOSDevice32">
@@ -707,6 +825,10 @@
707825 <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
708826 <Operation>1</Operation>
709827 </Platform>
828+ <Platform Name="Android64">
829+ <RemoteDir>library\lib\arm64-v8a</RemoteDir>
830+ <Operation>1</Operation>
831+ </Platform>
710832 <Platform Name="iOSDevice32">
711833 <Operation>1</Operation>
712834 </Platform>
@@ -729,6 +851,12 @@
729851 <Operation>0</Operation>
730852 </Platform>
731853 </DeployClass>
854+ <DeployClass Name="ProjectOutput_Android32">
855+ <Platform Name="Android64">
856+ <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
857+ <Operation>1</Operation>
858+ </Platform>
859+ </DeployClass>
732860 <DeployClass Name="ProjectUWPManifest">
733861 <Platform Name="Win32">
734862 <Operation>1</Operation>
@@ -766,6 +894,7 @@
766894 <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
767895 <ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/>
768896 <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
897+ <ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
769898 </Deployment>
770899 <Platforms>
771900 <Platform value="Win32">True</Platform>
--- trunk/rtp/src/Rtl/Common/KRK.Rtl.Common.ComponentUtils.pas (revision 498)
+++ trunk/rtp/src/Rtl/Common/KRK.Rtl.Common.ComponentUtils.pas (revision 499)
@@ -2,12 +2,32 @@
22
33 interface
44
5-uses Menus;
5+uses Menus
6+ , Classes;
67
78 { TMainMenu }
8-procedure CloneMainMenu(ASourceMainMenu: TMainMenu; out ADestinationMainMenu: TMainMenu);
9-{ TODO : Futuramente revise clone main menu e renomeie suas variáveis de acordo com CloneMenuStructure }
10-procedure CloneMenuStructure(ASourceMenu: TMenuItem; out ADestinationMenu: TMenuItem);
9+//: Clona um TMainMenu (ASourceMainMenu). O resultado é outro TMainMenu
10+//: (ADestinationMainMenu) idêntico estruturalmente a ASourceMainMenu, com os
11+//: mesmos valores para as propriedades. O valor inicial de ADestinationMainMenu
12+//: será sempre descartado
13+procedure CloneMainMenu(ASourceMainMenu: TMainMenu; out ADestinationMainMenu: TMainMenu; AOwner: TComponent = nil);
14+//: Clona um TPopUpMenu (ASourcePopUpMenu). O resultado é outro TPopUpMenu
15+//: (ADestinationPopUpMenu) idêntico estruturalmente a ASourcePopUpMenu, com os
16+//: mesmos valores para as propriedades. O valor inicial de
17+//: ADestinationPopUpMenu será sempre descartado
18+procedure ClonePopUpMenu(ASourcePopUpMenu: TPopUpMenu; out ADestinationPopUpMenu: TPopUpMenu; AOwner: TComponent = nil);
19+//: Clona uma estrutura de menu a partir de um TMenuItem (ASourceMenuItem). O
20+//: resultado (ADestinationMenuItem) será um TMenuItem idêntico estruturalmente
21+//: a ASourceMenuItem, com os mesmos valores para as propriedades. O valor
22+//: inicial de ADestinationMenuItem será sempre descartado, portanto, é melhor
23+//: passar uma variável com valor nil neste parâmetro
24+procedure CloneMenuStructure(const ASourceMenuItem: TMenuItem; out ADestinationMenuItem: TMenuItem; AOwner: TComponent = nil);
25+//: Cria um clone de um TMenuItem. A clonagem é meramente a criação de um novo
26+//: TMenuItem a partir do primeiro, copiando todas as suas propriedades e
27+//: ponteiros para manipuladores de eventos. O dono do novo TMenuItem é o mesmo
28+//: dono do TMenuItem de origem (ASourceMenuItem), por este motivo a propriedade
29+//: Name é clonada com um sufixo numérico, a fim de evitar conflitos de nomes
30+function CloneMenuItem(const ASourceMenuItem: TMenuItem; AOwner: TComponent = nil): TMenuItem;
1131 function FindMenuItem(AMainMenu: TMainMenu; AName: String): TMenuItem; overload;
1232 function FindMenuItem(ARootMenuItem: TMenuItem; AName: String): TMenuItem; overload;
1333
@@ -26,6 +46,9 @@
2646 uses
2747 SysUtils;
2848
49+var
50+ CloneNumber: Cardinal = 0;
51+
2952 function FindMenuItem(AMainMenu: TMainMenu; AName: String): TMenuItem;
3053 //-/////////////////////////////////////////////////////////////////////////////
3154 function GoInside(AMenuItem: TMenuItem): TMenuItem;
@@ -90,60 +113,69 @@
90113 Result := GoInside(ARootMenuItem);
91114 end;
92115
93-procedure CloneMainMenu(ASourceMainMenu: TMainMenu; out ADestinationMainMenu: TMainMenu);
94-//-/////////////////////////////////////////////////////////////////////////////
95-function CloneMenuItem(const ASource: TMenuItem): TMenuItem;
116+procedure CloneMainMenu(ASourceMainMenu: TMainMenu; out ADestinationMainMenu: TMainMenu; AOwner: TComponent = nil);
117+var
118+ SMI: TMenuItem; // Source Menu Item
119+ DMI: TMenuItem; // Destination Menu Item
96120 begin
97- Result := TMenuItem.Create(ADestinationMainMenu);
98- with Result do
121+ // Cria o TMainMenu que terá como dono, o mesmo dono do TMainMenu de origem
122+ if Assigned(AOwner) then
123+ ADestinationMainMenu := TMainMenu.Create(AOwner)
124+ else
125+ ADestinationMainMenu := TMainMenu.Create(ASourceMainMenu.Owner);
126+
127+ Inc(CloneNumber);
128+ ADestinationMainMenu.Name := ASourceMainMenu.Name + '_C_' + IntToStr(CloneNumber);
129+
130+ // A clonagem aqui não é perfeita. As propriedades de ADestinationMainMenu não
131+ // estão sendo configuradas. Caso necessite copiar propriedades e eventos,
132+ // inclua-os aqui, antes de realizar a clonagem da estrutura
133+
134+ // A clonagem estrutural se dá por meio de recursividade. Cada item de nível
135+ // superior contido em ASourceMainMenu terá toda a sua estrutura clonada. O
136+ // resultado será um TMenuItem adicionado a ADestinationMainMenu
137+ for SMI in ASourceMainMenu.Items do
99138 begin
100- Caption := ASource.Caption;
101- ShortCut := ASource.ShortCut;
102- OnClick := ASource.OnClick;
103- HelpContext := ASource.HelpContext;
104- Checked := ASource.Checked;
105- Enabled := ASource.Enabled;
106- Tag := ASource.Tag;
107- ImageIndex := ASource.ImageIndex;
108- Randomize;
109- Name := ASource.Name + '_C_' + IntToStr(Random(255));
139+ CloneMenuStructure(SMI,DMI,AOwner);
140+ ADestinationMainMenu.Items.Add(DMI);
110141 end;
111142 end;
112143
113-procedure GoInside(AMenuItemSource: TMenuItem; AMenuItemDestination: TMenuItem);
144+procedure ClonePopUpMenu(ASourcePopUpMenu: TPopUpMenu; out ADestinationPopUpMenu: TPopUpMenu; AOwner: TComponent = nil);
114145 var
115- MenuItemSource: TMenuItem;
116- MenuItemDestination: TMenuItem;
117-begin
118- for MenuItemSource in AMenuItemSource do
119- begin
120- MenuItemDestination := CloneMenuItem(MenuItemSource);
121- AMenuItemDestination.Add(MenuItemDestination);
122- GoInside(MenuItemSource,MenuItemDestination);
123- end;
124-end;
125-//-/////////////////////////////////////////////////////////////////////////////
126-var
127146 SMI: TMenuItem; // Source Menu Item
128147 DMI: TMenuItem; // Destination Menu Item
129148 begin
130- if Assigned(ADestinationMainMenu) then
131- ADestinationMainMenu.Free;
149+ // Cria o TMainMenu que terá como dono, o mesmo dono do TMainMenu de origem
150+ if Assigned(AOwner) then
151+ ADestinationPopUpMenu := TPopUpMenu.Create(AOwner)
152+ else
153+ ADestinationPopUpMenu := TPopUpMenu.Create(ASourcePopUpMenu.Owner);
132154
133- //
134- ADestinationMainMenu := TMainMenu.Create(ASourceMainMenu.Owner);
155+ Inc(CloneNumber);
156+ ADestinationPopUpMenu.Name := ASourcePopUpMenu.Name + '_C_' + IntToStr(CloneNumber);
135157
136- for SMI in ASourceMainMenu.Items do
158+ // A clonagem aqui não é perfeita. As propriedades de ADestinationPopUpMenu
159+ // não estão sendo configuradas. Caso necessite copiar propriedades e eventos,
160+ // inclua-os aqui, antes de realizar a clonagem da estrutura
161+
162+ // A clonagem estrutural se dá por meio de recursividade. Cada item de nível
163+ // superior contido em ASourcePopUpMenu terá toda a sua estrutura clonada. O
164+ // resultado será um TMenuItem adicionado a ADestinationPopUpMenu
165+ for SMI in ASourcePopUpMenu.Items do
137166 begin
138- DMI := CloneMenuItem(SMI);
139- ADestinationMainMenu.Items.Add(DMI);
140- GoInside(SMI,DMI);
167+ CloneMenuStructure(SMI,DMI,AOwner);
168+ ADestinationPopUpMenu.Items.Add(DMI);
141169 end;
142170 end;
143171
144-function CloneMenuItem(const ASourceMenuItem: TMenuItem): TMenuItem;
172+function CloneMenuItem(const ASourceMenuItem: TMenuItem; AOwner: TComponent = nil): TMenuItem;
145173 begin
146- Result := TMenuItem.Create(ASourceMenuItem);
174+ if Assigned(AOwner) then
175+ Result := TMenuItem.Create(AOwner)
176+ else
177+ Result := TMenuItem.Create(ASourceMenuItem.Owner);
178+
147179 Result.ShortCut := ASourceMenuItem.ShortCut;
148180 Result.Caption := ASourceMenuItem.Caption;
149181 Result.OnClick := ASourceMenuItem.OnClick;
@@ -154,15 +186,16 @@
154186 Result.RadioItem := ASourceMenuItem.RadioItem;
155187 Result.Tag := ASourceMenuItem.Tag;
156188 Result.ImageIndex := ASourceMenuItem.ImageIndex;
157- Result.Name := ASourceMenuItem.Name;
189+ Inc(CloneNumber);
190+ Result.Name := ASourceMenuItem.Name + '_C_' + IntToStr(CloneNumber);
158191 end;
159192
160-procedure CloneMenuStructure(ASourceMenu: TMenuItem; out ADestinationMenu: TMenuItem);
193+procedure CloneMenuStructure(const ASourceMenuItem: TMenuItem; out ADestinationMenuItem: TMenuItem; AOwner: TComponent = nil);
161194 //-/////////////////////////////////////////////////////////////////////////////
162195 procedure GoInside(ASourceMenuItem: TMenuItem; ADestinationMenuItem: TMenuItem);
163196 var
164197 SMI: TMenuItem; // Source Menu Item
165- CMI: TMenuItem; // Cloned Menu Item
198+ DMI: TMenuItem; // Destination Menu Item
166199 begin
167200 // Varre cada item de menu (submenu) existente em ASourceMenuItem clonando-os
168201 // e adicionando o clone como filho de ADestinationMenuItem, antes de realizar
@@ -169,18 +202,15 @@
169202 // a recursão (GoInside)
170203 for SMI in ASourceMenuItem do
171204 begin
172- CMI := CloneMenuItem(SMI);
173- ADestinationMenuItem.Add(CMI);
174- GoInside(SMI,CMI);
205+ DMI := CloneMenuItem(SMI,AOwner);
206+ ADestinationMenuItem.Add(DMI);
207+ GoInside(SMI,DMI);
175208 end;
176209 end;
177210 //-/////////////////////////////////////////////////////////////////////////////
178211 begin
179- if Assigned(ADestinationMenu) then
180- ADestinationMenu.Free;
181-
182- ADestinationMenu := CloneMenuItem(ASourceMenu);
183- GoInside(ASourceMenu,ADestinationMenu);
212+ ADestinationMenuItem := CloneMenuItem(ASourceMenuItem);
213+ GoInside(ASourceMenuItem,ADestinationMenuItem);
184214 end;
185215
186216 // uses Classes;
--- trunk/rtp/src/ToolsAPI/KRK.ToolsAPI.Utilities.pas (revision 498)
+++ trunk/rtp/src/ToolsAPI/KRK.ToolsAPI.Utilities.pas (revision 499)
@@ -157,7 +157,7 @@
157157 FOriginalDoPopup(ASender);
158158 // 3. Adiciona todos os menus contidos em FAddOnPopUpMenu, mas apenas se a aba
159159 // ativa não for a aba de boas vindas
160- após abrir uma janele de edição adiciol, o while abaixo funcionou porque o menu esta vazio, pq ele foi esvaziado ao ser exibido na janela de edição principal da ide
160+ //após abrir uma janele de edição adiciol, o while abaixo funcionou porque o menu esta vazio, pq ele foi esvaziado ao ser exibido na janela de edição principal da ide
161161 if GetActiveTabCaption(TCustomControl(TPopUpMenu(ASender).PopupComponent)) <> 'Welcome Page' then
162162 while FAddOnPopUpMenu.Items.Count > 0 do
163163 begin
--- trunk/utl/Crypt Table Maker/prj/CryptTableMaker.dproj (revision 498)
+++ trunk/utl/Crypt Table Maker/prj/CryptTableMaker.dproj (revision 499)
@@ -7,7 +7,7 @@
77 <TargetedPlatforms>1</TargetedPlatforms>
88 <AppType>Application</AppType>
99 <FrameworkType>VCL</FrameworkType>
10- <ProjectVersion>18.7</ProjectVersion>
10+ <ProjectVersion>18.8</ProjectVersion>
1111 <Platform Condition="'$(Platform)'==''">Win32</Platform>
1212 </PropertyGroup>
1313 <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
--- trunk/utl/TESTADOR/prj/Testador.dproj (revision 498)
+++ trunk/utl/TESTADOR/prj/Testador.dproj (revision 499)
@@ -1,7 +1,7 @@
11 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
22 <PropertyGroup>
33 <ProjectGuid>{72379D89-1A44-4162-BADE-4665225F9C66}</ProjectGuid>
4- <ProjectVersion>18.7</ProjectVersion>
4+ <ProjectVersion>18.8</ProjectVersion>
55 <FrameworkType>VCL</FrameworkType>
66 <MainSource>Testador.dpr</MainSource>
77 <Base>True</Base>
@@ -209,6 +209,10 @@
209209 <RemoteDir>classes</RemoteDir>
210210 <Operation>1</Operation>
211211 </Platform>
212+ <Platform Name="Android64">
213+ <RemoteDir>classes</RemoteDir>
214+ <Operation>1</Operation>
215+ </Platform>
212216 </DeployClass>
213217 <DeployClass Name="AndroidFileProvider">
214218 <Platform Name="Android">
@@ -215,6 +219,10 @@
215219 <RemoteDir>res\xml</RemoteDir>
216220 <Operation>1</Operation>
217221 </Platform>
222+ <Platform Name="Android64">
223+ <RemoteDir>res\xml</RemoteDir>
224+ <Operation>1</Operation>
225+ </Platform>
218226 </DeployClass>
219227 <DeployClass Name="AndroidGDBServer">
220228 <Platform Name="Android">
@@ -227,12 +235,26 @@
227235 <RemoteDir>library\lib\armeabi</RemoteDir>
228236 <Operation>1</Operation>
229237 </Platform>
238+ <Platform Name="Android64">
239+ <RemoteDir>library\lib\armeabi</RemoteDir>
240+ <Operation>1</Operation>
241+ </Platform>
230242 </DeployClass>
243+ <DeployClass Name="AndroidLibnativeArmeabiv7aFile">
244+ <Platform Name="Android64">
245+ <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
246+ <Operation>1</Operation>
247+ </Platform>
248+ </DeployClass>
231249 <DeployClass Name="AndroidLibnativeMipsFile">
232250 <Platform Name="Android">
233251 <RemoteDir>library\lib\mips</RemoteDir>
234252 <Operation>1</Operation>
235253 </Platform>
254+ <Platform Name="Android64">
255+ <RemoteDir>library\lib\mips</RemoteDir>
256+ <Operation>1</Operation>
257+ </Platform>
236258 </DeployClass>
237259 <DeployClass Name="AndroidServiceOutput">
238260 <Platform Name="Android">
@@ -239,12 +261,26 @@
239261 <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
240262 <Operation>1</Operation>
241263 </Platform>
264+ <Platform Name="Android64">
265+ <RemoteDir>library\lib\arm64-v8a</RemoteDir>
266+ <Operation>1</Operation>
267+ </Platform>
242268 </DeployClass>
269+ <DeployClass Name="AndroidServiceOutput_Android32">
270+ <Platform Name="Android64">
271+ <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
272+ <Operation>1</Operation>
273+ </Platform>
274+ </DeployClass>
243275 <DeployClass Name="AndroidSplashImageDef">
244276 <Platform Name="Android">
245277 <RemoteDir>res\drawable</RemoteDir>
246278 <Operation>1</Operation>
247279 </Platform>
280+ <Platform Name="Android64">
281+ <RemoteDir>res\drawable</RemoteDir>
282+ <Operation>1</Operation>
283+ </Platform>
248284 </DeployClass>
249285 <DeployClass Name="AndroidSplashStyles">
250286 <Platform Name="Android">
@@ -251,6 +287,10 @@
251287 <RemoteDir>res\values</RemoteDir>
252288 <Operation>1</Operation>
253289 </Platform>
290+ <Platform Name="Android64">
291+ <RemoteDir>res\values</RemoteDir>
292+ <Operation>1</Operation>
293+ </Platform>
254294 </DeployClass>
255295 <DeployClass Name="AndroidSplashStylesV21">
256296 <Platform Name="Android">
@@ -257,6 +297,10 @@
257297 <RemoteDir>res\values-v21</RemoteDir>
258298 <Operation>1</Operation>
259299 </Platform>
300+ <Platform Name="Android64">
301+ <RemoteDir>res\values-v21</RemoteDir>
302+ <Operation>1</Operation>
303+ </Platform>
260304 </DeployClass>
261305 <DeployClass Name="Android_Colors">
262306 <Platform Name="Android">
@@ -263,6 +307,10 @@
263307 <RemoteDir>res\values</RemoteDir>
264308 <Operation>1</Operation>
265309 </Platform>
310+ <Platform Name="Android64">
311+ <RemoteDir>res\values</RemoteDir>
312+ <Operation>1</Operation>
313+ </Platform>
266314 </DeployClass>
267315 <DeployClass Name="Android_DefaultAppIcon">
268316 <Platform Name="Android">
@@ -269,6 +317,10 @@
269317 <RemoteDir>res\drawable</RemoteDir>
270318 <Operation>1</Operation>
271319 </Platform>
320+ <Platform Name="Android64">
321+ <RemoteDir>res\drawable</RemoteDir>
322+ <Operation>1</Operation>
323+ </Platform>
272324 </DeployClass>
273325 <DeployClass Name="Android_LauncherIcon144">
274326 <Platform Name="Android">
@@ -275,6 +327,10 @@
275327 <RemoteDir>res\drawable-xxhdpi</RemoteDir>
276328 <Operation>1</Operation>
277329 </Platform>
330+ <Platform Name="Android64">
331+ <RemoteDir>res\drawable-xxhdpi</RemoteDir>
332+ <Operation>1</Operation>
333+ </Platform>
278334 </DeployClass>
279335 <DeployClass Name="Android_LauncherIcon36">
280336 <Platform Name="Android">
@@ -281,6 +337,10 @@
281337 <RemoteDir>res\drawable-ldpi</RemoteDir>
282338 <Operation>1</Operation>
283339 </Platform>
340+ <Platform Name="Android64">
341+ <RemoteDir>res\drawable-ldpi</RemoteDir>
342+ <Operation>1</Operation>
343+ </Platform>
284344 </DeployClass>
285345 <DeployClass Name="Android_LauncherIcon48">
286346 <Platform Name="Android">
@@ -287,6 +347,10 @@
287347 <RemoteDir>res\drawable-mdpi</RemoteDir>
288348 <Operation>1</Operation>
289349 </Platform>
350+ <Platform Name="Android64">
351+ <RemoteDir>res\drawable-mdpi</RemoteDir>
352+ <Operation>1</Operation>
353+ </Platform>
290354 </DeployClass>
291355 <DeployClass Name="Android_LauncherIcon72">
292356 <Platform Name="Android">
@@ -293,6 +357,10 @@
293357 <RemoteDir>res\drawable-hdpi</RemoteDir>
294358 <Operation>1</Operation>
295359 </Platform>
360+ <Platform Name="Android64">
361+ <RemoteDir>res\drawable-hdpi</RemoteDir>
362+ <Operation>1</Operation>
363+ </Platform>
296364 </DeployClass>
297365 <DeployClass Name="Android_LauncherIcon96">
298366 <Platform Name="Android">
@@ -299,6 +367,10 @@
299367 <RemoteDir>res\drawable-xhdpi</RemoteDir>
300368 <Operation>1</Operation>
301369 </Platform>
370+ <Platform Name="Android64">
371+ <RemoteDir>res\drawable-xhdpi</RemoteDir>
372+ <Operation>1</Operation>
373+ </Platform>
302374 </DeployClass>
303375 <DeployClass Name="Android_NotificationIcon24">
304376 <Platform Name="Android">
@@ -305,6 +377,10 @@
305377 <RemoteDir>res\drawable-mdpi</RemoteDir>
306378 <Operation>1</Operation>
307379 </Platform>
380+ <Platform Name="Android64">
381+ <RemoteDir>res\drawable-mdpi</RemoteDir>
382+ <Operation>1</Operation>
383+ </Platform>
308384 </DeployClass>
309385 <DeployClass Name="Android_NotificationIcon36">
310386 <Platform Name="Android">
@@ -311,6 +387,10 @@
311387 <RemoteDir>res\drawable-hdpi</RemoteDir>
312388 <Operation>1</Operation>
313389 </Platform>
390+ <Platform Name="Android64">
391+ <RemoteDir>res\drawable-hdpi</RemoteDir>
392+ <Operation>1</Operation>
393+ </Platform>
314394 </DeployClass>
315395 <DeployClass Name="Android_NotificationIcon48">
316396 <Platform Name="Android">
@@ -317,6 +397,10 @@
317397 <RemoteDir>res\drawable-xhdpi</RemoteDir>
318398 <Operation>1</Operation>
319399 </Platform>
400+ <Platform Name="Android64">
401+ <RemoteDir>res\drawable-xhdpi</RemoteDir>
402+ <Operation>1</Operation>
403+ </Platform>
320404 </DeployClass>
321405 <DeployClass Name="Android_NotificationIcon72">
322406 <Platform Name="Android">
@@ -323,6 +407,10 @@
323407 <RemoteDir>res\drawable-xxhdpi</RemoteDir>
324408 <Operation>1</Operation>
325409 </Platform>
410+ <Platform Name="Android64">
411+ <RemoteDir>res\drawable-xxhdpi</RemoteDir>
412+ <Operation>1</Operation>
413+ </Platform>
326414 </DeployClass>
327415 <DeployClass Name="Android_NotificationIcon96">
328416 <Platform Name="Android">
@@ -329,6 +417,10 @@
329417 <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
330418 <Operation>1</Operation>
331419 </Platform>
420+ <Platform Name="Android64">
421+ <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
422+ <Operation>1</Operation>
423+ </Platform>
332424 </DeployClass>
333425 <DeployClass Name="Android_SplashImage426">
334426 <Platform Name="Android">
@@ -335,6 +427,10 @@
335427 <RemoteDir>res\drawable-small</RemoteDir>
336428 <Operation>1</Operation>
337429 </Platform>
430+ <Platform Name="Android64">
431+ <RemoteDir>res\drawable-small</RemoteDir>
432+ <Operation>1</Operation>
433+ </Platform>
338434 </DeployClass>
339435 <DeployClass Name="Android_SplashImage470">
340436 <Platform Name="Android">
@@ -341,6 +437,10 @@
341437 <RemoteDir>res\drawable-normal</RemoteDir>
342438 <Operation>1</Operation>
343439 </Platform>
440+ <Platform Name="Android64">
441+ <RemoteDir>res\drawable-normal</RemoteDir>
442+ <Operation>1</Operation>
443+ </Platform>
344444 </DeployClass>
345445 <DeployClass Name="Android_SplashImage640">
346446 <Platform Name="Android">
@@ -347,6 +447,10 @@
347447 <RemoteDir>res\drawable-large</RemoteDir>
348448 <Operation>1</Operation>
349449 </Platform>
450+ <Platform Name="Android64">
451+ <RemoteDir>res\drawable-large</RemoteDir>
452+ <Operation>1</Operation>
453+ </Platform>
350454 </DeployClass>
351455 <DeployClass Name="Android_SplashImage960">
352456 <Platform Name="Android">
@@ -353,6 +457,10 @@
353457 <RemoteDir>res\drawable-xlarge</RemoteDir>
354458 <Operation>1</Operation>
355459 </Platform>
460+ <Platform Name="Android64">
461+ <RemoteDir>res\drawable-xlarge</RemoteDir>
462+ <Operation>1</Operation>
463+ </Platform>
356464 </DeployClass>
357465 <DeployClass Name="Android_Strings">
358466 <Platform Name="Android">
@@ -359,6 +467,10 @@
359467 <RemoteDir>res\values</RemoteDir>
360468 <Operation>1</Operation>
361469 </Platform>
470+ <Platform Name="Android64">
471+ <RemoteDir>res\values</RemoteDir>
472+ <Operation>1</Operation>
473+ </Platform>
362474 </DeployClass>
363475 <DeployClass Name="DebugSymbols">
364476 <Platform Name="iOSSimulator">
@@ -447,6 +559,9 @@
447559 <Platform Name="Android">
448560 <Operation>0</Operation>
449561 </Platform>
562+ <Platform Name="Android64">
563+ <Operation>0</Operation>
564+ </Platform>
450565 <Platform Name="iOSDevice32">
451566 <Operation>0</Operation>
452567 </Platform>
@@ -780,6 +895,9 @@
780895 <Platform Name="Android">
781896 <Operation>1</Operation>
782897 </Platform>
898+ <Platform Name="Android64">
899+ <Operation>1</Operation>
900+ </Platform>
783901 </DeployClass>
784902 <DeployClass Name="ProjectiOSDeviceDebug">
785903 <Platform Name="iOSDevice32">
@@ -872,6 +990,10 @@
872990 <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
873991 <Operation>1</Operation>
874992 </Platform>
993+ <Platform Name="Android64">
994+ <RemoteDir>library\lib\arm64-v8a</RemoteDir>
995+ <Operation>1</Operation>
996+ </Platform>
875997 <Platform Name="iOSDevice32">
876998 <Operation>1</Operation>
877999 </Platform>
@@ -896,6 +1018,12 @@
8961018 <Operation>0</Operation>
8971019 </Platform>
8981020 </DeployClass>
1021+ <DeployClass Name="ProjectOutput_Android32">
1022+ <Platform Name="Android64">
1023+ <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
1024+ <Operation>1</Operation>
1025+ </Platform>
1026+ </DeployClass>
8991027 <DeployClass Name="ProjectUWPManifest">
9001028 <Platform Name="Win32">
9011029 <Operation>1</Operation>
@@ -933,6 +1061,7 @@
9331061 <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
9341062 <ProjectRoot Platform="OSX64" Name="$(PROJECTNAME).app"/>
9351063 <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
1064+ <ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
9361065 </Deployment>
9371066 <Platforms>
9381067 <Platform value="Win32">True</Platform>
--- trunk/utl/TESTADOR/src/UPrincipal.pas (revision 498)
+++ trunk/utl/TESTADOR/src/UPrincipal.pas (revision 499)
@@ -5,8 +5,7 @@
55 uses
66 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
77 Dialogs, StdCtrls, Menus, Mask, ComCtrls, ExtCtrls, ActnPopup,
8- KRK.Components.StandardControls.GroupBox, KRK.Components.StandardControls.Panel,
9- Tabs, Vcl.PlatformDefaultStyleActnCtrls;
8+ KRK.Vcl.StdCtrls, Tabs, Vcl.PlatformDefaultStyleActnCtrls, ActnCtrls;
109
1110 type
1211 TForm8 = class(TForm)
@@ -115,6 +114,7 @@
115114 EDITParams: TEdit;
116115 PANEGetStringCheckSum2: TPanel;
117116 BUTNGetFileCheckSum: TButton;
117+ Panel3: TPanel;
118118 procedure BUTNGetStringCheckSumClick(Sender: TObject);
119119 procedure MNUIPackagesCreationToolClick(Sender: TObject);
120120 procedure MNUITranslationManagerClick(Sender: TObject);
@@ -150,6 +150,7 @@
150150 private
151151 { Private declarations }
152152 MM: TMainMenu;
153+ PM: TPopUpMenu;
153154 procedure HandleOnNewLine(AProcessHandle: THandle; AThreadHandle: THandle; const ALine: String);
154155 public
155156 { Public declarations }
@@ -161,10 +162,10 @@
161162 implementation
162163
163164 uses
164- KRK.Lib.Rtl.Common.ComponentUtils, KRK.Lib.Rtl.Win.CNG.Utilities, KRK.Lib.Rtl.Win.WinCrypt, WinInet,
165- SOAPHTTPTrans, KRK.Lib.Rtl.Win.CryptUIApi, KRK.Lib.Rtl.Win.WinInet.Utilities,
166- DateUtils, EncdDecd, HTTPApp, KRK.Lib.Rtl.Sys.System, KRK.Lib.Rtl.Win.WinCrypt.Utilities,
167- KRK.Lib.Vcl.Forms.FormBlender2, UFormInterno, XMLIntf, XMLDoc, KRK.Lib.Rtl.Sys.Utilities;
165+ KRK.Rtl.Common.ComponentUtils, KRK.Rtl.Win.CNG.Utilities, KRK.Rtl.Win.WinCrypt, WinInet,
166+ SOAPHTTPTrans, KRK.Rtl.Win.CryptUIApi, KRK.Rtl.Win.WinInet.Utilities,
167+ DateUtils, EncdDecd, HTTPApp, KRK.Rtl.Sys.System, KRK.Rtl.Win.WinCrypt.Utilities,
168+ KRK.Vcl.Forms.FormBlender, UFormInterno, XMLIntf, XMLDoc, KRK.Rtl.Sys.Utilities;
168169
169170 {$R *.dfm}
170171
@@ -563,6 +564,8 @@
563564 begin
564565 CloneMainMenu(MAME,MM);
565566 Menu := MM;
567+ ClonePopUpMenu(PPABContents,PM);
568+ Panel3.PopupMenu := PM;
566569 end;
567570
568571 procedure TForm8.BUTN4Click(Sender: TObject);
@@ -579,7 +582,7 @@
579582
580583 procedure TForm8.BUTNFormBlenderModalClick(Sender: TObject);
581584 begin
582- case TKRKFormBlender2.ShowMe(Self,TFORMInterno) of
585+ case TKRKFormBlender.ShowMe(Self,TFORMInterno) of
583586 mrOk: ShowMessage('OK');
584587 mrCancel: ShowMessage('Cancelar');
585588 else
@@ -589,9 +592,9 @@
589592
590593 procedure TForm8.BUTNFormBlenderNormalClick(Sender: TObject);
591594 var
592- FB: TKRKFormBlender2;
595+ FB: TKRKFormBlender;
593596 begin
594- TKRKFormBlender2.ShowMe(Self,TFORMInterno, FB);
597+ TKRKFormBlender.ShowMe(Self,TFORMInterno, FB);
595598 FB.WaitForInternalForm; // é necessário porque o FormInterno é criado de forma assíncrona
596599 TFormInterno(FB.InternalFormInstance).LABE1.Caption := 'Este form só deve ser fechado pela aplicação chamadora. No caso, você vai ter que fechar a aplicação de forma forçada, porque eu não fiz nada que pudesse fechar esse form ahahah';
597600 TFormInterno(FB.InternalFormInstance).BUTNAll.Hide;
Show on old repository browser