Revision | 499 (tree) |
---|---|
Time | 2020-02-28 03:59:07 |
Author | ![]() |
Novas sub-rotinas e melhorias nas sub-rotinas existentes na unit KRK.Rtl.Common.ComponentUtils
Testador atualizado para testar a nova sub-rotina ClonePopUpMenu
@@ -2,7 +2,7 @@ | ||
2 | 2 | <PropertyGroup> |
3 | 3 | <ProjectGuid>{2F538A1F-0BE4-4FA9-B625-B73709CC43EA}</ProjectGuid> |
4 | 4 | <MainSource>KRKExpertsD.dpk</MainSource> |
5 | - <ProjectVersion>18.7</ProjectVersion> | |
5 | + <ProjectVersion>18.8</ProjectVersion> | |
6 | 6 | <FrameworkType>VCL</FrameworkType> |
7 | 7 | <Base>True</Base> |
8 | 8 | <Config Condition="'$(Config)'==''">Base</Config> |
@@ -158,6 +158,10 @@ | ||
158 | 158 | <RemoteDir>classes</RemoteDir> |
159 | 159 | <Operation>1</Operation> |
160 | 160 | </Platform> |
161 | + <Platform Name="Android64"> | |
162 | + <RemoteDir>classes</RemoteDir> | |
163 | + <Operation>1</Operation> | |
164 | + </Platform> | |
161 | 165 | </DeployClass> |
162 | 166 | <DeployClass Name="AndroidFileProvider"> |
163 | 167 | <Platform Name="Android"> |
@@ -164,6 +168,10 @@ | ||
164 | 168 | <RemoteDir>res\xml</RemoteDir> |
165 | 169 | <Operation>1</Operation> |
166 | 170 | </Platform> |
171 | + <Platform Name="Android64"> | |
172 | + <RemoteDir>res\xml</RemoteDir> | |
173 | + <Operation>1</Operation> | |
174 | + </Platform> | |
167 | 175 | </DeployClass> |
168 | 176 | <DeployClass Name="AndroidGDBServer"> |
169 | 177 | <Platform Name="Android"> |
@@ -176,12 +184,26 @@ | ||
176 | 184 | <RemoteDir>library\lib\armeabi</RemoteDir> |
177 | 185 | <Operation>1</Operation> |
178 | 186 | </Platform> |
187 | + <Platform Name="Android64"> | |
188 | + <RemoteDir>library\lib\armeabi</RemoteDir> | |
189 | + <Operation>1</Operation> | |
190 | + </Platform> | |
179 | 191 | </DeployClass> |
192 | + <DeployClass Name="AndroidLibnativeArmeabiv7aFile"> | |
193 | + <Platform Name="Android64"> | |
194 | + <RemoteDir>library\lib\armeabi-v7a</RemoteDir> | |
195 | + <Operation>1</Operation> | |
196 | + </Platform> | |
197 | + </DeployClass> | |
180 | 198 | <DeployClass Name="AndroidLibnativeMipsFile"> |
181 | 199 | <Platform Name="Android"> |
182 | 200 | <RemoteDir>library\lib\mips</RemoteDir> |
183 | 201 | <Operation>1</Operation> |
184 | 202 | </Platform> |
203 | + <Platform Name="Android64"> | |
204 | + <RemoteDir>library\lib\mips</RemoteDir> | |
205 | + <Operation>1</Operation> | |
206 | + </Platform> | |
185 | 207 | </DeployClass> |
186 | 208 | <DeployClass Name="AndroidServiceOutput"> |
187 | 209 | <Platform Name="Android"> |
@@ -188,12 +210,26 @@ | ||
188 | 210 | <RemoteDir>library\lib\armeabi-v7a</RemoteDir> |
189 | 211 | <Operation>1</Operation> |
190 | 212 | </Platform> |
213 | + <Platform Name="Android64"> | |
214 | + <RemoteDir>library\lib\arm64-v8a</RemoteDir> | |
215 | + <Operation>1</Operation> | |
216 | + </Platform> | |
191 | 217 | </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> | |
192 | 224 | <DeployClass Name="AndroidSplashImageDef"> |
193 | 225 | <Platform Name="Android"> |
194 | 226 | <RemoteDir>res\drawable</RemoteDir> |
195 | 227 | <Operation>1</Operation> |
196 | 228 | </Platform> |
229 | + <Platform Name="Android64"> | |
230 | + <RemoteDir>res\drawable</RemoteDir> | |
231 | + <Operation>1</Operation> | |
232 | + </Platform> | |
197 | 233 | </DeployClass> |
198 | 234 | <DeployClass Name="AndroidSplashStyles"> |
199 | 235 | <Platform Name="Android"> |
@@ -200,6 +236,10 @@ | ||
200 | 236 | <RemoteDir>res\values</RemoteDir> |
201 | 237 | <Operation>1</Operation> |
202 | 238 | </Platform> |
239 | + <Platform Name="Android64"> | |
240 | + <RemoteDir>res\values</RemoteDir> | |
241 | + <Operation>1</Operation> | |
242 | + </Platform> | |
203 | 243 | </DeployClass> |
204 | 244 | <DeployClass Name="AndroidSplashStylesV21"> |
205 | 245 | <Platform Name="Android"> |
@@ -206,6 +246,10 @@ | ||
206 | 246 | <RemoteDir>res\values-v21</RemoteDir> |
207 | 247 | <Operation>1</Operation> |
208 | 248 | </Platform> |
249 | + <Platform Name="Android64"> | |
250 | + <RemoteDir>res\values-v21</RemoteDir> | |
251 | + <Operation>1</Operation> | |
252 | + </Platform> | |
209 | 253 | </DeployClass> |
210 | 254 | <DeployClass Name="Android_Colors"> |
211 | 255 | <Platform Name="Android"> |
@@ -212,6 +256,10 @@ | ||
212 | 256 | <RemoteDir>res\values</RemoteDir> |
213 | 257 | <Operation>1</Operation> |
214 | 258 | </Platform> |
259 | + <Platform Name="Android64"> | |
260 | + <RemoteDir>res\values</RemoteDir> | |
261 | + <Operation>1</Operation> | |
262 | + </Platform> | |
215 | 263 | </DeployClass> |
216 | 264 | <DeployClass Name="Android_DefaultAppIcon"> |
217 | 265 | <Platform Name="Android"> |
@@ -218,6 +266,10 @@ | ||
218 | 266 | <RemoteDir>res\drawable</RemoteDir> |
219 | 267 | <Operation>1</Operation> |
220 | 268 | </Platform> |
269 | + <Platform Name="Android64"> | |
270 | + <RemoteDir>res\drawable</RemoteDir> | |
271 | + <Operation>1</Operation> | |
272 | + </Platform> | |
221 | 273 | </DeployClass> |
222 | 274 | <DeployClass Name="Android_LauncherIcon144"> |
223 | 275 | <Platform Name="Android"> |
@@ -224,6 +276,10 @@ | ||
224 | 276 | <RemoteDir>res\drawable-xxhdpi</RemoteDir> |
225 | 277 | <Operation>1</Operation> |
226 | 278 | </Platform> |
279 | + <Platform Name="Android64"> | |
280 | + <RemoteDir>res\drawable-xxhdpi</RemoteDir> | |
281 | + <Operation>1</Operation> | |
282 | + </Platform> | |
227 | 283 | </DeployClass> |
228 | 284 | <DeployClass Name="Android_LauncherIcon36"> |
229 | 285 | <Platform Name="Android"> |
@@ -230,6 +286,10 @@ | ||
230 | 286 | <RemoteDir>res\drawable-ldpi</RemoteDir> |
231 | 287 | <Operation>1</Operation> |
232 | 288 | </Platform> |
289 | + <Platform Name="Android64"> | |
290 | + <RemoteDir>res\drawable-ldpi</RemoteDir> | |
291 | + <Operation>1</Operation> | |
292 | + </Platform> | |
233 | 293 | </DeployClass> |
234 | 294 | <DeployClass Name="Android_LauncherIcon48"> |
235 | 295 | <Platform Name="Android"> |
@@ -236,6 +296,10 @@ | ||
236 | 296 | <RemoteDir>res\drawable-mdpi</RemoteDir> |
237 | 297 | <Operation>1</Operation> |
238 | 298 | </Platform> |
299 | + <Platform Name="Android64"> | |
300 | + <RemoteDir>res\drawable-mdpi</RemoteDir> | |
301 | + <Operation>1</Operation> | |
302 | + </Platform> | |
239 | 303 | </DeployClass> |
240 | 304 | <DeployClass Name="Android_LauncherIcon72"> |
241 | 305 | <Platform Name="Android"> |
@@ -242,6 +306,10 @@ | ||
242 | 306 | <RemoteDir>res\drawable-hdpi</RemoteDir> |
243 | 307 | <Operation>1</Operation> |
244 | 308 | </Platform> |
309 | + <Platform Name="Android64"> | |
310 | + <RemoteDir>res\drawable-hdpi</RemoteDir> | |
311 | + <Operation>1</Operation> | |
312 | + </Platform> | |
245 | 313 | </DeployClass> |
246 | 314 | <DeployClass Name="Android_LauncherIcon96"> |
247 | 315 | <Platform Name="Android"> |
@@ -248,6 +316,10 @@ | ||
248 | 316 | <RemoteDir>res\drawable-xhdpi</RemoteDir> |
249 | 317 | <Operation>1</Operation> |
250 | 318 | </Platform> |
319 | + <Platform Name="Android64"> | |
320 | + <RemoteDir>res\drawable-xhdpi</RemoteDir> | |
321 | + <Operation>1</Operation> | |
322 | + </Platform> | |
251 | 323 | </DeployClass> |
252 | 324 | <DeployClass Name="Android_NotificationIcon24"> |
253 | 325 | <Platform Name="Android"> |
@@ -254,6 +326,10 @@ | ||
254 | 326 | <RemoteDir>res\drawable-mdpi</RemoteDir> |
255 | 327 | <Operation>1</Operation> |
256 | 328 | </Platform> |
329 | + <Platform Name="Android64"> | |
330 | + <RemoteDir>res\drawable-mdpi</RemoteDir> | |
331 | + <Operation>1</Operation> | |
332 | + </Platform> | |
257 | 333 | </DeployClass> |
258 | 334 | <DeployClass Name="Android_NotificationIcon36"> |
259 | 335 | <Platform Name="Android"> |
@@ -260,6 +336,10 @@ | ||
260 | 336 | <RemoteDir>res\drawable-hdpi</RemoteDir> |
261 | 337 | <Operation>1</Operation> |
262 | 338 | </Platform> |
339 | + <Platform Name="Android64"> | |
340 | + <RemoteDir>res\drawable-hdpi</RemoteDir> | |
341 | + <Operation>1</Operation> | |
342 | + </Platform> | |
263 | 343 | </DeployClass> |
264 | 344 | <DeployClass Name="Android_NotificationIcon48"> |
265 | 345 | <Platform Name="Android"> |
@@ -266,6 +346,10 @@ | ||
266 | 346 | <RemoteDir>res\drawable-xhdpi</RemoteDir> |
267 | 347 | <Operation>1</Operation> |
268 | 348 | </Platform> |
349 | + <Platform Name="Android64"> | |
350 | + <RemoteDir>res\drawable-xhdpi</RemoteDir> | |
351 | + <Operation>1</Operation> | |
352 | + </Platform> | |
269 | 353 | </DeployClass> |
270 | 354 | <DeployClass Name="Android_NotificationIcon72"> |
271 | 355 | <Platform Name="Android"> |
@@ -272,6 +356,10 @@ | ||
272 | 356 | <RemoteDir>res\drawable-xxhdpi</RemoteDir> |
273 | 357 | <Operation>1</Operation> |
274 | 358 | </Platform> |
359 | + <Platform Name="Android64"> | |
360 | + <RemoteDir>res\drawable-xxhdpi</RemoteDir> | |
361 | + <Operation>1</Operation> | |
362 | + </Platform> | |
275 | 363 | </DeployClass> |
276 | 364 | <DeployClass Name="Android_NotificationIcon96"> |
277 | 365 | <Platform Name="Android"> |
@@ -278,6 +366,10 @@ | ||
278 | 366 | <RemoteDir>res\drawable-xxxhdpi</RemoteDir> |
279 | 367 | <Operation>1</Operation> |
280 | 368 | </Platform> |
369 | + <Platform Name="Android64"> | |
370 | + <RemoteDir>res\drawable-xxxhdpi</RemoteDir> | |
371 | + <Operation>1</Operation> | |
372 | + </Platform> | |
281 | 373 | </DeployClass> |
282 | 374 | <DeployClass Name="Android_SplashImage426"> |
283 | 375 | <Platform Name="Android"> |
@@ -284,6 +376,10 @@ | ||
284 | 376 | <RemoteDir>res\drawable-small</RemoteDir> |
285 | 377 | <Operation>1</Operation> |
286 | 378 | </Platform> |
379 | + <Platform Name="Android64"> | |
380 | + <RemoteDir>res\drawable-small</RemoteDir> | |
381 | + <Operation>1</Operation> | |
382 | + </Platform> | |
287 | 383 | </DeployClass> |
288 | 384 | <DeployClass Name="Android_SplashImage470"> |
289 | 385 | <Platform Name="Android"> |
@@ -290,6 +386,10 @@ | ||
290 | 386 | <RemoteDir>res\drawable-normal</RemoteDir> |
291 | 387 | <Operation>1</Operation> |
292 | 388 | </Platform> |
389 | + <Platform Name="Android64"> | |
390 | + <RemoteDir>res\drawable-normal</RemoteDir> | |
391 | + <Operation>1</Operation> | |
392 | + </Platform> | |
293 | 393 | </DeployClass> |
294 | 394 | <DeployClass Name="Android_SplashImage640"> |
295 | 395 | <Platform Name="Android"> |
@@ -296,6 +396,10 @@ | ||
296 | 396 | <RemoteDir>res\drawable-large</RemoteDir> |
297 | 397 | <Operation>1</Operation> |
298 | 398 | </Platform> |
399 | + <Platform Name="Android64"> | |
400 | + <RemoteDir>res\drawable-large</RemoteDir> | |
401 | + <Operation>1</Operation> | |
402 | + </Platform> | |
299 | 403 | </DeployClass> |
300 | 404 | <DeployClass Name="Android_SplashImage960"> |
301 | 405 | <Platform Name="Android"> |
@@ -302,6 +406,10 @@ | ||
302 | 406 | <RemoteDir>res\drawable-xlarge</RemoteDir> |
303 | 407 | <Operation>1</Operation> |
304 | 408 | </Platform> |
409 | + <Platform Name="Android64"> | |
410 | + <RemoteDir>res\drawable-xlarge</RemoteDir> | |
411 | + <Operation>1</Operation> | |
412 | + </Platform> | |
305 | 413 | </DeployClass> |
306 | 414 | <DeployClass Name="Android_Strings"> |
307 | 415 | <Platform Name="Android"> |
@@ -308,6 +416,10 @@ | ||
308 | 416 | <RemoteDir>res\values</RemoteDir> |
309 | 417 | <Operation>1</Operation> |
310 | 418 | </Platform> |
419 | + <Platform Name="Android64"> | |
420 | + <RemoteDir>res\values</RemoteDir> | |
421 | + <Operation>1</Operation> | |
422 | + </Platform> | |
311 | 423 | </DeployClass> |
312 | 424 | <DeployClass Name="DebugSymbols"> |
313 | 425 | <Platform Name="iOSSimulator"> |
@@ -377,6 +489,9 @@ | ||
377 | 489 | <Platform Name="Android"> |
378 | 490 | <Operation>0</Operation> |
379 | 491 | </Platform> |
492 | + <Platform Name="Android64"> | |
493 | + <Operation>0</Operation> | |
494 | + </Platform> | |
380 | 495 | <Platform Name="iOSDevice32"> |
381 | 496 | <Operation>0</Operation> |
382 | 497 | </Platform> |
@@ -664,6 +779,9 @@ | ||
664 | 779 | <Platform Name="Android"> |
665 | 780 | <Operation>1</Operation> |
666 | 781 | </Platform> |
782 | + <Platform Name="Android64"> | |
783 | + <Operation>1</Operation> | |
784 | + </Platform> | |
667 | 785 | </DeployClass> |
668 | 786 | <DeployClass Name="ProjectiOSDeviceDebug"> |
669 | 787 | <Platform Name="iOSDevice32"> |
@@ -707,6 +825,10 @@ | ||
707 | 825 | <RemoteDir>library\lib\armeabi-v7a</RemoteDir> |
708 | 826 | <Operation>1</Operation> |
709 | 827 | </Platform> |
828 | + <Platform Name="Android64"> | |
829 | + <RemoteDir>library\lib\arm64-v8a</RemoteDir> | |
830 | + <Operation>1</Operation> | |
831 | + </Platform> | |
710 | 832 | <Platform Name="iOSDevice32"> |
711 | 833 | <Operation>1</Operation> |
712 | 834 | </Platform> |
@@ -729,6 +851,12 @@ | ||
729 | 851 | <Operation>0</Operation> |
730 | 852 | </Platform> |
731 | 853 | </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> | |
732 | 860 | <DeployClass Name="ProjectUWPManifest"> |
733 | 861 | <Platform Name="Win32"> |
734 | 862 | <Operation>1</Operation> |
@@ -766,6 +894,7 @@ | ||
766 | 894 | <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/> |
767 | 895 | <ProjectRoot Platform="OSX64" Name="$(PROJECTNAME)"/> |
768 | 896 | <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/> |
897 | + <ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/> | |
769 | 898 | </Deployment> |
770 | 899 | <Platforms> |
771 | 900 | <Platform value="Win32">True</Platform> |
@@ -2,12 +2,32 @@ | ||
2 | 2 | |
3 | 3 | interface |
4 | 4 | |
5 | -uses Menus; | |
5 | +uses Menus | |
6 | + , Classes; | |
6 | 7 | |
7 | 8 | { 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; | |
11 | 31 | function FindMenuItem(AMainMenu: TMainMenu; AName: String): TMenuItem; overload; |
12 | 32 | function FindMenuItem(ARootMenuItem: TMenuItem; AName: String): TMenuItem; overload; |
13 | 33 |
@@ -26,6 +46,9 @@ | ||
26 | 46 | uses |
27 | 47 | SysUtils; |
28 | 48 | |
49 | +var | |
50 | + CloneNumber: Cardinal = 0; | |
51 | + | |
29 | 52 | function FindMenuItem(AMainMenu: TMainMenu; AName: String): TMenuItem; |
30 | 53 | //-///////////////////////////////////////////////////////////////////////////// |
31 | 54 | function GoInside(AMenuItem: TMenuItem): TMenuItem; |
@@ -90,60 +113,69 @@ | ||
90 | 113 | Result := GoInside(ARootMenuItem); |
91 | 114 | end; |
92 | 115 | |
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 | |
96 | 120 | 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 | |
99 | 138 | 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); | |
110 | 141 | end; |
111 | 142 | end; |
112 | 143 | |
113 | -procedure GoInside(AMenuItemSource: TMenuItem; AMenuItemDestination: TMenuItem); | |
144 | +procedure ClonePopUpMenu(ASourcePopUpMenu: TPopUpMenu; out ADestinationPopUpMenu: TPopUpMenu; AOwner: TComponent = nil); | |
114 | 145 | 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 | |
127 | 146 | SMI: TMenuItem; // Source Menu Item |
128 | 147 | DMI: TMenuItem; // Destination Menu Item |
129 | 148 | 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); | |
132 | 154 | |
133 | - // | |
134 | - ADestinationMainMenu := TMainMenu.Create(ASourceMainMenu.Owner); | |
155 | + Inc(CloneNumber); | |
156 | + ADestinationPopUpMenu.Name := ASourcePopUpMenu.Name + '_C_' + IntToStr(CloneNumber); | |
135 | 157 | |
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 | |
137 | 166 | begin |
138 | - DMI := CloneMenuItem(SMI); | |
139 | - ADestinationMainMenu.Items.Add(DMI); | |
140 | - GoInside(SMI,DMI); | |
167 | + CloneMenuStructure(SMI,DMI,AOwner); | |
168 | + ADestinationPopUpMenu.Items.Add(DMI); | |
141 | 169 | end; |
142 | 170 | end; |
143 | 171 | |
144 | -function CloneMenuItem(const ASourceMenuItem: TMenuItem): TMenuItem; | |
172 | +function CloneMenuItem(const ASourceMenuItem: TMenuItem; AOwner: TComponent = nil): TMenuItem; | |
145 | 173 | 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 | + | |
147 | 179 | Result.ShortCut := ASourceMenuItem.ShortCut; |
148 | 180 | Result.Caption := ASourceMenuItem.Caption; |
149 | 181 | Result.OnClick := ASourceMenuItem.OnClick; |
@@ -154,15 +186,16 @@ | ||
154 | 186 | Result.RadioItem := ASourceMenuItem.RadioItem; |
155 | 187 | Result.Tag := ASourceMenuItem.Tag; |
156 | 188 | Result.ImageIndex := ASourceMenuItem.ImageIndex; |
157 | - Result.Name := ASourceMenuItem.Name; | |
189 | + Inc(CloneNumber); | |
190 | + Result.Name := ASourceMenuItem.Name + '_C_' + IntToStr(CloneNumber); | |
158 | 191 | end; |
159 | 192 | |
160 | -procedure CloneMenuStructure(ASourceMenu: TMenuItem; out ADestinationMenu: TMenuItem); | |
193 | +procedure CloneMenuStructure(const ASourceMenuItem: TMenuItem; out ADestinationMenuItem: TMenuItem; AOwner: TComponent = nil); | |
161 | 194 | //-///////////////////////////////////////////////////////////////////////////// |
162 | 195 | procedure GoInside(ASourceMenuItem: TMenuItem; ADestinationMenuItem: TMenuItem); |
163 | 196 | var |
164 | 197 | SMI: TMenuItem; // Source Menu Item |
165 | - CMI: TMenuItem; // Cloned Menu Item | |
198 | + DMI: TMenuItem; // Destination Menu Item | |
166 | 199 | begin |
167 | 200 | // Varre cada item de menu (submenu) existente em ASourceMenuItem clonando-os |
168 | 201 | // e adicionando o clone como filho de ADestinationMenuItem, antes de realizar |
@@ -169,18 +202,15 @@ | ||
169 | 202 | // a recursão (GoInside) |
170 | 203 | for SMI in ASourceMenuItem do |
171 | 204 | 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); | |
175 | 208 | end; |
176 | 209 | end; |
177 | 210 | //-///////////////////////////////////////////////////////////////////////////// |
178 | 211 | 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); | |
184 | 214 | end; |
185 | 215 | |
186 | 216 | // uses Classes; |
@@ -157,7 +157,7 @@ | ||
157 | 157 | FOriginalDoPopup(ASender); |
158 | 158 | // 3. Adiciona todos os menus contidos em FAddOnPopUpMenu, mas apenas se a aba |
159 | 159 | // 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 | |
161 | 161 | if GetActiveTabCaption(TCustomControl(TPopUpMenu(ASender).PopupComponent)) <> 'Welcome Page' then |
162 | 162 | while FAddOnPopUpMenu.Items.Count > 0 do |
163 | 163 | begin |
@@ -7,7 +7,7 @@ | ||
7 | 7 | <TargetedPlatforms>1</TargetedPlatforms> |
8 | 8 | <AppType>Application</AppType> |
9 | 9 | <FrameworkType>VCL</FrameworkType> |
10 | - <ProjectVersion>18.7</ProjectVersion> | |
10 | + <ProjectVersion>18.8</ProjectVersion> | |
11 | 11 | <Platform Condition="'$(Platform)'==''">Win32</Platform> |
12 | 12 | </PropertyGroup> |
13 | 13 | <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''"> |
@@ -1,7 +1,7 @@ | ||
1 | 1 | <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
2 | 2 | <PropertyGroup> |
3 | 3 | <ProjectGuid>{72379D89-1A44-4162-BADE-4665225F9C66}</ProjectGuid> |
4 | - <ProjectVersion>18.7</ProjectVersion> | |
4 | + <ProjectVersion>18.8</ProjectVersion> | |
5 | 5 | <FrameworkType>VCL</FrameworkType> |
6 | 6 | <MainSource>Testador.dpr</MainSource> |
7 | 7 | <Base>True</Base> |
@@ -209,6 +209,10 @@ | ||
209 | 209 | <RemoteDir>classes</RemoteDir> |
210 | 210 | <Operation>1</Operation> |
211 | 211 | </Platform> |
212 | + <Platform Name="Android64"> | |
213 | + <RemoteDir>classes</RemoteDir> | |
214 | + <Operation>1</Operation> | |
215 | + </Platform> | |
212 | 216 | </DeployClass> |
213 | 217 | <DeployClass Name="AndroidFileProvider"> |
214 | 218 | <Platform Name="Android"> |
@@ -215,6 +219,10 @@ | ||
215 | 219 | <RemoteDir>res\xml</RemoteDir> |
216 | 220 | <Operation>1</Operation> |
217 | 221 | </Platform> |
222 | + <Platform Name="Android64"> | |
223 | + <RemoteDir>res\xml</RemoteDir> | |
224 | + <Operation>1</Operation> | |
225 | + </Platform> | |
218 | 226 | </DeployClass> |
219 | 227 | <DeployClass Name="AndroidGDBServer"> |
220 | 228 | <Platform Name="Android"> |
@@ -227,12 +235,26 @@ | ||
227 | 235 | <RemoteDir>library\lib\armeabi</RemoteDir> |
228 | 236 | <Operation>1</Operation> |
229 | 237 | </Platform> |
238 | + <Platform Name="Android64"> | |
239 | + <RemoteDir>library\lib\armeabi</RemoteDir> | |
240 | + <Operation>1</Operation> | |
241 | + </Platform> | |
230 | 242 | </DeployClass> |
243 | + <DeployClass Name="AndroidLibnativeArmeabiv7aFile"> | |
244 | + <Platform Name="Android64"> | |
245 | + <RemoteDir>library\lib\armeabi-v7a</RemoteDir> | |
246 | + <Operation>1</Operation> | |
247 | + </Platform> | |
248 | + </DeployClass> | |
231 | 249 | <DeployClass Name="AndroidLibnativeMipsFile"> |
232 | 250 | <Platform Name="Android"> |
233 | 251 | <RemoteDir>library\lib\mips</RemoteDir> |
234 | 252 | <Operation>1</Operation> |
235 | 253 | </Platform> |
254 | + <Platform Name="Android64"> | |
255 | + <RemoteDir>library\lib\mips</RemoteDir> | |
256 | + <Operation>1</Operation> | |
257 | + </Platform> | |
236 | 258 | </DeployClass> |
237 | 259 | <DeployClass Name="AndroidServiceOutput"> |
238 | 260 | <Platform Name="Android"> |
@@ -239,12 +261,26 @@ | ||
239 | 261 | <RemoteDir>library\lib\armeabi-v7a</RemoteDir> |
240 | 262 | <Operation>1</Operation> |
241 | 263 | </Platform> |
264 | + <Platform Name="Android64"> | |
265 | + <RemoteDir>library\lib\arm64-v8a</RemoteDir> | |
266 | + <Operation>1</Operation> | |
267 | + </Platform> | |
242 | 268 | </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> | |
243 | 275 | <DeployClass Name="AndroidSplashImageDef"> |
244 | 276 | <Platform Name="Android"> |
245 | 277 | <RemoteDir>res\drawable</RemoteDir> |
246 | 278 | <Operation>1</Operation> |
247 | 279 | </Platform> |
280 | + <Platform Name="Android64"> | |
281 | + <RemoteDir>res\drawable</RemoteDir> | |
282 | + <Operation>1</Operation> | |
283 | + </Platform> | |
248 | 284 | </DeployClass> |
249 | 285 | <DeployClass Name="AndroidSplashStyles"> |
250 | 286 | <Platform Name="Android"> |
@@ -251,6 +287,10 @@ | ||
251 | 287 | <RemoteDir>res\values</RemoteDir> |
252 | 288 | <Operation>1</Operation> |
253 | 289 | </Platform> |
290 | + <Platform Name="Android64"> | |
291 | + <RemoteDir>res\values</RemoteDir> | |
292 | + <Operation>1</Operation> | |
293 | + </Platform> | |
254 | 294 | </DeployClass> |
255 | 295 | <DeployClass Name="AndroidSplashStylesV21"> |
256 | 296 | <Platform Name="Android"> |
@@ -257,6 +297,10 @@ | ||
257 | 297 | <RemoteDir>res\values-v21</RemoteDir> |
258 | 298 | <Operation>1</Operation> |
259 | 299 | </Platform> |
300 | + <Platform Name="Android64"> | |
301 | + <RemoteDir>res\values-v21</RemoteDir> | |
302 | + <Operation>1</Operation> | |
303 | + </Platform> | |
260 | 304 | </DeployClass> |
261 | 305 | <DeployClass Name="Android_Colors"> |
262 | 306 | <Platform Name="Android"> |
@@ -263,6 +307,10 @@ | ||
263 | 307 | <RemoteDir>res\values</RemoteDir> |
264 | 308 | <Operation>1</Operation> |
265 | 309 | </Platform> |
310 | + <Platform Name="Android64"> | |
311 | + <RemoteDir>res\values</RemoteDir> | |
312 | + <Operation>1</Operation> | |
313 | + </Platform> | |
266 | 314 | </DeployClass> |
267 | 315 | <DeployClass Name="Android_DefaultAppIcon"> |
268 | 316 | <Platform Name="Android"> |
@@ -269,6 +317,10 @@ | ||
269 | 317 | <RemoteDir>res\drawable</RemoteDir> |
270 | 318 | <Operation>1</Operation> |
271 | 319 | </Platform> |
320 | + <Platform Name="Android64"> | |
321 | + <RemoteDir>res\drawable</RemoteDir> | |
322 | + <Operation>1</Operation> | |
323 | + </Platform> | |
272 | 324 | </DeployClass> |
273 | 325 | <DeployClass Name="Android_LauncherIcon144"> |
274 | 326 | <Platform Name="Android"> |
@@ -275,6 +327,10 @@ | ||
275 | 327 | <RemoteDir>res\drawable-xxhdpi</RemoteDir> |
276 | 328 | <Operation>1</Operation> |
277 | 329 | </Platform> |
330 | + <Platform Name="Android64"> | |
331 | + <RemoteDir>res\drawable-xxhdpi</RemoteDir> | |
332 | + <Operation>1</Operation> | |
333 | + </Platform> | |
278 | 334 | </DeployClass> |
279 | 335 | <DeployClass Name="Android_LauncherIcon36"> |
280 | 336 | <Platform Name="Android"> |
@@ -281,6 +337,10 @@ | ||
281 | 337 | <RemoteDir>res\drawable-ldpi</RemoteDir> |
282 | 338 | <Operation>1</Operation> |
283 | 339 | </Platform> |
340 | + <Platform Name="Android64"> | |
341 | + <RemoteDir>res\drawable-ldpi</RemoteDir> | |
342 | + <Operation>1</Operation> | |
343 | + </Platform> | |
284 | 344 | </DeployClass> |
285 | 345 | <DeployClass Name="Android_LauncherIcon48"> |
286 | 346 | <Platform Name="Android"> |
@@ -287,6 +347,10 @@ | ||
287 | 347 | <RemoteDir>res\drawable-mdpi</RemoteDir> |
288 | 348 | <Operation>1</Operation> |
289 | 349 | </Platform> |
350 | + <Platform Name="Android64"> | |
351 | + <RemoteDir>res\drawable-mdpi</RemoteDir> | |
352 | + <Operation>1</Operation> | |
353 | + </Platform> | |
290 | 354 | </DeployClass> |
291 | 355 | <DeployClass Name="Android_LauncherIcon72"> |
292 | 356 | <Platform Name="Android"> |
@@ -293,6 +357,10 @@ | ||
293 | 357 | <RemoteDir>res\drawable-hdpi</RemoteDir> |
294 | 358 | <Operation>1</Operation> |
295 | 359 | </Platform> |
360 | + <Platform Name="Android64"> | |
361 | + <RemoteDir>res\drawable-hdpi</RemoteDir> | |
362 | + <Operation>1</Operation> | |
363 | + </Platform> | |
296 | 364 | </DeployClass> |
297 | 365 | <DeployClass Name="Android_LauncherIcon96"> |
298 | 366 | <Platform Name="Android"> |
@@ -299,6 +367,10 @@ | ||
299 | 367 | <RemoteDir>res\drawable-xhdpi</RemoteDir> |
300 | 368 | <Operation>1</Operation> |
301 | 369 | </Platform> |
370 | + <Platform Name="Android64"> | |
371 | + <RemoteDir>res\drawable-xhdpi</RemoteDir> | |
372 | + <Operation>1</Operation> | |
373 | + </Platform> | |
302 | 374 | </DeployClass> |
303 | 375 | <DeployClass Name="Android_NotificationIcon24"> |
304 | 376 | <Platform Name="Android"> |
@@ -305,6 +377,10 @@ | ||
305 | 377 | <RemoteDir>res\drawable-mdpi</RemoteDir> |
306 | 378 | <Operation>1</Operation> |
307 | 379 | </Platform> |
380 | + <Platform Name="Android64"> | |
381 | + <RemoteDir>res\drawable-mdpi</RemoteDir> | |
382 | + <Operation>1</Operation> | |
383 | + </Platform> | |
308 | 384 | </DeployClass> |
309 | 385 | <DeployClass Name="Android_NotificationIcon36"> |
310 | 386 | <Platform Name="Android"> |
@@ -311,6 +387,10 @@ | ||
311 | 387 | <RemoteDir>res\drawable-hdpi</RemoteDir> |
312 | 388 | <Operation>1</Operation> |
313 | 389 | </Platform> |
390 | + <Platform Name="Android64"> | |
391 | + <RemoteDir>res\drawable-hdpi</RemoteDir> | |
392 | + <Operation>1</Operation> | |
393 | + </Platform> | |
314 | 394 | </DeployClass> |
315 | 395 | <DeployClass Name="Android_NotificationIcon48"> |
316 | 396 | <Platform Name="Android"> |
@@ -317,6 +397,10 @@ | ||
317 | 397 | <RemoteDir>res\drawable-xhdpi</RemoteDir> |
318 | 398 | <Operation>1</Operation> |
319 | 399 | </Platform> |
400 | + <Platform Name="Android64"> | |
401 | + <RemoteDir>res\drawable-xhdpi</RemoteDir> | |
402 | + <Operation>1</Operation> | |
403 | + </Platform> | |
320 | 404 | </DeployClass> |
321 | 405 | <DeployClass Name="Android_NotificationIcon72"> |
322 | 406 | <Platform Name="Android"> |
@@ -323,6 +407,10 @@ | ||
323 | 407 | <RemoteDir>res\drawable-xxhdpi</RemoteDir> |
324 | 408 | <Operation>1</Operation> |
325 | 409 | </Platform> |
410 | + <Platform Name="Android64"> | |
411 | + <RemoteDir>res\drawable-xxhdpi</RemoteDir> | |
412 | + <Operation>1</Operation> | |
413 | + </Platform> | |
326 | 414 | </DeployClass> |
327 | 415 | <DeployClass Name="Android_NotificationIcon96"> |
328 | 416 | <Platform Name="Android"> |
@@ -329,6 +417,10 @@ | ||
329 | 417 | <RemoteDir>res\drawable-xxxhdpi</RemoteDir> |
330 | 418 | <Operation>1</Operation> |
331 | 419 | </Platform> |
420 | + <Platform Name="Android64"> | |
421 | + <RemoteDir>res\drawable-xxxhdpi</RemoteDir> | |
422 | + <Operation>1</Operation> | |
423 | + </Platform> | |
332 | 424 | </DeployClass> |
333 | 425 | <DeployClass Name="Android_SplashImage426"> |
334 | 426 | <Platform Name="Android"> |
@@ -335,6 +427,10 @@ | ||
335 | 427 | <RemoteDir>res\drawable-small</RemoteDir> |
336 | 428 | <Operation>1</Operation> |
337 | 429 | </Platform> |
430 | + <Platform Name="Android64"> | |
431 | + <RemoteDir>res\drawable-small</RemoteDir> | |
432 | + <Operation>1</Operation> | |
433 | + </Platform> | |
338 | 434 | </DeployClass> |
339 | 435 | <DeployClass Name="Android_SplashImage470"> |
340 | 436 | <Platform Name="Android"> |
@@ -341,6 +437,10 @@ | ||
341 | 437 | <RemoteDir>res\drawable-normal</RemoteDir> |
342 | 438 | <Operation>1</Operation> |
343 | 439 | </Platform> |
440 | + <Platform Name="Android64"> | |
441 | + <RemoteDir>res\drawable-normal</RemoteDir> | |
442 | + <Operation>1</Operation> | |
443 | + </Platform> | |
344 | 444 | </DeployClass> |
345 | 445 | <DeployClass Name="Android_SplashImage640"> |
346 | 446 | <Platform Name="Android"> |
@@ -347,6 +447,10 @@ | ||
347 | 447 | <RemoteDir>res\drawable-large</RemoteDir> |
348 | 448 | <Operation>1</Operation> |
349 | 449 | </Platform> |
450 | + <Platform Name="Android64"> | |
451 | + <RemoteDir>res\drawable-large</RemoteDir> | |
452 | + <Operation>1</Operation> | |
453 | + </Platform> | |
350 | 454 | </DeployClass> |
351 | 455 | <DeployClass Name="Android_SplashImage960"> |
352 | 456 | <Platform Name="Android"> |
@@ -353,6 +457,10 @@ | ||
353 | 457 | <RemoteDir>res\drawable-xlarge</RemoteDir> |
354 | 458 | <Operation>1</Operation> |
355 | 459 | </Platform> |
460 | + <Platform Name="Android64"> | |
461 | + <RemoteDir>res\drawable-xlarge</RemoteDir> | |
462 | + <Operation>1</Operation> | |
463 | + </Platform> | |
356 | 464 | </DeployClass> |
357 | 465 | <DeployClass Name="Android_Strings"> |
358 | 466 | <Platform Name="Android"> |
@@ -359,6 +467,10 @@ | ||
359 | 467 | <RemoteDir>res\values</RemoteDir> |
360 | 468 | <Operation>1</Operation> |
361 | 469 | </Platform> |
470 | + <Platform Name="Android64"> | |
471 | + <RemoteDir>res\values</RemoteDir> | |
472 | + <Operation>1</Operation> | |
473 | + </Platform> | |
362 | 474 | </DeployClass> |
363 | 475 | <DeployClass Name="DebugSymbols"> |
364 | 476 | <Platform Name="iOSSimulator"> |
@@ -447,6 +559,9 @@ | ||
447 | 559 | <Platform Name="Android"> |
448 | 560 | <Operation>0</Operation> |
449 | 561 | </Platform> |
562 | + <Platform Name="Android64"> | |
563 | + <Operation>0</Operation> | |
564 | + </Platform> | |
450 | 565 | <Platform Name="iOSDevice32"> |
451 | 566 | <Operation>0</Operation> |
452 | 567 | </Platform> |
@@ -780,6 +895,9 @@ | ||
780 | 895 | <Platform Name="Android"> |
781 | 896 | <Operation>1</Operation> |
782 | 897 | </Platform> |
898 | + <Platform Name="Android64"> | |
899 | + <Operation>1</Operation> | |
900 | + </Platform> | |
783 | 901 | </DeployClass> |
784 | 902 | <DeployClass Name="ProjectiOSDeviceDebug"> |
785 | 903 | <Platform Name="iOSDevice32"> |
@@ -872,6 +990,10 @@ | ||
872 | 990 | <RemoteDir>library\lib\armeabi-v7a</RemoteDir> |
873 | 991 | <Operation>1</Operation> |
874 | 992 | </Platform> |
993 | + <Platform Name="Android64"> | |
994 | + <RemoteDir>library\lib\arm64-v8a</RemoteDir> | |
995 | + <Operation>1</Operation> | |
996 | + </Platform> | |
875 | 997 | <Platform Name="iOSDevice32"> |
876 | 998 | <Operation>1</Operation> |
877 | 999 | </Platform> |
@@ -896,6 +1018,12 @@ | ||
896 | 1018 | <Operation>0</Operation> |
897 | 1019 | </Platform> |
898 | 1020 | </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> | |
899 | 1027 | <DeployClass Name="ProjectUWPManifest"> |
900 | 1028 | <Platform Name="Win32"> |
901 | 1029 | <Operation>1</Operation> |
@@ -933,6 +1061,7 @@ | ||
933 | 1061 | <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/> |
934 | 1062 | <ProjectRoot Platform="OSX64" Name="$(PROJECTNAME).app"/> |
935 | 1063 | <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/> |
1064 | + <ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/> | |
936 | 1065 | </Deployment> |
937 | 1066 | <Platforms> |
938 | 1067 | <Platform value="Win32">True</Platform> |
@@ -5,8 +5,7 @@ | ||
5 | 5 | uses |
6 | 6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, |
7 | 7 | 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; | |
10 | 9 | |
11 | 10 | type |
12 | 11 | TForm8 = class(TForm) |
@@ -115,6 +114,7 @@ | ||
115 | 114 | EDITParams: TEdit; |
116 | 115 | PANEGetStringCheckSum2: TPanel; |
117 | 116 | BUTNGetFileCheckSum: TButton; |
117 | + Panel3: TPanel; | |
118 | 118 | procedure BUTNGetStringCheckSumClick(Sender: TObject); |
119 | 119 | procedure MNUIPackagesCreationToolClick(Sender: TObject); |
120 | 120 | procedure MNUITranslationManagerClick(Sender: TObject); |
@@ -150,6 +150,7 @@ | ||
150 | 150 | private |
151 | 151 | { Private declarations } |
152 | 152 | MM: TMainMenu; |
153 | + PM: TPopUpMenu; | |
153 | 154 | procedure HandleOnNewLine(AProcessHandle: THandle; AThreadHandle: THandle; const ALine: String); |
154 | 155 | public |
155 | 156 | { Public declarations } |
@@ -161,10 +162,10 @@ | ||
161 | 162 | implementation |
162 | 163 | |
163 | 164 | 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; | |
168 | 169 | |
169 | 170 | {$R *.dfm} |
170 | 171 |
@@ -563,6 +564,8 @@ | ||
563 | 564 | begin |
564 | 565 | CloneMainMenu(MAME,MM); |
565 | 566 | Menu := MM; |
567 | + ClonePopUpMenu(PPABContents,PM); | |
568 | + Panel3.PopupMenu := PM; | |
566 | 569 | end; |
567 | 570 | |
568 | 571 | procedure TForm8.BUTN4Click(Sender: TObject); |
@@ -579,7 +582,7 @@ | ||
579 | 582 | |
580 | 583 | procedure TForm8.BUTNFormBlenderModalClick(Sender: TObject); |
581 | 584 | begin |
582 | - case TKRKFormBlender2.ShowMe(Self,TFORMInterno) of | |
585 | + case TKRKFormBlender.ShowMe(Self,TFORMInterno) of | |
583 | 586 | mrOk: ShowMessage('OK'); |
584 | 587 | mrCancel: ShowMessage('Cancelar'); |
585 | 588 | else |
@@ -589,9 +592,9 @@ | ||
589 | 592 | |
590 | 593 | procedure TForm8.BUTNFormBlenderNormalClick(Sender: TObject); |
591 | 594 | var |
592 | - FB: TKRKFormBlender2; | |
595 | + FB: TKRKFormBlender; | |
593 | 596 | begin |
594 | - TKRKFormBlender2.ShowMe(Self,TFORMInterno, FB); | |
597 | + TKRKFormBlender.ShowMe(Self,TFORMInterno, FB); | |
595 | 598 | FB.WaitForInternalForm; // é necessário porque o FormInterno é criado de forma assíncrona |
596 | 599 | 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'; |
597 | 600 | TFormInterno(FB.InternalFormInstance).BUTNAll.Hide; |