CommandBars hides OpenEdge menubar |
Post Reply |
Author | |
oli.dune
Groupie Joined: 18 June 2010 Status: Offline Points: 25 |
Post Options
Thanks(0)
Posted: 16 November 2010 at 11:01am |
Hi there,
Consider an OpenEdge window with a menubar. If I add a CommandBars control, and perform the AttachToWindow() method, the OpenEdge window's menubar disappears (although its handle is still valid and shortcuts are still available). DEF VAR i_WinHWND AS INT NO-UNDO. RUN GetParent( {&WINDOW-NAME}:HWND, OUTPUT i_WinHWND ). chCtrlFrame:CommandBars:AttachToWindow( i_WinHWND ). Any help would be highly appreciated. Thanks in advance |
|
Product: Xtreme SuitePro (ActiveX) version 16.4.0
Platform: Windows 10 (64bit) Language: OpenEdge 11.7.4 |
|
oli.dune
Groupie Joined: 18 June 2010 Status: Offline Points: 25 |
Post Options
Thanks(0)
|
I've surrounded the CommandBars:AttachToWindow() function with the Windows API functions GetMenu() and SetMenu():
DEF VAR i_WinHWND AS INT NO-UNDO. DEF VAR i_MenuHWND AS INT NO-UNDO. DEF VAR i AS INT NO-UNDO. RUN GetParent( {&WINDOW-NAME}:HWND, OUTPUT i_WinHWND ). RUN GetMenu( INPUT i_WinHWND, OUTPUT i_MenuHWND ). /* Here, we have a valid menu handle in i_MenuHWND */ chCtrl_SkinCommandBars:CommandBars:AttachToWindow( i_WinHWND ). RUN GetMenu( INPUT i_WinHWND, OUTPUT i ). /* Here, it seems there's no menu assigned to the window anymore (i = 0) */ RUN SetMenu( INPUT i_WinHWND, INPUT i_MenuHWND, OUTPUT i ). /* i > 0 (it seems that the function succeeded) */ RUN GetMenu( INPUT i_WinHWND, OUTPUT i ). /* Helas, it seems the menu were not assigned to the window (i = 0) */ So, can anyone from CJ tell me if the AttachToWindow() method is altering the Window definition to disallow menubar? Thx |
|
Product: Xtreme SuitePro (ActiveX) version 16.4.0
Platform: Windows 10 (64bit) Language: OpenEdge 11.7.4 |
|
oli.dune
Groupie Joined: 18 June 2010 Status: Offline Points: 25 |
Post Options
Thanks(0)
|
I've submitted an issue to the CJ Support Team (#:25683) on Monday, but I didn't receive anything else than a receipt so far.
OK, the support period of our license is over, but I would have expected some feedback regarding something that looks like Please, Oleg? Aaron? |
|
Product: Xtreme SuitePro (ActiveX) version 16.4.0
Platform: Windows 10 (64bit) Language: OpenEdge 11.7.4 |
|
Aaron
Senior Member Joined: 29 January 2008 Status: Offline Points: 2192 |
Post Options
Thanks(0)
|
Hi,
Since your "fellow OpenEdge users" don't want to help, I will give it a try....
First of all I would like to know what you want. You mentioned, you want to "attach" a commandbars control to another "window"
The commandbars control is a Toolbar or what?
YES: The AttachToWindow method (with VB) works OK. If you use this method, you are able to "move" a toolbar to another "window" but it will be docked at position you defined (see bold part below)
With Me.CommandBars
.AttachToWindow picBoxReport.hwnd With .Add("Tools", xtpBarRight) .....
.....
End With
So this toolbar will be docked at right side of the picturebox BUT if you have some resizing function that will resize control in same picturebox as you attached the toolbar to, the toolbar won't be visible (it will stay behind the control you resized) In this case we need to resize the control inside picturebox a bit and normally you could do this by using ResizeClient event:
Private Sub CommandBars_ResizeClient(ByVal Left As Long, ByVal Top As Long, ByVal Right As Long, ByVal Bottom As Long)
Me.wndReportControl.Move Left, Top, Right - Left, Bottom - Top 'This is a ReportControl that resides in another picturebox as the commandbars control (toolbar) End Sub With above code I was able to show the toolbar as should.
NO:
Define Commandbar control
Hope this helps a bit, if not just reply again and I will see what I can do
|
|
Product: Xtreme SuitePro (ActiveX) version 15.0.2
Platform: Windows XP (32bit) - SP 2 Language: Visual Basic 6.0 Zero replies is not an option.... |
|
oli.dune
Groupie Joined: 18 June 2010 Status: Offline Points: 25 |
Post Options
Thanks(0)
|
Thanks for your answer Aaron.
In fact, the goal of all this is to make windows' control buttons (min/max/close) available when a skin is currently selected. I've simply read and applied the suggestion described in this post: http://forum.codejock.com/forum_posts.asp?TID=15393&title=openedge-minimize-restore-close-buttons-disabled So to answer your question: No, I do not use the CommandBars control to set up a nice menu/toolbar. I just want to keep using those we have yet defined (in OpenEdge). If I invoke the AttachToWin() method, and reference the window, its menu-bar disappear. If I invoke the method on something else (frame, or whatever) or if I simply do not invoke the method, then the min/max/close control buttons remain disabled. |
|
Product: Xtreme SuitePro (ActiveX) version 16.4.0
Platform: Windows 10 (64bit) Language: OpenEdge 11.7.4 |
|
Aaron
Senior Member Joined: 29 January 2008 Status: Offline Points: 2192 |
Post Options
Thanks(0)
|
Hi,
Ok, I understand what you mean. My best guess is that CJ Commandbars "tries" to include the Main menu but it fails somewhere... Look in the update event and add code so you can see if the commandbar items are created.
Note:
With VB, when dropping a CommandBar control on a form and a skin is applied, the main menu just looks like a "real" menu created with commandbars. The standard VB menu has been "integrated" and I'm able to use the Execute / Update event just as with ordinary created commandbar items (just mainitems aren't skinned)
Too bad, the member who had same problem, didn't respond anymore otherwise you would know what to do. Try to get in touch with the member (personal message or maybe email)
btw did you try with CommandBarsFrame? Some people use this to get it working within Access database... Never had to use it so I don't know if it works...
Good luck
|
|
Product: Xtreme SuitePro (ActiveX) version 15.0.2
Platform: Windows XP (32bit) - SP 2 Language: Visual Basic 6.0 Zero replies is not an option.... |
|
oli.dune
Groupie Joined: 18 June 2010 Status: Offline Points: 25 |
Post Options
Thanks(0)
|
Believe me or not, Aaron, the solution is as simple as a call to the DeleteAll() method, just after the :AttachToWindow().
I've seen that the :ActiveMenuBar wasn't null, and after several (unsuccessful) attempts to re-assign it to the OpenEdge window's one, I've tried the DeleteAll() eraser... Hope this might help our fellows Once again, thank you. |
|
Product: Xtreme SuitePro (ActiveX) version 16.4.0
Platform: Windows 10 (64bit) Language: OpenEdge 11.7.4 |
|
Aaron
Senior Member Joined: 29 January 2008 Status: Offline Points: 2192 |
Post Options
Thanks(0)
|
Hi,
You could submit post in https://forum.codejock.com/forum_topics.asp?FID=158&title=articles-and-tutorials Maybe you will find other helpfull solutions (or your fellow OpenEdge users) which will be helpfull without having to worry like you already did
|
|
Product: Xtreme SuitePro (ActiveX) version 15.0.2
Platform: Windows XP (32bit) - SP 2 Language: Visual Basic 6.0 Zero replies is not an option.... |
|
SuperMario
Admin Group Joined: 14 February 2004 Status: Offline Points: 18057 |
Post Options
Thanks(0)
|
Codejock Menu Bar will replace standard menu bar - same as in VB. DeleteAll will remove the Codejock MenuBar so you can see your own OpenEdge menu. CommandBars.ActiveMenuBar.Visible = False will not work because when you call it your menubar has already been removed. So you need to first DeleteAll and only after call AttachTOWindow. I noticed you call DeleteAll After AttachTOWindow, we never tried OpenEdge so can't be sure how it works, but we recommend it is called before AttachTOWindow.
|
|
Post Reply | |
Tweet
|
Forum Jump | Forum Permissions You cannot post new topics in this forum You cannot reply to topics in this forum You cannot delete your posts in this forum You cannot edit your posts in this forum You cannot create polls in this forum You cannot vote in polls in this forum |