|
![]() |
#1 |
Участник
|
На роль базового класса может подойти SysSetupFormRun. Только постого способа выключить в нём эти ShortCut нет (я, по крайней мере, такого не знаю). Прийдётся перед открытием формы (например в методе init) пробежаться по всему дизайну и выключить это свойство у всех найденных кнопок. Но что делать с кнопками, которые могут добавляться на форму динамически я не знаю.
|
|
![]() |
#2 |
Участник
|
Ну, собственно говоря, я тоже другого лучше ничего не нашел. Поэтому кому не нужна эта "своеобразная нумерация" кнопок и пунктов меню :
В классе SysSetupFormRun создаете свой метод void HideShortCut() { int i, j; Object control; Object subcontrol; boolean doit = true; void setHideShortCut(Object _control) { switch (_control.handle()) { case classnum(FormBuildFunctionButtonControl): case classnum(FormBuildButtonControl): case classnum(FormBuildCommandButtonControl): case classnum(FormBuildMenuButtonControl): _control.ShowShortCut(NoYes::No); break; default: break; } } void setHideShortCutContainer(Object _control) { int y; Object _subcontrol; Object _subsubcontrol; for (y=1; y <=_control.controlCount(); y++) { _subcontrol = _control.controlNum(y); if (_subcontrol.isContainer()) { switch (_subcontrol.handle()) { case classnum(FormBuildMenuButtonControl): _subcontrol.ShowShortCut(NoYes::No); case classnum(FormBuildButtonGroupControl): for (j=1; j<=_subcontrol.controlCount(); j++) { _subsubcontrol = _subcontrol.controlNum(j); setHideShortCut(_subsubcontrol); } break; default : setHideShortCutContainer(_subcontrol); break; } } else setHideShortCut(_subcontrol); } } ; for (i=1; i <= this.form().design().controlCount(); i++) { control = this.form().design().controlNum(i); if (control.isContainer()) { switch (control.handle()) { case classnum(FormBuildMenuButtonControl): control.ShowShortCut(NoYes::No); case classnum(FormBuildButtonGroupControl): for (j=1; j<=control.controlCount(); j++) { subcontrol = control.controlNum(j); setHideShortCut(subcontrol); } break; default: setHideShortCutContainer(control); break; } } else setHideShortCut(control); } } затем в методе init этого класса в самом начале ставите this.HideShortCut(); все кнопки будут обозваны нормально. |
|