隐藏工具栏

导读:
  6 m_bStatusBarWasVisible=(m_wndStatusBar.IsWindowVisible()!=0); 7 m_wndStatusBar.ShowWindow(SW_HIDE);//隐藏状态栏 8
  9 // first create the new toolbar10 // this will contain the full-screen off button
  11 m_pwndFullScreenBar=new CToolBar;12 m_pwndFullScreenBar->Create(this);13 m_pwndFullScreenBar->LoadToolBar(IDR_FULLSCREEN);//显示退出全屏工具栏
  14 m_pwndFullScreenBar->SetBarStyle(m_pwndFullScreenBar->GetBarStyle() |
  15 CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);16 // to look better:
  17 m_pwndFullScreenBar->ModifyStyle(0, TBSTYLE_FLAT);18 m_pwndFullScreenBar->EnableDocking(0);19
  20 // place the full-screen off button somewhere:
  21 CPoint pt(300,200);22 FloatControlBar(m_pwndFullScreenBar,pt);23 24 // now save the old positions of the main and child windows
  25 GetWindowRect(&m_mainRect);26
  27 // remove the caption of the mainWnd:
  28 LONG style=::GetWindowLong(m_hWnd,GWL_STYLE);29 style&=~WS_CAPTION;30 ::SetWindowLong(m_hWnd,GWL_STYLE,style);31 int screenx=GetSystemMetrics(SM_CXSCREEN);32 int screeny=GetSystemMetrics(SM_CYSCREEN);33
  34 // resize:
  35 SetWindowPos(NULL,0,0,screenx,screeny,SWP_NOZORDER);36 //SetWindowPos(NULL,-5,-5,80,80,SWP_NOZORDER);
  37 style=::GetWindowLong(pChild->m_hWnd,GWL_STYLE);38 m_bChildMax=(style & WS_MAXIMIZE)?true:false
  39 // note here: m_bMainMax is not needed since m_hWnd only40 // changed its caption
  41 ///***************
  42
  43 //Save the Original Menu and set menu to NULL
  44 ASSERT(m_OrgMenu.GetSafeHmenu()==NULL);45 CMenu* pOldMenu=GetMenu();46 m_OrgMenu.Attach(pOldMenu->Detach());47 SetMenu((CMenu*)NULL);48
  49 //************50 // and maximize the child window51 // it will remove its caption, too.52 //pChild->
  53 this->ShowWindow (SW_SHOWMAXIMIZED);54 style=::GetWindowLong(pChild->m_hWnd,GWL_STYLE);//获得窗口风格
  55 style&=~WS_CAPTION;56 ::SetWindowLong(pChild->m_hWnd,GWL_STYLE,style); 57 pChild->ShowWindow(SW_SHOWMAXIMIZED);58
  59 //RecalcLayout();
  60 61
  62
  退出全屏
  1ASSERT(m_OrgMenu.GetSafeHmenu()!=NULL); 2 SetMenu(&m_OrgMenu); 3 m_OrgMenu.Detach(); 4 5 // You can use SaveBarState() in OnClose(), 6 // so remove the newly added toolbar entirely 7 // in order SaveBarState() not 8 // to save its state. That is why I used dynamic 9 // allocation
  10 delete m_pwndFullScreenBar;11 LONG style=::GetWindowLong(m_hWnd,GWL_STYLE);12 style|=WS_CAPTION;13 ::SetWindowLong(m_hWnd,GWL_STYLE,style);14 if(m_bToolBarWasVisible)15 m_wndToolBar.ShowWindow(SW_SHOW);16 if(m_bStatusBarWasVisible)17 m_wndStatusBar.ShowWindow(SW_SHOW);18 MoveWindow(&m_mainRect);19 RecalcLayout();20 CMDIChildWnd* pChild=MDIGetActive();2122 style=::GetWindowLong(pChild->m_hWnd,GWL_STYLE);23 style|=WS_CAPTION;24 ::SetWindowLong(pChild->m_hWnd,GWL_STYLE,style);25 //

