• R/O
  • SSH
  • HTTPS

akdf: Commit


Commit MetaInfo

Revision498 (tree)
Time2020-02-27 23:26:21
Authorderekwildstar

Log Message

KX.Notifiers possui erros e codificações temporárias
KRKLib atualizado com duas novas units KRK.ToolsAPI.Utilities.pas e KRK.Vcl.Menus.pas
Início da modificação em KRK.Rtl.Common.ComponentUtils.pas para tentar melhorar as rotinas de clonagem de menus
Comentários adicionados em KRK.ToolsApi.Components.EditServicesNotifier.pas
Lista de ignorância atualizada

Change Summary

Incremental Difference

--- trunk/dtp/Experts/prj/Delphi 26 (Delphi Rio)/KRKExperts.dproj (revision 497)
+++ trunk/dtp/Experts/prj/Delphi 26 (Delphi Rio)/KRKExperts.dproj (revision 498)
@@ -5,7 +5,7 @@
55 <FrameworkType>VCL</FrameworkType>
66 <MainSource>KRKExperts.dpr</MainSource>
77 <Base>True</Base>
8- <Config Condition="'$(Config)'==''">Release</Config>
8+ <Config Condition="'$(Config)'==''">Debug</Config>
99 <Platform Condition="'$(Platform)'==''">Win32</Platform>
1010 <TargetedPlatforms>1</TargetedPlatforms>
1111 <AppType>Library</AppType>
@@ -242,10 +242,6 @@
242242 <RemoteDir>classes</RemoteDir>
243243 <Operation>1</Operation>
244244 </Platform>
245- <Platform Name="Android64">
246- <RemoteDir>classes</RemoteDir>
247- <Operation>1</Operation>
248- </Platform>
249245 </DeployClass>
250246 <DeployClass Name="AndroidFileProvider">
251247 <Platform Name="Android">
@@ -252,10 +248,6 @@
252248 <RemoteDir>res\xml</RemoteDir>
253249 <Operation>1</Operation>
254250 </Platform>
255- <Platform Name="Android64">
256- <RemoteDir>res\xml</RemoteDir>
257- <Operation>1</Operation>
258- </Platform>
259251 </DeployClass>
260252 <DeployClass Name="AndroidGDBServer">
261253 <Platform Name="Android">
@@ -268,10 +260,6 @@
268260 <RemoteDir>library\lib\armeabi</RemoteDir>
269261 <Operation>1</Operation>
270262 </Platform>
271- <Platform Name="Android64">
272- <RemoteDir>library\lib\armeabi</RemoteDir>
273- <Operation>1</Operation>
274- </Platform>
275263 </DeployClass>
276264 <DeployClass Name="AndroidLibnativeArmeabiv7aFile">
277265 <Platform Name="Android64">
@@ -284,10 +272,6 @@
284272 <RemoteDir>library\lib\mips</RemoteDir>
285273 <Operation>1</Operation>
286274 </Platform>
287- <Platform Name="Android64">
288- <RemoteDir>library\lib\mips</RemoteDir>
289- <Operation>1</Operation>
290- </Platform>
291275 </DeployClass>
292276 <DeployClass Name="AndroidServiceOutput">
293277 <Platform Name="Android">
@@ -294,10 +278,6 @@
294278 <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
295279 <Operation>1</Operation>
296280 </Platform>
297- <Platform Name="Android64">
298- <RemoteDir>library\lib\arm64-v8a</RemoteDir>
299- <Operation>1</Operation>
300- </Platform>
301281 </DeployClass>
302282 <DeployClass Name="AndroidServiceOutput_Android32">
303283 <Platform Name="Android64">
@@ -310,10 +290,6 @@
310290 <RemoteDir>res\drawable</RemoteDir>
311291 <Operation>1</Operation>
312292 </Platform>
313- <Platform Name="Android64">
314- <RemoteDir>res\drawable</RemoteDir>
315- <Operation>1</Operation>
316- </Platform>
317293 </DeployClass>
318294 <DeployClass Name="AndroidSplashStyles">
319295 <Platform Name="Android">
@@ -320,10 +296,6 @@
320296 <RemoteDir>res\values</RemoteDir>
321297 <Operation>1</Operation>
322298 </Platform>
323- <Platform Name="Android64">
324- <RemoteDir>res\values</RemoteDir>
325- <Operation>1</Operation>
326- </Platform>
327299 </DeployClass>
328300 <DeployClass Name="AndroidSplashStylesV21">
329301 <Platform Name="Android">
@@ -330,10 +302,6 @@
330302 <RemoteDir>res\values-v21</RemoteDir>
331303 <Operation>1</Operation>
332304 </Platform>
333- <Platform Name="Android64">
334- <RemoteDir>res\values-v21</RemoteDir>
335- <Operation>1</Operation>
336- </Platform>
337305 </DeployClass>
338306 <DeployClass Name="Android_Colors">
339307 <Platform Name="Android">
@@ -340,10 +308,6 @@
340308 <RemoteDir>res\values</RemoteDir>
341309 <Operation>1</Operation>
342310 </Platform>
343- <Platform Name="Android64">
344- <RemoteDir>res\values</RemoteDir>
345- <Operation>1</Operation>
346- </Platform>
347311 </DeployClass>
348312 <DeployClass Name="Android_DefaultAppIcon">
349313 <Platform Name="Android">
@@ -350,10 +314,6 @@
350314 <RemoteDir>res\drawable</RemoteDir>
351315 <Operation>1</Operation>
352316 </Platform>
353- <Platform Name="Android64">
354- <RemoteDir>res\drawable</RemoteDir>
355- <Operation>1</Operation>
356- </Platform>
357317 </DeployClass>
358318 <DeployClass Name="Android_LauncherIcon144">
359319 <Platform Name="Android">
@@ -360,10 +320,6 @@
360320 <RemoteDir>res\drawable-xxhdpi</RemoteDir>
361321 <Operation>1</Operation>
362322 </Platform>
363- <Platform Name="Android64">
364- <RemoteDir>res\drawable-xxhdpi</RemoteDir>
365- <Operation>1</Operation>
366- </Platform>
367323 </DeployClass>
368324 <DeployClass Name="Android_LauncherIcon36">
369325 <Platform Name="Android">
@@ -370,10 +326,6 @@
370326 <RemoteDir>res\drawable-ldpi</RemoteDir>
371327 <Operation>1</Operation>
372328 </Platform>
373- <Platform Name="Android64">
374- <RemoteDir>res\drawable-ldpi</RemoteDir>
375- <Operation>1</Operation>
376- </Platform>
377329 </DeployClass>
378330 <DeployClass Name="Android_LauncherIcon48">
379331 <Platform Name="Android">
@@ -380,10 +332,6 @@
380332 <RemoteDir>res\drawable-mdpi</RemoteDir>
381333 <Operation>1</Operation>
382334 </Platform>
383- <Platform Name="Android64">
384- <RemoteDir>res\drawable-mdpi</RemoteDir>
385- <Operation>1</Operation>
386- </Platform>
387335 </DeployClass>
388336 <DeployClass Name="Android_LauncherIcon72">
389337 <Platform Name="Android">
@@ -390,10 +338,6 @@
390338 <RemoteDir>res\drawable-hdpi</RemoteDir>
391339 <Operation>1</Operation>
392340 </Platform>
393- <Platform Name="Android64">
394- <RemoteDir>res\drawable-hdpi</RemoteDir>
395- <Operation>1</Operation>
396- </Platform>
397341 </DeployClass>
398342 <DeployClass Name="Android_LauncherIcon96">
399343 <Platform Name="Android">
@@ -400,10 +344,6 @@
400344 <RemoteDir>res\drawable-xhdpi</RemoteDir>
401345 <Operation>1</Operation>
402346 </Platform>
403- <Platform Name="Android64">
404- <RemoteDir>res\drawable-xhdpi</RemoteDir>
405- <Operation>1</Operation>
406- </Platform>
407347 </DeployClass>
408348 <DeployClass Name="Android_NotificationIcon24">
409349 <Platform Name="Android">
@@ -410,10 +350,6 @@
410350 <RemoteDir>res\drawable-mdpi</RemoteDir>
411351 <Operation>1</Operation>
412352 </Platform>
413- <Platform Name="Android64">
414- <RemoteDir>res\drawable-mdpi</RemoteDir>
415- <Operation>1</Operation>
416- </Platform>
417353 </DeployClass>
418354 <DeployClass Name="Android_NotificationIcon36">
419355 <Platform Name="Android">
@@ -420,10 +356,6 @@
420356 <RemoteDir>res\drawable-hdpi</RemoteDir>
421357 <Operation>1</Operation>
422358 </Platform>
423- <Platform Name="Android64">
424- <RemoteDir>res\drawable-hdpi</RemoteDir>
425- <Operation>1</Operation>
426- </Platform>
427359 </DeployClass>
428360 <DeployClass Name="Android_NotificationIcon48">
429361 <Platform Name="Android">
@@ -430,10 +362,6 @@
430362 <RemoteDir>res\drawable-xhdpi</RemoteDir>
431363 <Operation>1</Operation>
432364 </Platform>
433- <Platform Name="Android64">
434- <RemoteDir>res\drawable-xhdpi</RemoteDir>
435- <Operation>1</Operation>
436- </Platform>
437365 </DeployClass>
438366 <DeployClass Name="Android_NotificationIcon72">
439367 <Platform Name="Android">
@@ -440,10 +368,6 @@
440368 <RemoteDir>res\drawable-xxhdpi</RemoteDir>
441369 <Operation>1</Operation>
442370 </Platform>
443- <Platform Name="Android64">
444- <RemoteDir>res\drawable-xxhdpi</RemoteDir>
445- <Operation>1</Operation>
446- </Platform>
447371 </DeployClass>
448372 <DeployClass Name="Android_NotificationIcon96">
449373 <Platform Name="Android">
@@ -450,10 +374,6 @@
450374 <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
451375 <Operation>1</Operation>
452376 </Platform>
453- <Platform Name="Android64">
454- <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
455- <Operation>1</Operation>
456- </Platform>
457377 </DeployClass>
458378 <DeployClass Name="Android_SplashImage426">
459379 <Platform Name="Android">
@@ -460,10 +380,6 @@
460380 <RemoteDir>res\drawable-small</RemoteDir>
461381 <Operation>1</Operation>
462382 </Platform>
463- <Platform Name="Android64">
464- <RemoteDir>res\drawable-small</RemoteDir>
465- <Operation>1</Operation>
466- </Platform>
467383 </DeployClass>
468384 <DeployClass Name="Android_SplashImage470">
469385 <Platform Name="Android">
@@ -470,10 +386,6 @@
470386 <RemoteDir>res\drawable-normal</RemoteDir>
471387 <Operation>1</Operation>
472388 </Platform>
473- <Platform Name="Android64">
474- <RemoteDir>res\drawable-normal</RemoteDir>
475- <Operation>1</Operation>
476- </Platform>
477389 </DeployClass>
478390 <DeployClass Name="Android_SplashImage640">
479391 <Platform Name="Android">
@@ -480,10 +392,6 @@
480392 <RemoteDir>res\drawable-large</RemoteDir>
481393 <Operation>1</Operation>
482394 </Platform>
483- <Platform Name="Android64">
484- <RemoteDir>res\drawable-large</RemoteDir>
485- <Operation>1</Operation>
486- </Platform>
487395 </DeployClass>
488396 <DeployClass Name="Android_SplashImage960">
489397 <Platform Name="Android">
@@ -490,10 +398,6 @@
490398 <RemoteDir>res\drawable-xlarge</RemoteDir>
491399 <Operation>1</Operation>
492400 </Platform>
493- <Platform Name="Android64">
494- <RemoteDir>res\drawable-xlarge</RemoteDir>
495- <Operation>1</Operation>
496- </Platform>
497401 </DeployClass>
498402 <DeployClass Name="Android_Strings">
499403 <Platform Name="Android">
@@ -500,10 +404,6 @@
500404 <RemoteDir>res\values</RemoteDir>
501405 <Operation>1</Operation>
502406 </Platform>
503- <Platform Name="Android64">
504- <RemoteDir>res\values</RemoteDir>
505- <Operation>1</Operation>
506- </Platform>
507407 </DeployClass>
508408 <DeployClass Name="DebugSymbols">
509409 <Platform Name="iOSSimulator">
@@ -573,9 +473,6 @@
573473 <Platform Name="Android">
574474 <Operation>0</Operation>
575475 </Platform>
576- <Platform Name="Android64">
577- <Operation>0</Operation>
578- </Platform>
579476 <Platform Name="iOSDevice32">
580477 <Operation>0</Operation>
581478 </Platform>
@@ -907,9 +804,6 @@
907804 <Platform Name="Android">
908805 <Operation>1</Operation>
909806 </Platform>
910- <Platform Name="Android64">
911- <Operation>1</Operation>
912- </Platform>
913807 </DeployClass>
914808 <DeployClass Name="ProjectiOSDeviceDebug">
915809 <Platform Name="iOSDevice32">
@@ -953,10 +847,6 @@
953847 <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
954848 <Operation>1</Operation>
955849 </Platform>
956- <Platform Name="Android64">
957- <RemoteDir>library\lib\arm64-v8a</RemoteDir>
958- <Operation>1</Operation>
959- </Platform>
960850 <Platform Name="iOSDevice32">
961851 <Operation>1</Operation>
962852 </Platform>
--- trunk/dtp/Experts/src/D14+/KX.Notifiers.pas (revision 497)
+++ trunk/dtp/Experts/src/D14+/KX.Notifiers.pas (revision 498)
@@ -24,6 +24,8 @@
2424 MNUITranslationTools: TMenuItem;
2525 MNUITranslationManager: TMenuItem;
2626 MNUIN1: TMenuItem;
27+ PopupMenu1: TPopupMenu;
28+ estando1231: TMenuItem;
2729 procedure KESNEditorViewActivated(const AEditWindow: INTAEditWindow; const AEditView: IOTAEditView);
2830 procedure KESNWindowNotification(const AEditWindow: INTAEditWindow; AOperation: TOperation);
2931 procedure KIDNFileNotification(ANotifyCode: TOTAFileNotification; const AFileName: string; var ACancel: Boolean);
@@ -30,6 +32,11 @@
3032 procedure KPMNAddMenu(const AProject: IOTAProject; const AIdentList: TStrings; const AProjectManagerMenuList: IInterfaceList; const AIsMultiSelect: Boolean);
3133 procedure MNUIPackagesCreationToolClick(Sender: TObject);
3234 procedure MNUITranslationManagerClick(Sender: TObject);
35+ procedure KESNWindowShow(const AEditWindow: INTAEditWindow; AShow,
36+ ALoadedFromDesktop: Boolean);
37+ procedure estando1231Click(Sender: TObject);
38+ procedure PopupMenu1Popup(Sender: TObject);
39+ procedure KESNWindowActivated(const AEditWindow: INTAEditWindow);
3340 private
3441 { Private declarations }
3542 procedure CreateLanguagePanel(AStatusBar: TStatusBar);
@@ -46,8 +53,10 @@
4653 , Controls
4754 , StdCtrls
4855 , Graphics
56+ , KRK.Vcl.Menus
4957 , KRK.ToolsApi.Components.Utilities
5058 , KRK.ToolsApi
59+ , KRK.ToolsApi.Utilities
5160 , KX.PackagesCreator
5261 , KX.TranslationManager
5362 , KX.TranslationManager.Utilities
@@ -226,6 +235,11 @@
226235 UpdateLanguageInfo(AEditWindow.StatusBar,'Este arquivo não tem um projeto aberto na IDE');
227236 end;
228237
238+procedure TDAMONotifiers.KESNWindowActivated(const AEditWindow: INTAEditWindow);
239+begin
240+ OutputDebugString('zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz');
241+end;
242+
229243 procedure TDAMONotifiers.KESNWindowNotification(const AEditWindow: INTAEditWindow; AOperation: TOperation);
230244 begin
231245 if AOperation = opInsert then
@@ -232,6 +246,34 @@
232246 CreateLanguagePanel(AEditWindow.StatusBar);
233247 end;
234248
249+// A codificação a partir daqui deve ser feita de forma que seja possivel
250+// gerenciar vários popups menus diferentes aqui, apenas um menu está sendo
251+// gerenciado. Criar um componente que gerencie ao mesmo tempo todos os menus
252+// popup (TKRKEditWindowPopUps). Este componente será no estilo TOpenDialog, que
253+// simplesmente é um wrapper a ser usado de forma visual para configurar, mas
254+// precisa ser ativado via código (TOpenDialog.Execute), chame os métodos de
255+// hook/unhook ou attach/dettach. Talvez seja bom criar estes métodos para cada
256+// menu individualmente. Isso são só ideias, pois não parece ser possível
257+// gerenciar mais de uma modificação, a não ser criando várias instâncias deste
258+// componente :/. Talvez seja melhor criar uma função individual pra cada menu,
259+// passando por parâmetro o menu adicional com seu onpopup
260+
261+type
262+ TCustomControlProtectedHack = class(TCustomControl);
263+
264+procedure TDAMONotifiers.estando1231Click(Sender: TObject);
265+begin
266+ Application.MessageBox('Deu certo!','Eita!',0);
267+end;
268+
269+procedure TDAMONotifiers.KESNWindowShow(const AEditWindow: INTAEditWindow; AShow, ALoadedFromDesktop: Boolean);
270+begin
271+ if AShow then
272+ HookEditWindowFormPopUpMenu(AEditWindow.Form.Name,PopupMenu1,TCustomControlProtectedHack(GetEditWindowFormComponents(AEditWindow).TabControl).PopupMenu)
273+ else
274+ UnHookEditWindowFormPopUpMenu(AEditWindow.Form.Name);
275+end;
276+
235277 procedure TDAMONotifiers.KIDNFileNotification(ANotifyCode: TOTAFileNotification; const AFileName: string; var ACancel: Boolean);
236278 begin
237279 if Assigned(GetINTAEditorServices.TopEditWindow) and (GetINTAEditorServices.TopEditWindow.StatusBar.ComponentCount = 1) then
@@ -312,4 +354,39 @@
312354 TFormTranslationManager.ShowMe;
313355 end;
314356
357+procedure TDAMONotifiers.PopupMenu1Popup(Sender: TObject);
358+//var
359+// RttiType: TRttiType;
360+// RttiProperty: TRttiProperty;
361+// TabIndex: Integer;
362+// Items: TStringList;
363+begin
364+// with TRttiContext.Create do
365+// try
366+// RttiType := GetType(TPopUpMenu(Sender).PopupComponent.ClassInfo);
367+//
368+// RttiProperty := RttiType.GetProperty('TabIndex');
369+// TabIndex := RttiProperty.GetValue(TPopUpMenu(Sender).PopupComponent).AsInteger;
370+//
371+// RttiProperty := RttiType.GetProperty('Items');
372+// Items := TStringList(RttiProperty.GetValue(TPopUpMenu(Sender).PopupComponent).AsObject);
373+//
374+// if Items[TabIndex] <> 'Welcome Page' then
375+// if not Assigned(TPopUpMenu(Sender).Items.Find('Testando: 1, 2, 3!')) then
376+// TPopUpMenu(Sender).Items.Add(NewOwnedItem(TPopUpMenu(Sender)
377+// ,estando1231.Caption
378+// ,estando1231.ShortCut
379+// ,estando1231.Checked
380+// ,estando1231.Enabled
381+// ,estando1231.OnClick
382+// ,estando1231.HelpContext
383+// ,estando1231.Name));
384+//
385+//
386+//
387+// finally
388+// Free;
389+// end;
390+end;
391+
315392 end.
--- trunk/rtp/prj/Delphi 26 (Delphi Rio)/KRKLib.dpk (revision 497)
+++ trunk/rtp/prj/Delphi 26 (Delphi Rio)/KRKLib.dpk (revision 498)
@@ -141,6 +141,8 @@
141141 KRK.ToolsApi.Components.IDEMainMenu.Editors in '..\..\src\ToolsAPI\Components\KRK.ToolsApi.Components.IDEMainMenu.Editors.pas',
142142 KRK.Vcl.ComCtrls.Editors in '..\..\src\Vcl\KRK.Vcl.ComCtrls.Editors.pas',
143143 KRK.Vcl.ExtCtrls.Editors in '..\..\src\Vcl\KRK.Vcl.ExtCtrls.Editors.pas',
144- KRK.ToolsApi.Editors.RTFLabel.CaptionEditor in '..\..\src\ToolsAPI\Editors\KRK.ToolsApi.Editors.RTFLabel.CaptionEditor.pas' {FormRTFLabelCaptionEditor};
144+ KRK.ToolsApi.Editors.RTFLabel.CaptionEditor in '..\..\src\ToolsAPI\Editors\KRK.ToolsApi.Editors.RTFLabel.CaptionEditor.pas' {FormRTFLabelCaptionEditor},
145+ KRK.Vcl.Menus in '..\..\src\Vcl\KRK.Vcl.Menus.pas',
146+ KRK.ToolsAPI.Utilities in '..\..\src\ToolsAPI\KRK.ToolsAPI.Utilities.pas';
145147
146148 end.
--- trunk/rtp/prj/Delphi 26 (Delphi Rio)/KRKLib.dproj (revision 497)
+++ trunk/rtp/prj/Delphi 26 (Delphi Rio)/KRKLib.dproj (revision 498)
@@ -165,6 +165,8 @@
165165 <Form>FormRTFLabelCaptionEditor</Form>
166166 <FormType>dfm</FormType>
167167 </DCCReference>
168+ <DCCReference Include="..\..\src\Vcl\KRK.Vcl.Menus.pas"/>
169+ <DCCReference Include="..\..\src\ToolsAPI\KRK.ToolsAPI.Utilities.pas"/>
168170 <BuildConfiguration Include="Base">
169171 <Key>Base</Key>
170172 </BuildConfiguration>
@@ -266,10 +268,6 @@
266268 <RemoteDir>classes</RemoteDir>
267269 <Operation>1</Operation>
268270 </Platform>
269- <Platform Name="Android64">
270- <RemoteDir>classes</RemoteDir>
271- <Operation>1</Operation>
272- </Platform>
273271 </DeployClass>
274272 <DeployClass Name="AndroidFileProvider">
275273 <Platform Name="Android">
@@ -276,10 +274,6 @@
276274 <RemoteDir>res\xml</RemoteDir>
277275 <Operation>1</Operation>
278276 </Platform>
279- <Platform Name="Android64">
280- <RemoteDir>res\xml</RemoteDir>
281- <Operation>1</Operation>
282- </Platform>
283277 </DeployClass>
284278 <DeployClass Name="AndroidGDBServer">
285279 <Platform Name="Android">
@@ -292,10 +286,6 @@
292286 <RemoteDir>library\lib\armeabi</RemoteDir>
293287 <Operation>1</Operation>
294288 </Platform>
295- <Platform Name="Android64">
296- <RemoteDir>library\lib\armeabi</RemoteDir>
297- <Operation>1</Operation>
298- </Platform>
299289 </DeployClass>
300290 <DeployClass Name="AndroidLibnativeArmeabiv7aFile">
301291 <Platform Name="Android64">
@@ -308,10 +298,6 @@
308298 <RemoteDir>library\lib\mips</RemoteDir>
309299 <Operation>1</Operation>
310300 </Platform>
311- <Platform Name="Android64">
312- <RemoteDir>library\lib\mips</RemoteDir>
313- <Operation>1</Operation>
314- </Platform>
315301 </DeployClass>
316302 <DeployClass Name="AndroidServiceOutput">
317303 <Platform Name="Android">
@@ -318,10 +304,6 @@
318304 <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
319305 <Operation>1</Operation>
320306 </Platform>
321- <Platform Name="Android64">
322- <RemoteDir>library\lib\arm64-v8a</RemoteDir>
323- <Operation>1</Operation>
324- </Platform>
325307 </DeployClass>
326308 <DeployClass Name="AndroidServiceOutput_Android32">
327309 <Platform Name="Android64">
@@ -334,10 +316,6 @@
334316 <RemoteDir>res\drawable</RemoteDir>
335317 <Operation>1</Operation>
336318 </Platform>
337- <Platform Name="Android64">
338- <RemoteDir>res\drawable</RemoteDir>
339- <Operation>1</Operation>
340- </Platform>
341319 </DeployClass>
342320 <DeployClass Name="AndroidSplashStyles">
343321 <Platform Name="Android">
@@ -344,10 +322,6 @@
344322 <RemoteDir>res\values</RemoteDir>
345323 <Operation>1</Operation>
346324 </Platform>
347- <Platform Name="Android64">
348- <RemoteDir>res\values</RemoteDir>
349- <Operation>1</Operation>
350- </Platform>
351325 </DeployClass>
352326 <DeployClass Name="AndroidSplashStylesV21">
353327 <Platform Name="Android">
@@ -354,10 +328,6 @@
354328 <RemoteDir>res\values-v21</RemoteDir>
355329 <Operation>1</Operation>
356330 </Platform>
357- <Platform Name="Android64">
358- <RemoteDir>res\values-v21</RemoteDir>
359- <Operation>1</Operation>
360- </Platform>
361331 </DeployClass>
362332 <DeployClass Name="Android_Colors">
363333 <Platform Name="Android">
@@ -364,10 +334,6 @@
364334 <RemoteDir>res\values</RemoteDir>
365335 <Operation>1</Operation>
366336 </Platform>
367- <Platform Name="Android64">
368- <RemoteDir>res\values</RemoteDir>
369- <Operation>1</Operation>
370- </Platform>
371337 </DeployClass>
372338 <DeployClass Name="Android_DefaultAppIcon">
373339 <Platform Name="Android">
@@ -374,10 +340,6 @@
374340 <RemoteDir>res\drawable</RemoteDir>
375341 <Operation>1</Operation>
376342 </Platform>
377- <Platform Name="Android64">
378- <RemoteDir>res\drawable</RemoteDir>
379- <Operation>1</Operation>
380- </Platform>
381343 </DeployClass>
382344 <DeployClass Name="Android_LauncherIcon144">
383345 <Platform Name="Android">
@@ -384,10 +346,6 @@
384346 <RemoteDir>res\drawable-xxhdpi</RemoteDir>
385347 <Operation>1</Operation>
386348 </Platform>
387- <Platform Name="Android64">
388- <RemoteDir>res\drawable-xxhdpi</RemoteDir>
389- <Operation>1</Operation>
390- </Platform>
391349 </DeployClass>
392350 <DeployClass Name="Android_LauncherIcon36">
393351 <Platform Name="Android">
@@ -394,10 +352,6 @@
394352 <RemoteDir>res\drawable-ldpi</RemoteDir>
395353 <Operation>1</Operation>
396354 </Platform>
397- <Platform Name="Android64">
398- <RemoteDir>res\drawable-ldpi</RemoteDir>
399- <Operation>1</Operation>
400- </Platform>
401355 </DeployClass>
402356 <DeployClass Name="Android_LauncherIcon48">
403357 <Platform Name="Android">
@@ -404,10 +358,6 @@
404358 <RemoteDir>res\drawable-mdpi</RemoteDir>
405359 <Operation>1</Operation>
406360 </Platform>
407- <Platform Name="Android64">
408- <RemoteDir>res\drawable-mdpi</RemoteDir>
409- <Operation>1</Operation>
410- </Platform>
411361 </DeployClass>
412362 <DeployClass Name="Android_LauncherIcon72">
413363 <Platform Name="Android">
@@ -414,10 +364,6 @@
414364 <RemoteDir>res\drawable-hdpi</RemoteDir>
415365 <Operation>1</Operation>
416366 </Platform>
417- <Platform Name="Android64">
418- <RemoteDir>res\drawable-hdpi</RemoteDir>
419- <Operation>1</Operation>
420- </Platform>
421367 </DeployClass>
422368 <DeployClass Name="Android_LauncherIcon96">
423369 <Platform Name="Android">
@@ -424,10 +370,6 @@
424370 <RemoteDir>res\drawable-xhdpi</RemoteDir>
425371 <Operation>1</Operation>
426372 </Platform>
427- <Platform Name="Android64">
428- <RemoteDir>res\drawable-xhdpi</RemoteDir>
429- <Operation>1</Operation>
430- </Platform>
431373 </DeployClass>
432374 <DeployClass Name="Android_NotificationIcon24">
433375 <Platform Name="Android">
@@ -434,10 +376,6 @@
434376 <RemoteDir>res\drawable-mdpi</RemoteDir>
435377 <Operation>1</Operation>
436378 </Platform>
437- <Platform Name="Android64">
438- <RemoteDir>res\drawable-mdpi</RemoteDir>
439- <Operation>1</Operation>
440- </Platform>
441379 </DeployClass>
442380 <DeployClass Name="Android_NotificationIcon36">
443381 <Platform Name="Android">
@@ -444,10 +382,6 @@
444382 <RemoteDir>res\drawable-hdpi</RemoteDir>
445383 <Operation>1</Operation>
446384 </Platform>
447- <Platform Name="Android64">
448- <RemoteDir>res\drawable-hdpi</RemoteDir>
449- <Operation>1</Operation>
450- </Platform>
451385 </DeployClass>
452386 <DeployClass Name="Android_NotificationIcon48">
453387 <Platform Name="Android">
@@ -454,10 +388,6 @@
454388 <RemoteDir>res\drawable-xhdpi</RemoteDir>
455389 <Operation>1</Operation>
456390 </Platform>
457- <Platform Name="Android64">
458- <RemoteDir>res\drawable-xhdpi</RemoteDir>
459- <Operation>1</Operation>
460- </Platform>
461391 </DeployClass>
462392 <DeployClass Name="Android_NotificationIcon72">
463393 <Platform Name="Android">
@@ -464,10 +394,6 @@
464394 <RemoteDir>res\drawable-xxhdpi</RemoteDir>
465395 <Operation>1</Operation>
466396 </Platform>
467- <Platform Name="Android64">
468- <RemoteDir>res\drawable-xxhdpi</RemoteDir>
469- <Operation>1</Operation>
470- </Platform>
471397 </DeployClass>
472398 <DeployClass Name="Android_NotificationIcon96">
473399 <Platform Name="Android">
@@ -474,10 +400,6 @@
474400 <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
475401 <Operation>1</Operation>
476402 </Platform>
477- <Platform Name="Android64">
478- <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
479- <Operation>1</Operation>
480- </Platform>
481403 </DeployClass>
482404 <DeployClass Name="Android_SplashImage426">
483405 <Platform Name="Android">
@@ -484,10 +406,6 @@
484406 <RemoteDir>res\drawable-small</RemoteDir>
485407 <Operation>1</Operation>
486408 </Platform>
487- <Platform Name="Android64">
488- <RemoteDir>res\drawable-small</RemoteDir>
489- <Operation>1</Operation>
490- </Platform>
491409 </DeployClass>
492410 <DeployClass Name="Android_SplashImage470">
493411 <Platform Name="Android">
@@ -494,10 +412,6 @@
494412 <RemoteDir>res\drawable-normal</RemoteDir>
495413 <Operation>1</Operation>
496414 </Platform>
497- <Platform Name="Android64">
498- <RemoteDir>res\drawable-normal</RemoteDir>
499- <Operation>1</Operation>
500- </Platform>
501415 </DeployClass>
502416 <DeployClass Name="Android_SplashImage640">
503417 <Platform Name="Android">
@@ -504,10 +418,6 @@
504418 <RemoteDir>res\drawable-large</RemoteDir>
505419 <Operation>1</Operation>
506420 </Platform>
507- <Platform Name="Android64">
508- <RemoteDir>res\drawable-large</RemoteDir>
509- <Operation>1</Operation>
510- </Platform>
511421 </DeployClass>
512422 <DeployClass Name="Android_SplashImage960">
513423 <Platform Name="Android">
@@ -514,10 +424,6 @@
514424 <RemoteDir>res\drawable-xlarge</RemoteDir>
515425 <Operation>1</Operation>
516426 </Platform>
517- <Platform Name="Android64">
518- <RemoteDir>res\drawable-xlarge</RemoteDir>
519- <Operation>1</Operation>
520- </Platform>
521427 </DeployClass>
522428 <DeployClass Name="Android_Strings">
523429 <Platform Name="Android">
@@ -524,10 +430,6 @@
524430 <RemoteDir>res\values</RemoteDir>
525431 <Operation>1</Operation>
526432 </Platform>
527- <Platform Name="Android64">
528- <RemoteDir>res\values</RemoteDir>
529- <Operation>1</Operation>
530- </Platform>
531433 </DeployClass>
532434 <DeployClass Name="DebugSymbols">
533435 <Platform Name="iOSSimulator">
@@ -597,9 +499,6 @@
597499 <Platform Name="Android">
598500 <Operation>0</Operation>
599501 </Platform>
600- <Platform Name="Android64">
601- <Operation>0</Operation>
602- </Platform>
603502 <Platform Name="iOSDevice32">
604503 <Operation>0</Operation>
605504 </Platform>
@@ -931,9 +830,6 @@
931830 <Platform Name="Android">
932831 <Operation>1</Operation>
933832 </Platform>
934- <Platform Name="Android64">
935- <Operation>1</Operation>
936- </Platform>
937833 </DeployClass>
938834 <DeployClass Name="ProjectiOSDeviceDebug">
939835 <Platform Name="iOSDevice32">
@@ -977,10 +873,6 @@
977873 <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
978874 <Operation>1</Operation>
979875 </Platform>
980- <Platform Name="Android64">
981- <RemoteDir>library\lib\arm64-v8a</RemoteDir>
982- <Operation>1</Operation>
983- </Platform>
984876 <Platform Name="iOSDevice32">
985877 <Operation>1</Operation>
986878 </Platform>
--- trunk/rtp/src/Rtl/Common/KRK.Rtl.Common.ComponentUtils.pas (revision 497)
+++ trunk/rtp/src/Rtl/Common/KRK.Rtl.Common.ComponentUtils.pas (revision 498)
@@ -124,19 +124,20 @@
124124 end;
125125 //-/////////////////////////////////////////////////////////////////////////////
126126 var
127- MenuItemSource: TMenuItem;
128- MenuItemDestination: TMenuItem;
127+ SMI: TMenuItem; // Source Menu Item
128+ DMI: TMenuItem; // Destination Menu Item
129129 begin
130130 if Assigned(ADestinationMainMenu) then
131131 ADestinationMainMenu.Free;
132132
133+ //
133134 ADestinationMainMenu := TMainMenu.Create(ASourceMainMenu.Owner);
134135
135- for MenuItemSource in ASourceMainMenu.Items do
136+ for SMI in ASourceMainMenu.Items do
136137 begin
137- MenuItemDestination := CloneMenuItem(MenuItemSource);
138- ADestinationMainMenu.Items.Add(MenuItemDestination);
139- GoInside(MenuItemSource,MenuItemDestination);
138+ DMI := CloneMenuItem(SMI);
139+ ADestinationMainMenu.Items.Add(DMI);
140+ GoInside(SMI,DMI);
140141 end;
141142 end;
142143
--- trunk/rtp/src/ToolsAPI/Components/KRK.ToolsApi.Components.EditServicesNotifier.pas (revision 497)
+++ trunk/rtp/src/ToolsAPI/Components/KRK.ToolsApi.Components.EditServicesNotifier.pas (revision 498)
@@ -18,10 +18,27 @@
1818 TOnWindowNotification = procedure (const AEditWindow: INTAEditWindow; AOperation: TOperation) of object;
1919 TOnWindowShow = procedure (const AEditWindow: INTAEditWindow; AShow: Boolean; ALoadedFromDesktop: Boolean) of object;
2020
21- // A interface IOTAEditorNotifier não funciona, por isso ela foi removida. Não
22- // testei para saber se ela funciona em Delphis mais antigos, porém a
23- // interface INTAEditServicesNotifier funciona no Delphi 2006 e sendo assim
24- // ela substitui com vantagem a interface IOTAEditorNotifier
21+ // Para que a interface IOTAEditorNotifier possa ser registrada, é necessária
22+ // uma instância de IOTAEditor, o qual possui um método AddNotifier
23+ // responsável pelo registro. IOTAEditor NÃO É uma interface global disponível
24+ // desde a inicialização da IDE, mas sim uma interface que depende diretamente
25+ // de arquivos abertos, portanto, para conseguir uma instância de IOTAEditor é
26+ // necessário utilizar outros notificadores, como por exemplo, o
27+ // TKRKOTAIDENotifier. Este notificador possui um evento OnFileNotification
28+ // que é disparado com ações relativas a arquivos abertos, onde um dos
29+ // parâmetros do seu manipulador é o caminho completo do arquivo em questão.
30+ // De posse desse nome, utiliza-se a função "GetIOTAModuleFromFileName" para
31+ // obter o IOTAModule correspondente ao arquivo. A partir do IOTAModule é
32+ // possível varrer a lista de IOTAEditores associados (propriedade
33+ // ModuleFileEditors) e assim, para cada um deles, executar o método
34+ // AddNotifier. Isso é apenas uma forma de fazer. Devem haver outros
35+ // notificadores que consigam, em algum ponto, fornecer um IOTAEditor um, no
36+ // caso, uma lista deles. No futuro, caso seja útil um componente em cima de
37+ // IOTAEditorNotifier, crie propriedades para conectá-lo a outros editores
38+ // (como o TKRKOTAIDENotifier) de forma que tudo o que foi explicado aqui,
39+ // ocorra automaticamente. A interface INTAEditServicesNotifier (abaixo)
40+ // funciona no Delphi 2006 e aparentemente ela substitui com vantagem a
41+ // interface IOTAEditorNotifier
2542
2643 //: Classe do componente que implementa a interface INTAEditServicesNotifier
2744 TKRKCustomNTAEditServicesNotifier = class(TKRKOTANotifier
@@ -43,6 +60,9 @@
4360 procedure DockFormVisibleChanged(const EditWindow: INTAEditWindow; DockForm: TDockableForm);
4461 procedure EditorViewActivated(const EditWindow: INTAEditWindow; const EditView: IOTAEditView);
4562 procedure EditorViewModified(const EditWindow: INTAEditWindow; const EditView: IOTAEditView);
63+ // O procedure abaixo parece nunca ser executado, portanto, o evento
64+ // OnWindowActivated não funciona. Eu não sei se o fato de eu estar
65+ // manipulando algo no OnEditorViewActivated, anula esta evento
4666 procedure WindowActivated(const EditWindow: INTAEditWindow);
4767 procedure WindowCommand(const EditWindow: INTAEditWindow; Command: Integer; Param: Integer; var Handled: Boolean);
4868 procedure WindowNotification(const EditWindow: INTAEditWindow; Operation: TOperation);
@@ -53,6 +73,14 @@
5373 property OnDockFormRefresh: TOnDockFormRefresh read FOnDockFormRefresh write FOnDockFormRefresh;
5474 property OnDockFormUpdated: TOnDockFormUpdated read FOnDockFormUpdated write FOnDockFormUpdated;
5575 property OnDockFormVisibleChanged: TOnDockFormVisibleChanged read FOnDockFormVisibleChanged write FOnDockFormVisibleChanged;
76+ //: Este evento é executado sempre que uma visão de edição é ativada. Cada
77+ //: IOTAModule pode ter de 1 a 3 IOTAEditView que são alteradas por meio do
78+ //: TabSet existente na parte inferior da jenela de edição. Este evento
79+ //: também é disparado quando se alterna entre IOTAModules (usando o TabSet
80+ //: do topo da janela de edição), como consequência de haver um novo
81+ //: IOTAEditView sendo ativado. Este evento não é disparado quando a tela
82+ //: de boas vindas do delphi é exibida porque esta tela não possui nenhum
83+ //: IOTAModule e consequentemenet nenhum IOTAEditView
5684 property OnEditorViewActivated: TOnEditorViewActivated read FOnEditorViewActivated write FOnEditorViewActivated;
5785 property OnEditorViewModified: TOnEditorViewModified read FOnEditorViewModified write FOnEditorViewModified;
5886 property OnWindowActivated: TOnWindowActivated read FOnWindowActivated write FOnWindowActivated;
--- trunk/rtp/src/ToolsAPI/KRK.ToolsAPI.Utilities.pas (nonexistent)
+++ trunk/rtp/src/ToolsAPI/KRK.ToolsAPI.Utilities.pas (revision 498)
@@ -0,0 +1,179 @@
1+unit KRK.ToolsAPI.Utilities;
2+
3+interface
4+
5+uses Menus
6+ , Classes
7+ , Controls
8+ , Tabs
9+ , ToolsApi;
10+
11+type
12+ TEditWindowFormPopUpMenuHook = class
13+ private
14+ FAddOnPopUpMenu: TPopUpMenu;
15+ FOriginalPopUpMenu: TPopUpMenu;
16+ FOriginalDoPopup: TNotifyEvent;
17+ FEditWindowFormName: String;
18+ procedure DoPopUp(ASender: TObject);
19+ public
20+ constructor Create(AEditWindowFormName: String; AAddOnPopUpMenu: TPopUpMenu; AOriginalPopUpMenu: TPopUpMenu);
21+ destructor Destroy; override;
22+ // Supostamente único dentre todas as janelas de edição abertas na mesma
23+ // instância do Delphi
24+ property EditWindowFormName: String read FEditWindowFormName;
25+ end;
26+
27+ TEditWindowFormComponents = record
28+ // Abas no topo da janela do editor
29+ // No Delphi Rio:
30+ // TCustomControl->TGradientTabSet->TIDEGradientTabSet (Components[20])
31+ TabControl: TCustomControl;
32+ // Abas na parte inferior da janela de edição
33+ // No Delphi Rio:
34+ // TTabSet (Components[41])
35+ ViewBar: TTabSet;
36+ // Editor de código, reutilizado por cada IOTAEditor, de cada IOTAModule
37+ // No Delphi Rio:
38+ // TCustomControl->TCustomEditControl->TEditControl (Components[90])
39+ Editor: TCustomControl
40+ end;
41+
42+function GetEditWindowFormComponents(AEditWindow: INTAEditWindow): TEditWindowFormComponents;
43+//: Use esta função para obter o caption da aba selecionada tanto no TabSet
44+//: superior da janela de edição, como no inferior. O superior é um
45+//: TIDEGradientTabSet e o inferior é um TTabSet propriamente dito
46+function GetActiveTabCaption(ATabControl: TCustomControl): String;
47+procedure HookEditWindowFormPopUpMenu(AEditWindowFormName: String; AAddOnPopUpMenu: TPopUpMenu; AOriginalPopUpMenu: TPopUpMenu);
48+procedure UnHookEditWindowFormPopUpMenu(AEditWindowFormName: String);
49+
50+implementation
51+
52+uses Contnrs
53+ , Rtti;
54+
55+var
56+ HookedPopUpMenus: TObjectList = nil;
57+
58+function GetEditWindowFormComponents(AEditWindow: INTAEditWindow): TEditWindowFormComponents;
59+begin
60+ Result.TabControl := TCustomControl(AEditWindow.Form.Components[20]);
61+ Result.ViewBar := TTabSet(AEditWindow.Form.Components[41]);
62+ Result.Editor := TCustomControl(AEditWindow.Form.Components[90]);
63+end;
64+
65+function GetActiveTabCaption(ATabControl: TCustomControl): String;
66+var
67+ RttiType: TRttiType;
68+ RttiProperty: TRttiProperty;
69+ TabIndex: Integer;
70+ Items: TStringList;
71+begin
72+ with TRttiContext.Create do
73+ try
74+ RttiType := GetType(ATabControl.ClassInfo);
75+
76+ RttiProperty := RttiType.GetProperty('TabIndex');
77+ TabIndex := RttiProperty.GetValue(ATabControl).AsInteger;
78+
79+ RttiProperty := RttiType.GetProperty('Items');
80+ Items := TStringList(RttiProperty.GetValue(ATabControl).AsObject);
81+
82+ Result := Items[TabIndex];
83+ finally
84+ Free;
85+ end;
86+end;
87+
88+procedure HookEditWindowFormPopUpMenu(AEditWindowFormName: String; AAddOnPopUpMenu: TPopUpMenu; AOriginalPopUpMenu: TPopUpMenu);
89+var
90+ O: TObject;
91+begin
92+ if not Assigned(HookedPopUpMenus) then
93+ HookedPopUpMenus := TObjectList.Create;
94+
95+ for O in HookedPopUpMenus do
96+ if TEditWindowFormPopUpMenuHook(O).EditWindowFormName = AEditWindowFormName then
97+ Exit;
98+
99+ HookedPopUpMenus.Add(TEditWindowFormPopUpMenuHook.Create(AEditWindowFormName,AAddOnPopUpMenu,AOriginalPopUpMenu));
100+end;
101+
102+procedure UnHookEditWindowFormPopUpMenu(AEditWindowFormName: String);
103+var
104+ O: TObject;
105+begin
106+ if Assigned(HookedPopUpMenus) then
107+ for O in HookedPopUpMenus do
108+ if TEditWindowFormPopUpMenuHook(O).EditWindowFormName = AEditWindowFormName then
109+ begin
110+ HookedPopUpMenus.Remove(O);
111+ Exit;
112+ end;
113+end;
114+
115+{ TEditWindowFormPopUpMenuHook }
116+
117+constructor TEditWindowFormPopUpMenuHook.Create(AEditWindowFormName: String; AAddOnPopUpMenu: TPopUpMenu; AOriginalPopUpMenu: TPopUpMenu);
118+begin
119+ FEditWindowFormName := AEditWindowFormName;
120+ FAddOnPopUpMenu := AAddOnPopUpMenu;
121+ FOriginalPopUpMenu := AOriginalPopUpMenu;
122+ // Realiza o desvio do evento OnPopUp original
123+ FOriginalDoPopup := FOriginalPopUpMenu.OnPopup;
124+ FOriginalPopUpMenu.OnPopup := DoPopUp;
125+end;
126+
127+destructor TEditWindowFormPopUpMenuHook.Destroy;
128+begin
129+ FOriginalPopUpMenu.OnPopup := FOriginalDoPopup;
130+
131+ inherited;
132+end;
133+
134+procedure TEditWindowFormPopUpMenuHook.DoPopUp(ASender: TObject);
135+var
136+ MI: TMenuItem;
137+begin
138+ // 1. Remove todos os menus adicionais. Todos os itens de menu adicionais tem
139+ // Tag = -1, portanto, varre-se todo o menu original e remove todos aqueles
140+ // que possuem este tag. A remoção deixa o item de menu órfão, então
141+ // colocamos este item de menu no menu adicional. A operação de remoção não
142+ // exclui o item de menu, apenas o move de volta para o menu adicional,
143+ // para que, posteriormente ele seja readicionado. Isso evita ter de criar
144+ // instâncias adicionais de TMenuItem a cada OnPopUp além de permitir que
145+ // estruturas inteiras de menus e submenus sejam adicionadas!
146+ for MI in FOriginalPopUpMenu.Items do
147+ begin
148+ if MI.Tag = -1 then
149+ begin
150+ FOriginalPopUpMenu.Items.Remove(MI);
151+ FAddOnPopUpMenu.Items.Add(MI);
152+ end;
153+ end;
154+ // 2. Executa o manipulador do evento OnPopUp original. Neste manipulador os
155+ // itens originais do menu são adicionados/manipulados pela IDE. Não
156+ // executar isso faz com que o menu original nunca apareça
157+ FOriginalDoPopup(ASender);
158+ // 3. Adiciona todos os menus contidos em FAddOnPopUpMenu, mas apenas se a aba
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
161+ if GetActiveTabCaption(TCustomControl(TPopUpMenu(ASender).PopupComponent)) <> 'Welcome Page' then
162+ while FAddOnPopUpMenu.Items.Count > 0 do
163+ begin
164+ MI := FAddOnPopUpMenu.Items[0];
165+ MI.Tag := -1;
166+
167+ FAddOnPopUpMenu.Items.Remove(MI);
168+ FOriginalPopUpMenu.Items.Add(MI);
169+ end;
170+end;
171+
172+initialization
173+
174+finalization
175+
176+if Assigned(HookedPopUpMenus) then
177+ HookedPopUpMenus.Free;
178+
179+end.
--- trunk/rtp/src/Vcl/KRK.Vcl.Menus.pas (nonexistent)
+++ trunk/rtp/src/Vcl/KRK.Vcl.Menus.pas (revision 498)
@@ -0,0 +1,29 @@
1+unit KRK.Vcl.Menus;
2+{$IF CompilerVersion >= 25}{$LEGACYIFEND ON}{$IFEND} { Delphi XE4 }
3+interface
4+
5+uses Menus
6+ , Classes;
7+
8+function NewOwnedItem(AOwner: TComponent; const ACaption: string; AShortCut: TShortCut; AChecked, AEnabled: Boolean; AOnClick: TNotifyEvent; hCtx: THelpContext; const AName: string): TMenuItem;
9+
10+implementation
11+
12+function NewOwnedItem(AOwner: TComponent; const ACaption: string; AShortCut: TShortCut; AChecked, AEnabled: Boolean; AOnClick: TNotifyEvent; hCtx: THelpContext; const AName: string): TMenuItem;
13+begin
14+ Result := TMenuItem.Create(AOwner);
15+
16+ with Result do
17+ begin
18+ Caption := ACaption;
19+ ShortCut := AShortCut;
20+ OnClick := AOnClick;
21+ HelpContext := hCtx;
22+ Checked := AChecked;
23+ Enabled := AEnabled;
24+ Name := AName;
25+ end;
26+end;
27+
28+
29+end.
Show on old repository browser