本文转自
http://www.cppblog.com/colys/articles/24174.html
<think>好的,我需要帮助用户解决如何在SAP系统中隐藏工具栏的问题。根据用户提供的引用信息,我注意到有几个相关的参考资料提到了隐藏工具栏的方法,特别是针对ALV报表的情况。 首先,引用[2]提到在使用OO ALV时,如果清空了所有标准工具栏按钮,可能会导致空白工具栏出现。这说明直接排除标准按钮可能不够有效,需要其他方法。引用[4]则给出了具体的ABAP代码示例,使用CL_GUI_ALV_GRID的set_table_for_first_display方法,并在PF-STATUS中排除特定按钮。此外,引用[3]提到在传输请求后按钮不显示的问题,可能需要激活接口,这可能与系统配置有关。 接下来,我需要将这些信息整理成步骤,确保用户能够按照指导操作。首先,明确隐藏工具栏的两种场景:ABAP程序中的ALV报表和通过AMS-L系统进行全局设置。对于ALV报表,使用SET PF-STATUS命令排除标准工具栏,或者使用CL_GUI_ALV_GRID的方法。对于全局设置,引用[1]提到的AMS-L系统可能提供配置选项,但具体步骤可能需要参考系统文档。 需要注意的是,用户可能需要根据具体情况选择方法,比如是在开发ALV报表时隐藏,还是系统层面的调整。同时,要提醒用户代码示例中的变量需要替换为实际值,并建议测试环境验证。可能的问题包括排除按钮不完全或传输后不生效,需要检查激活状态和传输配置。 最后,生成相关问题,帮助用户深入理解,比如性能影响、其他UI调整方法以及权限问题。确保回答结构清晰,步骤详细,引用正确,并且语言自然。</think>### 如何在 SAP 系统中隐藏工具栏? 在 SAP 系统中隐藏工具栏的方法取决于具体场景,以下是两种常见情况的解决方案: --- #### **1. 在 ABAP 程序(如 ALV 报表)中隐藏工具栏** 若需在自定义程序(如 ALV 报表)中隐藏标准工具栏按钮,可通过以下步骤实现: 1. **使用 `SET PF-STATUS` 排除标准按钮** 在 ABAP 代码中定义屏幕状态时,通过 `EXCLUDING` 参数排除标准工具栏按钮。例如: ```abap DATA: ex_tab TYPE TABLE OF sy-ucomm. APPEND '&ALL' TO ex_tab. "排除"全选"按钮 APPEND '&SEL' TO ex_tab. "排除"选择"按钮 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid i_callback_pf_status_set = 'SET_PF_STATUS' "自定义状态设置 TABLES t_outtab = it_data. ``` 在子程序 `SET_PF_STATUS` 中配置状态: ```abap FORM set_pf_status USING rt_extab TYPE slis_t_extab. SET PF-STATUS 'STANDARD' EXCLUDING ex_tab. "隐藏指定按钮[^4] ENDFORM. ``` 2. **通过 `CL_GUI_ALV_GRID` 对象控制** 若使用面向对象的 ALV 控件,可调用 `set_table_for_first_display` 方法时指定工具栏状态: ```abap DATA: lo_alv TYPE REF TO cl_gui_alv_grid. CREATE OBJECT lo_alv. lo_alv->set_table_for_first_display( EXPORTING i_save = 'A' i_default = 'X' CHANGING it_outtab = it_data ). "隐藏整个标准工具栏 SET PF-STATUS space. "设置为空状态[^2] ``` --- #### **2. 通过系统全局配置隐藏工具栏** 若需对用户界面进行全局调整(如安全管控),可使用 **SAP AMS-L 系统**(日志堡垒机): 1. **登录 AMS-L 系统**,进入“界面管理”模块。 2. **选择“工具栏配置”**,通过策略定义用户角色的工具栏可见性。 3. **启用“简化模式”**,隐藏非必要的操作按钮以降低复杂度[^1]。 --- #### **注意事项** - **代码调试**:若隐藏按钮后出现空白工具栏(如引用[2]所述),需检查排除列表是否覆盖所有标准按钮。 - **传输问题**:若代码传输后按钮仍显示,需在目标系统激活程序及 GUI 状态(参考引用[3])。 - **权限限制**:全局配置需管理员权限,且可能受安全策略约束。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值