Positioning of submenus?
Hi- can anyone tell how to make Spry submenus appear ABOVE
the main menu bar instead of below? Thanks, Jaclyn
Hi Jaclyn,
Open up the CSS settings for ul.MenuBarVertical ul or the
horizontal equivalent and edit the margin settings. The default is
-5% 0 0 95%. These four values represent the top, right, bottom and
left margins, possibly not in that order, of the submenu relative
to the parent menu. Hover your curser over the margin setting in
the CSS menu and it will also tell you what the values represent.
So all you need to do is change the first setting to say 50% and
the sub menus will expand out above the default setting. This is of
course in relation to the vertical menu.
Clear as mud!
I hope that helps.
Cheers,
Andrew
P.S. you don’t know what code one has to write to add a
submenu in addition to the two standard submenus?
Similar Messages
-
Adjusting position of submenus
I have scoured the forum but cannot find an answer for this. I want to move my submenus so they are not jammed into my main menu. Can't understand why this is so difficult. Like many others, every time I adjust I get the snap back into original position.
I notice same thing yesterday, then I found out you can customize it with spacing window where you can change padding...
-
Horizontal Menu position of submenus
I'm a novice to Dreamweaver CS3. I have the Spry Horizontal
Menu working on my site using an include statement so it can be
pulled into all pages. I centered the menu bar on the page and it's
below some other elements instead of being at the top of the page.
The problem I'm having is that the submenu's always appear at the
top of the page. I've seen the CSS code and help info that says to
change the following code as needed.
ul.MenuBarHorizontal ul ul{
position: absolute;
margin: -5% 0 0 95%;
I have tried changing all these values but the submenu's
still appear at the top of the page. Can someone please help me
with this. Thanks much!!!
HarryHi Harry,
Did you select the entire menubar in Dreamweaver and hit the
center button in the Property inspector? If so, that may have
inserted some <div> tags within your menu structure that
breaks it. If so, remove all of the <div> tags that were
inserted, and then visit this page which explains how to center
things:
http://labs.adobe.com/technologies/spry/samples/menubar/CenteringHorizontalMenuBarSample.h tml
--== Kin ==-- -
Spry Menu Bar Positioning Problem in IE
I have a Dreamweaver-created Spry Menu Bar drop down menu which works perfectly in every browser on my Mac and on my PC . . . EXCEPT Internet Explorer (who woulda thunk it?!!)
In all browsers except for IE, the 3 submenu items under "Door Systems" and "Gallery" appear exactly as they should in a vertical row, positioned just below the brown line below the navigation links and all the same width. But in IE they appear higher up and with different widths. IE is ignoring the rules for width and position.
<ul id="MenuBar2" class="MenuBarHorizontal">
<li><a class="MenuBarItemSubmenu" href="closet_doors_gallery.html">DOOR SYSTEMS</a>
<ul>
<li><a href="sliding_doors_nyc_nj.html">DOOR PROFILES</a></li>
<li><a href="bifold_doors_nyc_nj.html">PANELS COLORS</a></li>
<li><a href="room_dividers_nyc_nj.html">DOOR SYSTEM TYPES</a></li>
</ul>
</li>
</ul>
<ul id="MenuBar3" class="MenuBarHorizontal">
<li><a class="MenuBarItemSubmenu" href="#">GALLERY </a>
<ul>
<li><a href="#">SLIDING DOORS</a></li>
<li><a href="#">BI-FOLD DOORS</a></li>
<li><a href="#">ROOM DIVIDERS</a></li>
</ul>
</li>
</ul>
Here is the page where you can see the problem if you view it with IE, and see that it's fine in Safari, and Firefox, Chrome and Opera, Mac or PC:
http://2113web.com/indeco/index.html
I have a feeling it's a simple fix of the css, but I can't figure it out - I would really appreciate anyone's help with it - thank you!
Below is the CSS:
@charset "UTF-8";
/* SpryMenuBarHorizontal.css - version 0.6 - Spry Pre-Release 1.6.1 */
/* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
LAYOUT INFORMATION: describes box model, positioning, z-order
/* The outermost container of the Menu Bar, an auto width box with no margin or padding */
ul.MenuBarHorizontal
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
font-weight:bold;
cursor: default;
width: auto;
/* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
ul.MenuBarActive
z-index: 1000;
/* Menu item containers, position children relative to this container and are a fixed width */
ul.MenuBarHorizontal li
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
position: relative;
text-align: left;
cursor: pointer;
width: auto;
float: left;
white-space: nowrap;
/* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
ul.MenuBarHorizontal ul
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
z-index: 1020;
cursor: default;
width: auto;
position: absolute;
left: -1000em;
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
left: auto;
top: 63px; /*THIS POSITIONS THE SUBMENU BELOW THE TOP MENU*/
/* Menu item containers are same fixed width as parent */
ul.MenuBarHorizontal ul li
float: none;
background-color:#f5f5e8;
height:25px; /*THIS POSITIONS THE SUBMENUS HEIGHT*/
/* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
ul.MenuBarHorizontal ul ul
position: absolute;
margin-top: -5%;
margin-right: 0;
margin-bottom: 0;
margin-left: 95%;
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
left: auto;
top: 0;
DESIGN INFORMATION: describes color scheme, borders, fonts
/* Submenu containers have borders on all sides */
ul.MenuBarHorizontal ul
border:none;
/* Menu items are a light gray block with padding and no text decoration */
ul.MenuBarHorizontal a
display: block;
cursor: pointer;
background-color: transparent;
padding: 0.5em 0.75em;
color: #59330d;
text-decoration: none;
/* Menu items that have mouse over or focus have a blue background and white text */
ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
background-color: transparent;
color: #afa06f;
/* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
background-color: transparent;
color: #afa06f;
SUBMENU INDICATION: styles if there is a submenu under a given menu item
/* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%)
ul.MenuBarHorizontal a.MenuBarItemSubmenu
background-image: url(SpryMenuBarDown.gif);
background-repeat: no-repeat;
background-position: 95% 50%;
Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%)
ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
background-image: url(SpryMenuBarRight.gif);
background-repeat: no-repeat;
background-position: 95% 50%;
Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%)
ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
background-image: url(SpryMenuBarDownHover.gif);
background-repeat: no-repeat;
background-position: 95% 50%;
Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%)
ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
background-image: url(SpryMenuBarRightHover.gif);
background-repeat: no-repeat;
background-position: 95% 50%;
BROWSER HACKS: the hacks below should not be changed unless you are an expert
/* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
ul.MenuBarHorizontal iframe
position: absolute;
z-index: 1010;
filter:alpha(opacity:0.1);
/* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
@media screen, projection
ul.MenuBarHorizontal li.MenuBarItemIE
display: inline;
f\loat: left;
background: #FFF;
PerryHi and thank you very much. It was a little confusing as to whether you meant to add the rules you suggested or to replace them, or a combination of both, but I puzzled it out. I created a new MenuBarHorizontal.css file in a blank page and then made the changes you suggested and it works! Yay! I had to do a bit of tweaking to get it to look just the way I wanted, but it now works correctly in ie 7 and 8 and still works fine in everything else.
Interestingly enough, I had to change the margin-top: 63px; rule in "ul.MenuBarHorizontal ul.MenuBarSubmenuVisible" to 40px to get it positioned properly vertically, and I had to get rid of the "border-bottom: solid 1px #EEE;" in "ul.MenuBarHorizontal ul li", which caused the submenu items to have quite a lot of vertical space between them - I'm not sure why!
I also had to get rid of all the syling rules in the "SUBMENU INDICATION: styles if there is a submenu under a given menu item" section, as well as the one you added: "ul.MenuBarHorizontal a.MenuBarItemSubmenu {
padding: 0.5em 2em 0.5em 0.75em;"
With that done, it works great in both ie7 and ie8, so thank you for the help. Below is the new css that works, in total.
Not being as familiar with the subtleties of CSS as you and many others obviously are, I'm REALLY curious as to exactly what is different that causes this to work now, and would be happy to hear your expanation, if you feel like taking the time to explain. If not, no problem - it works and that is the most important thing! So, thank you again -
Perry
@charset "UTF-8";
/* SpryMenuBarHorizontal.css - version 0.6 - Spry Pre-Release 1.6.1 */
/* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
LAYOUT INFORMATION: describes box model, positioning, z-order
/* The outermost container of the Menu Bar, an auto width box with no margin or padding */
ul.MenuBarHorizontal
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
cursor: default;
width: auto;
/* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
ul.MenuBarActive
z-index: 1000;
/* Menu item containers, position children relative to this container and are a fixed width */
ul.MenuBarHorizontal li
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
position: relative;
text-align: left;
cursor: pointer;
width: auto;
float: left;
/* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
ul.MenuBarHorizontal ul
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
z-index: 1020;
cursor: default;
width: auto;
position: absolute;
left: -1000em;
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
left: auto;
margin-top: 40px;
/* Menu item containers are same fixed width as parent */
ul.MenuBarHorizontal ul li
display: block;
float: none !important;
width: auto;
white-space: nowrap;
/* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
ul.MenuBarHorizontal ul ul
position: absolute;
margin: -5% 0 0 95%;
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
left: auto;
top: 0;
DESIGN INFORMATION: describes color scheme, borders, fonts
/* Submenu containers have borders on all sides */
ul.MenuBarHorizontal ul
border: 1px solid #CCC;
/* Menu items are a light gray block with padding and no text decoration */
ul.MenuBarHorizontal a
display: block;
cursor: pointer;
background-color: #f5f5e8;
padding: 0.5em 0.75em;
color: #333;
text-decoration: none;
/* Menu items that have mouse over or focus have a blue background and white text */
ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
background-color: #f5f5e8;
color: #afa06f;
/* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
background-color: #f5f5e8;
color: #afa06f;
SUBMENU INDICATION: styles if there is a submenu under a given menu item
/* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal a.MenuBarItemSubmenu
/* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
/* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
/* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
BROWSER HACKS: the hacks below should not be changed unless you are an expert
/* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
ul.MenuBarHorizontal iframe
position: absolute;
z-index: 1010;
filter:alpha(opacity:0.1);
background: transparent;
/* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
@media screen, projection
ul.MenuBarHorizontal li.MenuBarItemIE
display: inline;
f\loat: left;
background: #FFF; -
Hi all,
I am using the following code to make a submenu with success:
Dim oCreationPackage As SAPbouiCOM.MenuCreationParams
oCreationPackage = SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_MenuCreationParams)
oMenuItem = SBO_Application.Menus.Item("43520") ' MODULES
sPath = System.Windows.Forms.Application.StartupPath()
sPath = sPath.Remove(sPath.Length - 3, 3)
' Creation parameters
oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_POPUP
oCreationPackage.UniqueID = "SM_VID"
oCreationPackage.String = "SubMennuText"
' we add our menu at the buttom of the list
oCreationPackage.Position = oMenuItem.SubMenus.Count + 1
oMenus = oMenuItem.SubMenus
But I try to add another submenu by repeating the same code without success. Any Idea?
Thanks in Advance.
VangelisHi,
This is an example to create submenu :
SAPbouiCOM.Menus oMenus;
SAPbouiCOM.MenuItem oMenuItem;
SAPbouiCOM.MenuCreationParams oMenuCreationParams;
string sPath = "";
try
sPath = System.Windows.Forms.Application.StartupPath;
oMenuCreationParams = (SAPbouiCOM.MenuCreationParams)SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_MenuCreationParams);
oMenuCreationParams.Type = SAPbouiCOM.BoMenuType.mt_POPUP;
oMenuCreationParams.Image = sPath + "
IMG127.BMP";
oMenuCreationParams.Position = 6;
oMenuCreationParams.UniqueID = "IFC_MENU_COM";
oMenuCreationParams.String = ChangeLanguage.GetName_For_Menu(SBO_Application.Language); ;
oMenuItem = SBO_Application.Menus.Item("43520");
oMenus = oMenuItem.SubMenus;
if(SBO_Application.Menus.Exists("IFC_MENU_COM") == true)
return;
oMenuItem = oMenus.AddEx(oMenuCreationParams);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oMenuCreationParams);
oMenuCreationParams = null;
oMenuCreationParams = (SAPbouiCOM.MenuCreationParams)SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_MenuCreationParams);
oMenuCreationParams.Type = SAPbouiCOM.BoMenuType.mt_STRING;
oMenuCreationParams.Image = "";
oMenuCreationParams.Position = 1;
oMenuCreationParams.UniqueID = "IFC_COM";
oMenuCreationParams.String = "submenu1";
oMenus = oMenuItem.SubMenus;
oMenus.AddEx(oMenuCreationParams);
oMenuCreationParams = (SAPbouiCOM.MenuCreationParams)SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_MenuCreationParams);
oMenuCreationParams.Type = SAPbouiCOM.BoMenuType.mt_STRING;
oMenuCreationParams.Image = "";
oMenuCreationParams.Position = 2;
oMenuCreationParams.UniqueID = "IFC_CALC";
oMenuCreationParams.String = "submenu2";
oMenus.AddEx(oMenuCreationParams);
oMenuCreationParams = (SAPbouiCOM.MenuCreationParams)SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_MenuCreationParams);
oMenuCreationParams.Type = SAPbouiCOM.BoMenuType.mt_STRING;
oMenuCreationParams.Image = "";
oMenuCreationParams.Position = 3;
oMenuCreationParams.UniqueID = "IFC_BULL";
oMenuCreationParams.String = "submenu3";
oMenus.AddEx(oMenuCreationParams);
catch (Exception ex)
//Catch
Hope it's help you
Regards
Michael
Edited by: Michael LECLERCQ on Jan 5, 2009 3:25 PM -
I lost the blue tab on my spry menu.
I've saved my document and re-opened it, but still can't get the blue spry menu tab to show. Also can't see my submenus in the browser. It shows in my code. Here is my code.
<table width="878" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="878" height="37" align="center" valign="middle" bgcolor="#D1D1D1">
<ul id="MenuBar1" class="MenuBarHorizontal">
<li><a href="#">HOME</a> </li>
<li><a href="#" class="MenuBarItemSubmenu">ABOUT US</a>
<ul>
<li><a href="#">Become A Member</a></li>
<li><a href="#">Photo Gallery</a></li>
<li><a href="#">Contact Us</a></li>
</ul>
</li>
<li><a class="MenuBarItemSubmenu" href="#">NEWS</a>
<ul>
<li><a href="#">Events</a> </li>
<li><a href="#">Job Listings</a></li>
<li><a href="#">Hot Deals</a></li>
</ul>
</li>
<li><a href="#" class="MenuBarItemSubmenu">EVENTS</a>
<ul>
<li><a href="#">News</a></li>
<li><a href="#">Chamber Calendar</a></li>
<li><a href="#">Community Calendar</a></li>
<li><a href="#">Photo Gallery</a></li>
<li><a href="#">Hot Deals</a></li>
</ul>
</li>
<li><a href="#" class="MenuBarItemSubmenu">COMMUNITY</a>
<ul>
<li><a href="#">Scott Air Force Base</a></li>
<li><a href="#">City of O'Fallon</a></li>
<li><a href="#">O'Fallon Welcome Guide</a></li>
<li><a href="#">O'Fallon-Shiloh Area Restaurant Guide</a></li>
<li><a href="#" class="MenuBarItemSubmenu">Shiloh</a>
<ul>
<li><a href="#">Village of Shiloh</a></li>
<li><a href="#">Village Services Guide</a></li>
<li><a href="#">Shiloh Community Calendar</a></li>
</ul>
</li>
<li><a href="#">Events & Reception Planning Guide</a></li>
<li><a href="#">Relocation Packet Info</a></li>
<li><a href="#">The Tourism Burea Illinois South</a></li>
</ul>
</li>
<li><a href="#" class="MenuBarItemSubmenu">CONTACT US</a>
<ul>
<li><a href="#">Member Login</a></li>
<li><a href="#">Member Directory</a></li>
<li><a href="#">Community Business Info</a></li>
</ul>
</li>
<li><a href="#" class="MenuBarItemSubmenu">JOIN US</a>
<ul>
<li><a href="#">Member Directory</a></li>
<li><a href="#">Become A Member</a></li>
<li><a href="#">Member Login</a></li>
</ul>
</li>
<li><a href="#" class="MenuBarItemSubmenu">COMMITTEES</a>
<ul>
<li><a href="#">Board of Directors</a></li>
<li><a href="#">Ambassadors</a></li>
<li><a href="#">Star Investors</a></li>
<li><a href="#">Member Directory</a></li>
</ul>
</li>
<li><a href="#">PHOTO GALLERY</a></li>
</ul></td>
</tr>
</table>
@charset "UTF-8";
/* SpryMenuBarHorizontal.css - version 0.6 - Spry Pre-Release 1.6.1 */
/* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
LAYOUT INFORMATION: describes box model, positioning, z-order
/* The outermost container of the Menu Bar, an auto width box with no margin or padding */
ul.MenuBarHorizontal
list-style-type: none;
cursor: default;
width: 878px;
white-space: nowrap;
display: inline;
position: relative;
margin-top: 0px;
margin-right: auto;
margin-bottom: 0px;
margin-left: auto;
/* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
ul.MenuBarActive
z-index: 1000;
/* Menu item containers, position children relative to this container and are a fixed width */
ul.MenuBarHorizontal li
margin: 0 auto;
padding: 0;
position: relative;
text-align: left;
cursor: default;
font-family: "Trebuchet MS", Arial, Helvetica, sans-serif, Biondi;
font-weight: normal;
font-style: normal;
font-size: 87%;
white-space: nowrap;
line-height: normal;
width: auto;
clear: none;
float: left;
/* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
ul.MenuBarHorizontal ul
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
z-index: 1020;
cursor: default;
width: auto;
position: absolute;
left: 1000em;
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
left: auto;
/* Menu item containers are same fixed width as parent */
ul.MenuBarHorizontal ul li
text-align: left;
white-space: nowrap;
display: block;
float: none;
font-size: 100%;
font-family: "Trebuchet MS", Arial, Helvetica, sans-serif, Biondi;
font-style: normal;
line-height: normal;
font-weight: bolder;
text-transform: none;
background-color: transparent;
width: auto;
position: relative;
/* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
ul.MenuBarHorizontal ul ul
margin-top: -5%;
margin-right: 0px;
margin-bottom: 0;
margin-left: 95%;
position: absolute;
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
left: auto;
top: 0;
DESIGN INFORMATION: describes color scheme, borders, fonts
/* Submenu containers have borders on all sides */
ul.MenuBarHorizontal ul
border-top-color: #021844;
border-right-color: #021844;
border-bottom-color: #021844;
border-left-color: #021844;
/* Menu items are a light gray block with padding and no text decoration */
ul.MenuBarHorizontal a
display: block;
cursor: pointer;
background-color: #021844;
color: #FFF;
text-decoration: none;
border: 1px solid #FFF;
text-align: left;
padding-top: 0.5em;
padding-right: 0.75em;
padding-bottom: 0.5em;
padding-left: 0.75em;
white-space: nowrap;
/* Menu items that have mouse over or focus have a blue background and white text */
ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
color: #036009;
background-color: #FFF;
/* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
SUBMENU INDICATION: styles if there is a submenu under a given menu item
/* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal a.MenuBarItemSubmenu
background-image: none;
background-position: 95% 50%;
background-color: #021844;
/* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
background-image: url(SpryMenuBarRightHover.gif);
background-position: 95% 50%;
background-repeat: no-repeat;
/* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
background-image: none;
background-position: 95% 50%;
color: #036009;
background-color: #FFF;
/* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
background-image: url(SpryMenuBarRightHover.gif);
background-repeat: no-repeat;
background-position: 95% 50%;
BROWSER HACKS: the hacks below should not be changed unless you are an expert
/* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
ul.MenuBarHorizontal iframe
position: absolute;
z-index: 1010;
filter:alpha(opacity:0.1);
/* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
@media screen, projection
ul.MenuBarHorizontal li.MenuBarItemIE
display: inline;
f\loat: left;
background: #FFF;
// SpryMenuBar.js - version 0.13 - Spry Pre-Release 1.6.1
// Copyright (c) 2006. Adobe Systems Incorporated.
// All rights reserved.
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
// * Redistributions of source code must retain the above copyright notice,
// this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
// * Neither the name of Adobe Systems Incorporated nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
SpryMenuBar.js
This file handles the JavaScript for Spry Menu Bar. You should have no need
to edit this file. Some highlights of the MenuBar object is that timers are
used to keep submenus from showing up until the user has hovered over the parent
menu item for some time, as well as a timer for when they leave a submenu to keep
showing that submenu until the timer fires.
(function() { // BeginSpryComponent
if (typeof Spry == "undefined") window.Spry = {}; if (!Spry.Widget) Spry.Widget = {};
Spry.BrowserSniff = function()
var b = navigator.appName.toString();
var up = navigator.platform.toString();
var ua = navigator.userAgent.toString();
this.mozilla = this.ie = this.opera = this.safari = false;
var re_opera = /Opera.([0-9\.]*)/i;
var re_msie = /MSIE.([0-9\.]*)/i;
var re_gecko = /gecko/i;
var re_safari = /(applewebkit|safari)\/([\d\.]*)/i;
var r = false;
if ( (r = ua.match(re_opera))) {
this.opera = true;
this.version = parseFloat(r[1]);
} else if ( (r = ua.match(re_msie))) {
this.ie = true;
this.version = parseFloat(r[1]);
} else if ( (r = ua.match(re_safari))) {
this.safari = true;
this.version = parseFloat(r[2]);
} else if (ua.match(re_gecko)) {
var re_gecko_version = /rv:\s*([0-9\.]+)/i;
r = ua.match(re_gecko_version);
this.mozilla = true;
this.version = parseFloat(r[1]);
this.windows = this.mac = this.linux = false;
this.Platform = ua.match(/windows/i) ? "windows" :
(ua.match(/linux/i) ? "linux" :
(ua.match(/mac/i) ? "mac" :
ua.match(/unix/i)? "unix" : "unknown"));
this[this.Platform] = true;
this.v = this.version;
if (this.safari && this.mac && this.mozilla) {
this.mozilla = false;
Spry.is = new Spry.BrowserSniff();
// Constructor for Menu Bar
// element should be an ID of an unordered list (<ul> tag)
// preloadImage1 and preloadImage2 are images for the rollover state of a menu
Spry.Widget.MenuBar = function(element, opts)
this.init(element, opts);
Spry.Widget.MenuBar.prototype.init = function(element, opts)
this.element = this.getElement(element);
// represents the current (sub)menu we are operating on
this.currMenu = null;
this.showDelay = 250;
this.hideDelay = 600;
if(typeof document.getElementById == 'undefined' || (navigator.vendor == 'Apple Computer, Inc.' && typeof window.XMLHttpRequest == 'undefined') || (Spry.is.ie && typeof document.uniqueID == 'undefined'))
// bail on older unsupported browsers
return;
// Fix IE6 CSS images flicker
if (Spry.is.ie && Spry.is.version < 7){
try {
document.execCommand("BackgroundImageCache", false, true);
} catch(err) {}
this.upKeyCode = Spry.Widget.MenuBar.KEY_UP;
this.downKeyCode = Spry.Widget.MenuBar.KEY_DOWN;
this.leftKeyCode = Spry.Widget.MenuBar.KEY_LEFT;
this.rightKeyCode = Spry.Widget.MenuBar.KEY_RIGHT;
this.escKeyCode = Spry.Widget.MenuBar.KEY_ESC;
this.hoverClass = 'MenuBarItemHover';
this.subHoverClass = 'MenuBarItemSubmenuHover';
this.subVisibleClass ='MenuBarSubmenuVisible';
this.hasSubClass = 'MenuBarItemSubmenu';
this.activeClass = 'MenuBarActive';
this.isieClass = 'MenuBarItemIE';
this.verticalClass = 'MenuBarVertical';
this.horizontalClass = 'MenuBarHorizontal';
this.enableKeyboardNavigation = true;
this.hasFocus = false;
// load hover images now
if(opts)
for(var k in opts)
if (typeof this[k] == 'undefined')
var rollover = new Image;
rollover.src = opts[k];
Spry.Widget.MenuBar.setOptions(this, opts);
// safari doesn't support tabindex
if (Spry.is.safari)
this.enableKeyboardNavigation = false;
if(this.element)
this.currMenu = this.element;
var items = this.element.getElementsByTagName('li');
for(var i=0; i<items.length; i++)
if (i > 0 && this.enableKeyboardNavigation)
items[i].getElementsByTagName('a')[0].tabIndex='-1';
this.initialize(items[i], element);
if(Spry.is.ie)
this.addClassName(items[i], this.isieClass);
items[i].style.position = "static";
if (this.enableKeyboardNavigation)
var self = this;
this.addEventListener(document, 'keydown', function(e){self.keyDown(e); }, false);
if(Spry.is.ie)
if(this.hasClassName(this.element, this.verticalClass))
this.element.style.position = "relative";
var linkitems = this.element.getElementsByTagName('a');
for(var i=0; i<linkitems.length; i++)
linkitems[i].style.position = "relative";
Spry.Widget.MenuBar.KEY_ESC = 27;
Spry.Widget.MenuBar.KEY_UP = 38;
Spry.Widget.MenuBar.KEY_DOWN = 40;
Spry.Widget.MenuBar.KEY_LEFT = 37;
Spry.Widget.MenuBar.KEY_RIGHT = 39;
Spry.Widget.MenuBar.prototype.getElement = function(ele)
if (ele && typeof ele == "string")
return document.getElementById(ele);
return ele;
Spry.Widget.MenuBar.prototype.hasClassName = function(ele, className)
if (!ele || !className || !ele.className || ele.className.search(new RegExp("\\b" + className + "\\b")) == -1)
return false;
return true;
Spry.Widget.MenuBar.prototype.addClassName = function(ele, className)
if (!ele || !className || this.hasClassName(ele, className))
return;
ele.className += (ele.className ? " " : "") + className;
Spry.Widget.MenuBar.prototype.removeClassName = function(ele, className)
if (!ele || !className || !this.hasClassName(ele, className))
return;
ele.className = ele.className.replace(new RegExp("\\s*\\b" + className + "\\b", "g"), "");
// addEventListener for Menu Bar
// attach an event to a tag without creating obtrusive HTML code
Spry.Widget.MenuBar.prototype.addEventListener = function(element, eventType, handler, capture)
try
if (element.addEventListener)
element.addEventListener(eventType, handler, capture);
else if (element.attachEvent)
element.attachEvent('on' + eventType, handler);
catch (e) {}
// createIframeLayer for Menu Bar
// creates an IFRAME underneath a menu so that it will show above form controls and ActiveX
Spry.Widget.MenuBar.prototype.createIframeLayer = function(menu)
var layer = document.createElement('iframe');
layer.tabIndex = '-1';
layer.src = 'javascript:""';
layer.frameBorder = '0';
layer.scrolling = 'no';
menu.parentNode.appendChild(layer);
layer.style.left = menu.offsetLeft + 'px';
layer.style.top = menu.offsetTop + 'px';
layer.style.width = menu.offsetWidth + 'px';
layer.style.height = menu.offsetHeight + 'px';
// removeIframeLayer for Menu Bar
// removes an IFRAME underneath a menu to reveal any form controls and ActiveX
Spry.Widget.MenuBar.prototype.removeIframeLayer = function(menu)
var layers = ((menu == this.element) ? menu : menu.parentNode).getElementsByTagName('iframe');
while(layers.length > 0)
layers[0].parentNode.removeChild(layers[0]);
// clearMenus for Menu Bar
// root is the top level unordered list (<ul> tag)
Spry.Widget.MenuBar.prototype.clearMenus = function(root)
var menus = root.getElementsByTagName('ul');
for(var i=0; i<menus.length; i++)
this.hideSubmenu(menus[i]);
this.removeClassName(this.element, this.activeClass);
// bubbledTextEvent for Menu Bar
// identify bubbled up text events in Safari so we can ignore them
Spry.Widget.MenuBar.prototype.bubbledTextEvent = function()
return Spry.is.safari && (event.target == event.relatedTarget.parentNode || (event.eventPhase == 3 && event.target.parentNode == event.relatedTarget));
// showSubmenu for Menu Bar
// set the proper CSS class on this menu to show it
Spry.Widget.MenuBar.prototype.showSubmenu = function(menu)
if(this.currMenu)
this.clearMenus(this.currMenu);
this.currMenu = null;
if(menu)
this.addClassName(menu, this.subVisibleClass);
if(typeof document.all != 'undefined' && !Spry.is.opera && navigator.vendor != 'KDE')
if(!this.hasClassName(this.element, this.horizontalClass) || menu.parentNode.parentNode != this.element)
menu.style.top = menu.parentNode.offsetTop + 'px';
if(Spry.is.ie && Spry.is.version < 7)
this.createIframeLayer(menu);
this.addClassName(this.element, this.activeClass);
// hideSubmenu for Menu Bar
// remove the proper CSS class on this menu to hide it
Spry.Widget.MenuBar.prototype.hideSubmenu = function(menu)
if(menu)
this.removeClassName(menu, this.subVisibleClass);
if(typeof document.all != 'undefined' && !Spry.is.opera && navigator.vendor != 'KDE')
menu.style.top = '';
menu.style.left = '';
if(Spry.is.ie && Spry.is.version < 7)
this.removeIframeLayer(menu);
// initialize for Menu Bar
// create event listeners for the Menu Bar widget so we can properly
// show and hide submenus
Spry.Widget.MenuBar.prototype.initialize = function(listitem, element)
var opentime, closetime;
var link = listitem.getElementsByTagName('a')[0];
var submenus = listitem.getElementsByTagName('ul');
var menu = (submenus.length > 0 ? submenus[0] : null);
if(menu)
this.addClassName(link, this.hasSubClass);
if(!Spry.is.ie)
// define a simple function that comes standard in IE to determine
// if a node is within another node
listitem.contains = function(testNode)
// this refers to the list item
if(testNode == null)
return false;
if(testNode == this)
return true;
else
return this.contains(testNode.parentNode);
// need to save this for scope further down
var self = this;
this.addEventListener(listitem, 'mouseover', function(e){self.mouseOver(listitem, e);}, false);
this.addEventListener(listitem, 'mouseout', function(e){if (self.enableKeyboardNavigation) self.clearSelection(); self.mouseOut(listitem, e);}, false);
if (this.enableKeyboardNavigation)
this.addEventListener(link, 'blur', function(e){self.onBlur(listitem);}, false);
this.addEventListener(link, 'focus', function(e){self.keyFocus(listitem, e);}, false);
Spry.Widget.MenuBar.prototype.keyFocus = function (listitem, e)
this.lastOpen = listitem.getElementsByTagName('a')[0];
this.addClassName(this.lastOpen, listitem.getElementsByTagName('ul').length > 0 ? this.subHoverClass : this.hoverClass);
this.hasFocus = true;
Spry.Widget.MenuBar.prototype.onBlur = function (listitem)
this.clearSelection(listitem);
Spry.Widget.MenuBar.prototype.clearSelection = function(el){
//search any intersection with the current open element
if (!this.lastOpen)
return;
if (el)
el = el.getElementsByTagName('a')[0];
// check children
var item = this.lastOpen;
while (item != this.element)
var tmp = el;
while (tmp != this.element)
if (tmp == item)
return;
try{
tmp = tmp.parentNode;
}catch(err){break;}
item = item.parentNode;
var item = this.lastOpen;
while (item != this.element)
this.hideSubmenu(item.parentNode);
var link = item.getElementsByTagName('a')[0];
this.removeClassName(link, this.hoverClass);
this.removeClassName(link, this.subHoverClass);
item = item.parentNode;
this.lastOpen = false;
Spry.Widget.MenuBar.prototype.keyDown = function (e)
if (!this.hasFocus)
return;
if (!this.lastOpen)
this.hasFocus = false;
return;
var e = e|| event;
var listitem = this.lastOpen.parentNode;
var link = this.lastOpen;
var submenus = listitem.getElementsByTagName('ul');
var menu = (submenus.length > 0 ? submenus[0] : null);
var hasSubMenu = (menu) ? true : false;
var opts = [listitem, menu, null, this.getSibling(listitem, 'previousSibling'), this.getSibling(listitem, 'nextSibling')];
if (!opts[3])
opts[2] = (listitem.parentNode.parentNode.nodeName.toLowerCase() == 'li')?listitem.parentNode.parentNode:null;
var found = 0;
switch (e.keyCode){
case this.upKeyCode:
found = this.getElementForKey(opts, 'y', 1);
break;
case this.downKeyCode:
found = this.getElementForKey(opts, 'y', -1);
break;
case this.leftKeyCode:
found = this.getElementForKey(opts, 'x', 1);
break;
case this.rightKeyCode:
found = this.getElementForKey(opts, 'x', -1);
break;
case this.escKeyCode:
case 9:
this.clearSelection();
this.hasFocus = false;
default: return;
switch (found)
case 0: return;
case 1:
//subopts
this.mouseOver(listitem, e);
break;
case 2:
//parent
this.mouseOut(opts[2], e);
break;
case 3:
case 4:
// left - right
this.removeClassName(link, hasSubMenu ? this.subHoverClass : this.hoverClass);
break;
var link = opts[found].getElementsByTagName('a')[0];
if (opts[found].nodeName.toLowerCase() == 'ul')
opts[found] = opts[found].getElementsByTagName('li')[0];
this.addClassName(link, opts[found].getElementsByTagName('ul').length > 0 ? this.subHoverClass : this.hoverClass);
this.lastOpen = link;
opts[found].getElementsByTagName('a')[0].focus();
//stop further event handling by the browser
return Spry.Widget.MenuBar.stopPropagation(e);
Spry.Widget.MenuBar.prototype.mouseOver = function (listitem, e)
var link = listitem.getElementsByTagName('a')[0];
var submenus = listitem.getElementsByTagName('ul');
var menu = (submenus.length > 0 ? submenus[0] : null);
var hasSubMenu = (menu) ? true : false;
if (this.enableKeyboardNavigation)
this.clearSelection(listitem);
if(this.bubbledTextEvent())
// ignore bubbled text events
return;
if (listitem.closetime)
clearTimeout(listitem.closetime);
if(this.currMenu == listitem)
this.currMenu = null;
// move the focus too
if (this.hasFocus)
link.focus();
// show menu highlighting
this.addClassName(link, hasSubMenu ? this.subHoverClass : this.hoverClass);
this.lastOpen = link;
if(menu && !this.hasClassName(menu, this.subHoverClass))
var self = this;
listitem.opentime = window.setTimeout(function(){self.showSubmenu(menu);}, this.showDelay);
Spry.Widget.MenuBar.prototype.mouseOut = function (listitem, e)
var link = listitem.getElementsByTagName('a')[0];
var submenus = listitem.getElementsByTagName('ul');
var menu = (submenus.length > 0 ? submenus[0] : null);
var hasSubMenu = (menu) ? true : false;
if(this.bubbledTextEvent())
// ignore bubbled text events
return;
var related = (typeof e.relatedTarget != 'undefined' ? e.relatedTarget : e.toElement);
if(!listitem.contains(related))
if (listitem.opentime)
clearTimeout(listitem.opentime);
this.currMenu = listitem;
// remove menu highlighting
this.removeClassName(link, hasSubMenu ? this.subHoverClass : this.hoverClass);
if(menu)
var self = this;
listitem.closetime = window.setTimeout(function(){self.hideSubmenu(menu);}, this.hideDelay);
if (this.hasFocus)
link.blur();
Spry.Widget.MenuBar.prototype.getSibling = function(element, sibling)
var child = element[sibling];
while (child && child.nodeName.toLowerCase() !='li')
child = child[sibling];
return child;
Spry.Widget.MenuBar.prototype.getElementForKey = function(els, prop, dir)
var found = 0;
var rect = Spry.Widget.MenuBar.getPosition;
var ref = rect(els[found]);
var hideSubmenu = false;
//make the subelement visible to compute the position
if (els[1] && !this.hasClassName(els[1], this.MenuBarSubmenuVisible))
els[1].style.visibility = 'hidden';
this.showSubmenu(els[1]);
hideSubmenu = true;
var isVert = this.hasClassName(this.element, this.verticalClass);
var hasParent = els[0].parentNode.parentNode.nodeName.toLowerCase() == 'li' ? true : false;
for (var i = 1; i < els.length; i++){
//when navigating on the y axis in vertical menus, ignore children and parents
if(prop=='y' && isVert && (i==1 || i==2))
continue;
//when navigationg on the x axis in the FIRST LEVEL of horizontal menus, ignore children and parents
if(prop=='x' && !isVert && !hasParent && (i==1 || i==2))
continue;
if (els[i])
var tmp = rect(els[i]);
if ( (dir * tmp[prop]) < (dir * ref[prop]))
ref = tmp;
found = i;
// hide back the submenu
if (els[1] && hideSubmenu){
this.hideSubmenu(els[1]);
els[1].style.visibility = '';
return found;
Spry.Widget.MenuBar.camelize = function(str)
if (str.indexOf('-') == -1){
return str;
var oStringList = str.split('-');
var isFirstEntry = true;
var camelizedString = '';
for(var i=0; i < oStringList.length; i++)
if(oStringList[i].length>0)
if(isFirstEntry)
camelizedString = oStringList[i];
isFirstEntry = false;
else
var s = oStringList[i];
camelizedString += s.charAt(0).toUpperCase() + s.substring(1);
return camelizedString;
Spry.Widget.MenuBar.getStyleProp = function(element, prop)
var value;
try
if (element.style)
value = element.style[Spry.Widget.MenuBar.camelize(prop)];
if (!value)
if (document.defaultView && document.defaultView.getComputedStyle)
var css = document.defaultView.getComputedStyle(element, null);
value = css ? css.getPropertyValue(prop) : null;
else if (element.currentStyle)
value = element.currentStyle[Spry.Widget.MenuBar.camelize(prop)];
catch (e) {}
return value == 'auto' ? null : value;
Spry.Widget.MenuBar.getIntProp = function(element, prop)
var a = parseInt(Spry.Widget.MenuBar.getStyleProp(element, prop),10);
if (isNaN(a))
return 0;
return a;
Spry.Widget.MenuBar.getPosition = function(el, doc)
doc = doc || document;
if (typeof(el) == 'string') {
el = doc.getElementById(el);
if (!el) {
return false;
if (el.parentNode === null || Spry.Widget.MenuBar.getStyleProp(el, 'display') == 'none') {
//element must be visible to have a box
return false;
var ret = {x:0, y:0};
var parent = null;
var box;
if (el.getBoundingClientRect) { // IE
box = el.getBoundingClientRect();
var scrollTop = doc.documentElement.scrollTop || doc.body.scrollTop;
var scrollLeft = doc.documentElement.scrollLeft || doc.body.scrollLeft;
ret.x = box.left + scrollLeft;
ret.y = box.top + scrollTop;
} else if (doc.getBoxObjectFor) { // gecko
box = doc.getBoxObjectFor(el);
ret.x = box.x;
ret.y = box.y;
} else { // safari/opera
ret.x = el.offsetLeft;
ret.y = el.offsetTop;
parent = el.offsetParent;
if (parent != el) {
while (parent) {
ret.x += parent.offsetLeft;
ret.y += parent.offsetTop;
parent = parent.offsetParent;
// opera & (safari absolute) incorrectly account for body offsetTop
if (Spry.is.opera || Spry.is.safari && Spry.Widget.MenuBar.getStyleProp(el, 'position') == 'absolute')
ret.y -= doc.body.offsetTop;
if (el.parentNode)
parent = el.parentNode;
else
parent = null;
if (parent.nodeName){
var cas = parent.nodeName.toUpperCase();
while (parent && cas != 'BODY' && cas != 'HTML') {
cas = parent.nodeName.toUpperCase();
ret.x -= parent.scrollLeft;
ret.y -= parent.scrollTop;
if (parent.parentNode)
parent = parent.parentNode;
else
parent = null;
return ret;
Spry.Widget.MenuBar.stopPropagation = function(ev)
if (ev.stopPropagation)
ev.stopPropagation();
else
ev.cancelBubble = true;
if (ev.preventDefault)
ev.preventDefault();
else
ev.returnValue = false;
Spry.Widget.MenuBar.setOptions = function(obj, optionsObj, ignoreUndefinedProps)
if (!optionsObj)
return;
for (var optionName in optionsObj)
if (ignoreUndefinedProps && optionsObj[optionName] == undefined)
continue;
obj[optionName] = optionsObj[optionName];
})(); // EndSpryComponentYou don't need to upgrade your software. But if you're struggling with Spry, IMO you should cut your losses and switch to something better for the longrun.
If you have a budget to work with, I highly recommend Project Seven's Pop-Menu Magic 3. It's easy to use in DW CS4, 5, 6 or CC. More importantly, it's bullet proof and works in all devices.
Pop-Menu Magic3 by PVII (commercial DW extension)
http://www.projectseven.com/products/menusystems/pmm3/index.htm
If you don't have a budget to work with, you can roll your own menus with jQuery plugins. A bit more effort on your part, but they perform better than Spry.
jQuery Superfish
http://users.tpg.com.au/j_birch/plugins/superfish/
jQuery MegaMenu2
DEMO:
http://www.geektantra.com/projects/jquery-megamenu-2/
DOWNLOAD:
http://code.google.com/p/jquery-megamenu/
Nancy O. -
Spry Menu Bar acting weird in IE
Hello,
I am relativley new to Dreamweaver and I built a website using CS4. I never did a spry menu bar and I have one on my site. The menu bar works fine in firefox, in safari it seems to work as it is aligned right, but my flash player doesn't. But the main problem is in IE. The grey background I have for the spry bar is in the right spot but the actual links are offset, and when you role over them the submenus are on the left and also offset. I tried messing around with the hack IE in the spry css but not really sure what I am doing as I don't know code too much. I also am Mac based and the problem in IE is on the PC. Also I built all the pages in Illustrator and inserted them in and used hot spots. I am not sure if that may have something to do with it. If any one can help I would really appreciate it. The website I created is http://www.menaceaudio.com.
Also if this helps here is my SpryMenuBarHorizontal.css
@charset "UTF-8";
/* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
@media screen, projection
/* SpryMenuBarHorizontal.css - version 0.6 - Spry Pre-Release 1.6.1 */
/* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
LAYOUT INFORMATION: describes box model, positioning, z-order
/* The outermost container of the Menu Bar, an auto width box with no margin or padding */
ul.MenuBarHorizontal
margin: auto;
list-style-type: none;
font-size: 100%;
cursor: default;
width: 41.25em;
padding: 0px;
/* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
ul.MenuBarActive
z-index: 1000;
/* Menu item containers, position children relative to this container and are a fixed width */
ul.MenuBarHorizontal li
margin: 0;
list-style-type: none;
font-size: 14pt;
position: relative;
text-align: center;
cursor: pointer;
float: left;
padding: 0;
color: #FFF;
background-color:#ccc;
width: 8.23em;
/* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
ul.MenuBarHorizontal ul
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
z-index: 1020;
cursor: default;
float: left;
left: -1000px;
width: 8.23em;
position: absolute;
background-color: #CCC;
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
left: 0px;
/* Menu item containers are same fixed width as parent */
ul.MenuBarHorizontal ul li
width: 8.23em;
background-color: #CCC;
position: relative;
/* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
ul.MenuBarHorizontal ul ul
position: absolute;
margin-top: -5%;
margin-right: 0;
margin-bottom: 0;
margin-left: 95%;
/* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
background-repeat: repeat-y;
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
ul.MenuBarHorizontal a
left: -20px;
top: 30px;
DESIGN INFORMATION: describes color scheme, borders, fonts
/* Submenu containers have borders on all sides */
ul.MenuBarHorizontal ul
/* Menu items are a light gray block with padding and no text decoration */
ul.MenuBarHorizontal a
cursor: pointer;
text-decoration: none;
font-family: eurostile;
font-size: 14px;
background-repeat: no-repeat;
padding: 0.5em;
margin: 0.5px;
display: block;
color: #036;
border-top-width: thin;
border-right-width: thin;
border-bottom-width: thin;
border-left-width: thin;
border-top-style: solid;
border-bottom-style: solid;
border-left-style: solid;
border-top-color: #333;
border-right-color: #333;
border-bottom-color: #333;
border-left-color: #333;
border-right-style: solid;
/* Menu items that have mouse over or focus have a blue background and white text */
ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
color: #FFF;
/* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
SUBMENU INDICATION: styles if there is a submenu under a given menu item
/* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal a.MenuBarItemSubmenu
background-repeat: repeat-x;
font-family: eurostile;
/* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
/* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
BROWSER HACKS: the hacks below should not be changed unless you are an expert
/* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
ul.MenuBarHorizontal iframe
position:absolute;
z-index: 1010;
filter:alpha(opacity:0.1);
ul.MenuBarHorizontal li.MenuBarItemIE
ßfloat: left;
position: relative;
display: inline;I'm using IE8, and I don't see the offset errors of which you speak. I do recommend restoring the IE hacks at the bottom of the stylesheet to the original, however.
I also notice that the width of the individual menu items (top level) is forcing "CONTACT" to a second line. You can safely remove the pixel width on the containing div, returning to 100%. But your paddings and widths of top level menu items may be the forcing issue here.
Beth -
Spry Menu bar wrongly displayed in IE
Hi,
on my website i integrated a Spry Menu bar with one Submenu, which really works fine in Firefox. The boxes have a defined width of 124 px.
My problem is, if you view this site with IE, the drop down menus don´t work and you are asked to activate activeX or scripts. If you do so the whole menu is displayed white unless you roll over the buttons, you can see what actually should be there. Another bug is that the submenus, are oriented horizontally instead of vertically.
Can anyone help me with this nice IE problem?
Thanks a lot !
Here my CSS-Code: and my website:http://www.grassnet.info/transfer.html
@charset "UTF-8";
/* SpryMenuBarHorizontal.css - version 0.6 - Spry Pre-Release 1.6.1 */
/* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
LAYOUT INFORMATION: describes box model, positioning, z-order
/* The outermost container of the Menu Bar, an auto width box with no margin or padding */
ul.MenuBarHorizontal
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
cursor: default;
width: auto;
font-weight: normal;
/* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
ul.MenuBarActive
z-index: 1000;
/* Menu item containers, position children relative to this container and are a fixed width */
ul.MenuBarHorizontal li
margin: 0;
padding: 0;
list-style-type: none;
font-size: 90%;
position: relative;
text-align: center;
cursor: pointer;
width: 125px;
float: left;
font-family: Calibri, Arial, Helvetica, sans-serif;
font-style: normal;
font-weight: bold;
background-color: #078601;
border: thin solid #333;
color: #FFF;
/* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
ul.MenuBarHorizontal ul
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
z-index: 1020;
cursor: default;
position: absolute;
left: -1000em;
font-weight: normal;
visibility: visible;
border-top-style: none;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
color: #FFF;
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
left: auto;
/* Menu item containers are same fixed width as parent */
ul.MenuBarHorizontal ul li
width: 124px;
text-align: left;
font-weight: normal;
background-color: #80c35d;
border-top-width: 1px;
border-right-width: 1px;
border-bottom-width: 1px;
border-left-width: 1px;
border-top-style: dashed;
border-right-style: solid;
border-bottom-style: dashed;
border-left-style: solid;
border-top-color: #078601;
border-right-color: #078601;
border-bottom-color: #078601;
border-left-color: #078601;
font-family: Calibri, Arial, Helvetica, sans-serif,;
list-style-type: none;
list-style-position: inside;
/* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
ul.MenuBarHorizontal ul ul
position: absolute;
margin: -5% 0 0 95%;
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
left: auto;
top: 0;
DESIGN INFORMATION: describes color scheme, borders, fonts
/* Submenu containers have borders on all sides */
ul.MenuBarHorizontal ul
border: 1px solid #CCC;
/* Menu items are a light gray block with padding and no text decoration */
ul.MenuBarHorizontal a
display: block;
cursor: pointer;
padding: 0.5em 0.75em;
text-decoration: none;
text-transform: none;
color: #FFF;
/* Menu items that have mouse over or focus have a blue background and white text */
ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
background-color: #A5FC76;
color: #FFF;
/* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
background-color: #A5FC76;
color: #000;
SUBMENU INDICATION: styles if there is a submenu under a given menu item
/* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal a.MenuBarItemSubmenu
background-image: url(SpryMenuBarDown.gif);
background-repeat: no-repeat;
background-position: 95% 50%;
/* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
background-image: url(SpryMenuBarRight.gif);
background-repeat: no-repeat;
background-position: 95% 50%;
/* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
background-image: url(SpryMenuBarDownHover.gif);
background-repeat: no-repeat;
background-position: 95% 50%;
/* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
background-image: url(SpryMenuBarRightHover.gif);
background-repeat: no-repeat;
background-position: 95% 50%;
BROWSER HACKS: the hacks below should not be changed unless you are an expert
/* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
ul.MenuBarHorizontal iframe
position: absolute;
z-index: 1010;
filter:alpha(opacity:0.1);
/* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
@media screen, projection
ul.MenuBarHorizontal li.MenuBarItemIE
display: inline;
f\loat: left;
background: #FFF;Hi Ben,
thanks a lot for your great help. I integrated your recommendations in my sprymenubarhorizontal.css file and uploaded it.
When i preview the site in the browser (Dreamweaver -> Preview in Iexplorer) it all looks like it should.
However when i uploaded the new css file, the change is not visible. It´s still the old mistake.
What am i doing wrong? What i also wonder about is, that the css file has a size of 6.554 Bytes. When i upload it, it only has 6.353 bytes.
Can this be correct? Also the SpryMenuBar.js files are different in size.
Do you have any idae what the problem here is?
Thanks again !
Add: I just recognized that also my html. files are different in size. So i guess this is normal. But where is the mistake hiding? I´courious
Or could you pleas check again from your pc in iexplore? Thanks -
Child value is not updated?
Private Sub SBO_Application_ItemEvent(ByVal FormUID As String, ByRef pVal As SAPbouiCOM.ItemEvent, ByRef BubbleEvent As Boolean) Handles SBO_Application.ItemEvent
Dim i As Integer
Dim sumdepth As Decimal = 0
Dim oForm As SAPbouiCOM.Form
Dim Matrix As SAPbouiCOM.Matrix
oForm = SBO_Application.Forms.Item(FormUID)
Select Case pVal.EventType
Case SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED
'// Check if the event was raised by one of the Folder items
'// and change the form's pane level
Case SAPbouiCOM.BoEventTypes.et_CLICK
If pVal.ItemUID = "1" And pVal.BeforeAction = True Then
If oForm.Mode = SAPbouiCOM.BoFormMode.fm_ADD_MODE Or oForm.Mode = SAPbouiCOM.BoFormMode.fm_UPDATE_MODE Then
'If Validation() = False Then
If oForm.Items.Item("OrdrVal").Specific().Value = "" Then
BubbleEvent = False
'SBO_Application.MessageBox(" Please Enter The Order No ")
SBO_Application.StatusBar.SetText("Enter The Order No- 3029 Item Is Not Selectable ", SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
oForm.Items.Item("OrdrVal").Click(SAPbouiCOM.BoCellClickType.ct_Regular)
Exit Sub
End If
If oForm.Items.Item("LocVal").Specific().Value = "" Then
BubbleEvent = False
' SBO_Application.MessageBox(" Please Enter The Location ")
SBO_Application.StatusBar.SetText("Enter The Location - 3029 Item Is Not Selectable ", SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
oForm.Items.Item("LocVal").Click(SAPbouiCOM.BoCellClickType.ct_Regular)
Exit Sub
End If
If oForm.Items.Item("SupVal").Specific().Value = "" Then
BubbleEvent = False
' SBO_Application.MessageBox(" Please Enter The Location ")
SBO_Application.StatusBar.SetText("Enter The Supervisor - 3029 Item Is Not Selectable ", SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
oForm.Items.Item("SupVal").Click(SAPbouiCOM.BoCellClickType.ct_Regular)
Exit Sub
End If
Matrix = oForm.Items.Item("Matrix1").Specific
If Matrix.Columns.Item("Depth").Cells.Item(1).Specific.Value = "" Then
BubbleEvent = False
' SBO_Application.MessageBox(" Please Enter The Location ")
SBO_Application.StatusBar.SetText("Enter The Depth - 3029 Item Is Not Selectable ", SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
' oForm.Items.Item("Depth").Click(SAPbouiCOM.BoCellClickType.ct_Regular)
Exit Sub
End If
'Dim sSQL As String
'Dim logno As Integer
''sSQL = "SELECT COUNT(DocEntry)AS count FROM [@OOBR]"
'sSQL = "SELECT Max(DocEntry)AS count FROM [@OOBR]"
'oLineRec = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
'oLineRec.DoQuery(sSQL)
'logno = CInt(oLineRec.Fields.Item(0).Value) + 1
'oForm.Items.Item("LogVal").Specific().Value = logno
End If
End If
End Select
If pVal.EventType = SAPbouiCOM.BoEventTypes.et_CHOOSE_FROM_LIST Then
Dim oCFLEvento As SAPbouiCOM.IChooseFromListEvent
oCFLEvento = pVal
Dim sCFL_ID As String
sCFL_ID = oCFLEvento.ChooseFromListUID
Dim oCFL As SAPbouiCOM.ChooseFromList
oCFL = oForm.ChooseFromLists.Item(sCFL_ID)
'SBO_Application.MessageBox(oCFL)
If oCFLEvento.BeforeAction = False Then
Dim oDataTable As SAPbouiCOM.DataTable
oDataTable = oCFLEvento.SelectedObjects
ShowValue(pVal, oDataTable, oForm)
End If
End If
Matrix = oForm.Items.Item("Matrix1").Specific
If ((pVal.ItemUID = "Matrix1") And (pVal.Row = Matrix.RowCount) And (pVal.EventType = SAPbouiCOM.BoEventTypes.et_KEY_DOWN)) Then
Matrix.AddRow(1, -1)
Matrix.Columns.Item("#").Cells.Item(Matrix.RowCount).Specific.Value = Matrix.RowCount
End If
If ((pVal.FormUID = "SM_OBRFM") And (pVal.EventType = SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED) Or (pVal.EventType = SAPbouiCOM.BoEventTypes.et_KEY_DOWN)) Then
For i = 1 To Matrix.RowCount
sumdepth += Matrix.Columns.Item("Depth").Cells.Item(i).Specific.Value
oForm.Items.Item("DepthVal").Specific().value = sumdepth
Dim oDocRec As SAPbobsCOM.Recordset
Dim sSQL As String
If oDocRec.RecordCount > 0 Then
sSQL = ""
Dim UpdateRec As SAPbobsCOM.Recordset
UpdateRec = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
UpdateRec.DoQuery(sSQL)
End If
Next
End If
If (FormUID = "SM_OBRFM") And (pVal.EventType = SAPbouiCOM.BoEventTypes.et_FORM_UNLOAD) Then
Windows.Forms.Application.Exit()
End If
End Sub
Private Sub SalesOrdrCFL(ByVal oForm As SAPbouiCOM.Form)
Try
Dim oCFLs As SAPbouiCOM.ChooseFromListCollection
'Dim oCons As SAPbouiCOM.Conditions
'Dim oCon As SAPbouiCOM.Condition
oCFLs = oForm.ChooseFromLists
Dim oCFL As SAPbouiCOM.ChooseFromList
Dim oCFLCreationParams As SAPbouiCOM.ChooseFromListCreationParams
oCFLCreationParams = SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_ChooseFromListCreationParams)
' Adding 2 CFL, one for the button and one for the edit text.
oCFLCreationParams.MultiSelection = False
oCFLCreationParams.ObjectType = "17"
oCFLCreationParams.UniqueID = "CFL1"
oCFL = oCFLs.Add(oCFLCreationParams)
oCFLCreationParams.UniqueID = "CFL2"
oCFL = oCFLs.Add(oCFLCreationParams)
Catch
MsgBox(Err.Description)
End Try
End Sub
error data already exist in child tableImports System
Imports System.web
Imports System.Windows.Forms.Form
Public Class SM_DPSFM
'// At the begining of every UI API project we should first
'// establish connection with a running SBO application.
Private WithEvents SBO_Application As SAPbouiCOM.Application
Private oForm As SAPbouiCOM.Form
Dim oButton As SAPbouiCOM.Button
Dim oOptionBtn As SAPbouiCOM.OptionBtn
Dim oCheckBox As SAPbouiCOM.CheckBox
Dim oComboBox As SAPbouiCOM.ComboBox
Dim oItem As SAPbouiCOM.Item
Dim oStatic As SAPbouiCOM.StaticText
Dim oEdittext As SAPbouiCOM.EditText
Dim oEditItem As SAPbouiCOM.EditText
Private oMatrix As SAPbouiCOM.Matrix
Private Matrix2 As SAPbouiCOM.Matrix
Private oLink As SAPbouiCOM.LinkedButton
Private oColumns As SAPbouiCOM.Columns
Private oColumn As SAPbouiCOM.Column
Private sPath As String
Private oDBDataSource As SAPbouiCOM.DBDataSource
Private oCompany As SAPbobsCOM.Company
Private rs As SAPbobsCOM.Recordset
Private oLineRec As SAPbobsCOM.Recordset
Private rs1 As SAPbobsCOM.Recordset
'// declaring a User data source for the "Remarks" Column
Private oUserDataSource As SAPbouiCOM.UserDataSource
Public sErrMsg As String
Public lErrCode As Long
Public lRetCode As Long
Private Sub SetApplication()
'// Use an SboGuiApi object to establish the connection
'// with the application and return an initialized appliction object
Dim SboGuiApi As SAPbouiCOM.SboGuiApi
Dim sConnectionString As String
SboGuiApi = New SAPbouiCOM.SboGuiApi
'// by following the steps specified above, the following
'// statment should be suficient for either development or run mode
sConnectionString = Environment.GetCommandLineArgs.GetValue(1)
'// connect to a running SBO Application
SboGuiApi.Connect(sConnectionString)
'// get an initialized application object
SBO_Application = SboGuiApi.GetApplication()
End Sub
Private Sub AddMenuItems()
'// Let's add a pop-up menu item and 2 sub menu items
Dim oMenus As SAPbouiCOM.Menus '// use the following object to add menu
Dim oMenuItem As SAPbouiCOM.MenuItem
'// Get the menus collection from the application
oMenus = SBO_Application.Menus
Dim oCreationPackage As SAPbouiCOM.MenuCreationParams
oCreationPackage = SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_MenuCreationParams)
oMenuItem = SBO_Application.Menus.Item("43520") 'moudles'
sPath = System.Windows.Forms.Application.StartupPath()
sPath = sPath.Remove(sPath.Length - 3, 3)
'' Creation parameters
oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_POPUP
oCreationPackage.UniqueID = "SM_DMID"
oCreationPackage.String = "Dealer Mgmt."
'oCreationPackage.Image = sPath & "dealermg.gif"
oCreationPackage.Image = IO.Directory.GetParent(Application.StartupPath).ToString & "\CFL.BMP"
'' we add our menu at the buttom of the list
oCreationPackage.Position = oMenuItem.SubMenus.Count + 1
oMenus = oMenuItem.SubMenus
Try ' If the menu already exists this code will fail
oMenus.AddEx(oCreationPackage)
'' Get the menu collection of the newly added pop-up item
oMenuItem = SBO_Application.Menus.Item("SM_DMID")
oMenus = oMenuItem.SubMenus
'' Add Sub Menu Items
oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_STRING
oCreationPackage.UniqueID = "SM_DPSMENU" ''Unique ID of 1st Sub Menu item
oCreationPackage.String = "Dumper Performance Sheet"
oMenus.AddEx(oCreationPackage)
Catch er As Exception ' Error Handling
SBO_Application.MessageBox(er.Message)
End Try
End Sub
'Private Sub AddMenuItems()
' '// Let's add a pop-up menu item and 2 sub menu items
' Dim oMenus As SAPbouiCOM.Menus '// use the following object to add menu
' Dim oMenuItem As SAPbouiCOM.MenuItem
' '// Get the menus collection from the application
' oMenus = SBO_Application.Menus
' Dim oCreationPackage As SAPbouiCOM.MenuCreationParams
' oMenuItem = SBO_Application.Menus.Item("SM_DMID")
' sPath = System.Windows.Forms.Application.StartupPath()
' sPath = sPath.Remove(sPath.Length - 3, 3)
' oMenus = oMenuItem.SubMenus
' Try ' If the menu already exists this code will fail
' '' Add Sub Menu Items
' oCreationPackage = SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_MenuCreationParams)
' oCreationPackage.UniqueID = "SM_DPSMENU"
' oCreationPackage.String = "Dumper Performance Sheet"
' oCreationPackage.Position = 1
' oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_STRING
' oMenuItem = oMenus.AddEx(oCreationPackage)
' Catch er As Exception ' Error Handling
' SBO_Application.MessageBox(er.Message)
' End Try
'End Sub
Private Sub SBO_Application_MenuEvent(ByRef pVal As SAPbouiCOM.MenuEvent, ByRef BubbleEvent As Boolean) Handles SBO_Application.MenuEvent
If pVal.BeforeAction = False Then
Select Case pVal.MenuUID
Case "SM_DPSMENU"
diplay_DPSform() ''Function to display 1st Sub Menu item (D.P.S.) form.
End Select
End If
End Sub
'Function to draw the Dumper Performance Sheet.
Private Sub diplay_DPSform()
Dim oForm As SAPbouiCOM.Form
Dim val1 As String
Try
oForm = SBO_Application.Forms.Item("SM_DPSFM")
SBO_Application.MessageBox("Form Already Open")
Catch ex As Exception
Dim fcp As SAPbouiCOM.FormCreationParams
fcp = SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_FormCreationParams)
fcp.BorderStyle = SAPbouiCOM.BoFormBorderStyle.fbs_Fixed
fcp.FormType = "SM_DPSFM"
fcp.ObjectType = "SM_DPS"
fcp.UniqueID = "SM_DPSFM"
fcp.BorderStyle = SAPbouiCOM.BoFormBorderStyle.fbs_Sizable
oForm = SBO_Application.Forms.AddEx(fcp)
oForm.AutoManaged = False
SalesOrdrCFL(oForm) ''Function to see the list of Sales Orders.
'OBRCFL(oForm)
itemlist(oForm)
DrawDPSForm(oForm)
''Function to Draw the form for 1st Sub Menu
End Try
oForm.DataBrowser.BrowseBy = "DpsVal"
oForm.Visible = True
End Sub
''Function to Draw the form for Sub Menu
Private Sub DrawDPSForm(ByVal oForm As SAPbouiCOM.Form)
Dim oItem As SAPbouiCOM.Item
Dim oButton As SAPbouiCOM.Button
Dim oEdittext As SAPbouiCOM.EditText
Dim val As String
''Form specifications
oForm.Title = "Dumper Performance Sheet"
oForm.Left = 320 '340
oForm.ClientWidth = 550 '350
oForm.Top = 100
oForm.ClientHeight = 422 '393
'Adding a datasource to the form
oDBDataSource = oForm.DataSources.DBDataSources.Add("@ODPS")
''Order Text
oItem = oForm.Items.Add("OrdrTxt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
oItem.Left = 5
oItem.Width = 100
oItem.Top = 10
' oItem.AffectsFormMode = False
oItem.LinkTo = "OrdrVal"
oStatic = oItem.Specific
oStatic.Caption = "Order No."
''Order Date Text
oItem = oForm.Items.Add("OrdrdtTxt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
oItem.Left = 5
oItem.Width = 100
oItem.Top = 27
oItem.AffectsFormMode = False
oItem.LinkTo = "OrdrdtVal"
oStatic = oItem.Specific
oStatic.Caption = "Order Date"
''Customer Text Box
oItem = oForm.Items.Add("CustTxt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
oItem.Left = 5
oItem.Width = 100
oItem.Top = 44
oItem.AffectsFormMode = False
oItem.LinkTo = "CustVal"
oStatic = oItem.Specific
oStatic.Caption = "Customer Name"
''DPS Text
oItem = oForm.Items.Add("DpsTxt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
oItem.Left = 290 '271
oItem.Width = 50 '100
oItem.Top = 10
oItem.AffectsFormMode = False
oItem.LinkTo = "DpsVal"
oStatic = oItem.Specific
oStatic.Caption = "DPS No."
''DPS Date
oItem = oForm.Items.Add("DateTxt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
oItem.Left = 290
oItem.Width = 50 '100
oItem.Top = 27
oItem.AffectsFormMode = False
oItem.LinkTo = "DateVal"
oStatic = oItem.Specific
oStatic.Caption = "DPS Date"
''Log No. Text
oItem = oForm.Items.Add("LogTxt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
oItem.Left = 5 '290
oItem.Width = 100 '50 '100
oItem.Top = 61
oItem.AffectsFormMode = False
oItem.LinkTo = "LogVal"
oStatic = oItem.Specific
oStatic.Caption = "Log No."
''SuperVisor Text
oItem = oForm.Items.Add("SupTxt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
oItem.Left = 5
oItem.Width = 100
oItem.Top = 300
oItem.AffectsFormMode = False
oItem.LinkTo = "SupVal"
oStatic = oItem.Specific
oStatic.Caption = "Supervisor"
''Total Trip for S/M Text
oItem = oForm.Items.Add("Trip1Txt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
oItem.Left = 290
oItem.Width = 140 '100
oItem.Top = 300
oItem.AffectsFormMode = False
oItem.LinkTo = "Trip1Val"
oStatic = oItem.Specific
oStatic.Caption = "Total Trips Made For S/M"
''Remarks Text
oItem = oForm.Items.Add("RmksTxt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
oItem.Left = 5
oItem.Width = 50 '100
oItem.Top = 320
oItem.AffectsFormMode = False
oItem.LinkTo = "RmksVal"
oStatic = oItem.Specific
oStatic.Caption = "Remarks"
''Total Trip for LATERITE Text
oItem = oForm.Items.Add("Trip2Txt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
oItem.Left = 290
oItem.Width = 140 '100
oItem.Top = 320
oItem.AffectsFormMode = False
oItem.LinkTo = "Trip2Val"
oStatic = oItem.Specific
oStatic.Caption = "Total Trips Made For LAT"
''Total Trip for BAUXITE Text
oItem = oForm.Items.Add("Trip3Txt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
oItem.Left = 290
oItem.Width = 140 '100
oItem.Top = 340
oItem.AffectsFormMode = False
oItem.LinkTo = "Trip3Val"
oStatic = oItem.Specific
oStatic.Caption = "Total Trips Made For BAUX "
''Total Trip for Item4 Text
oItem = oForm.Items.Add("Trip4Txt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
oItem.Left = 290
oItem.Width = 140 '100
oItem.Top = 360
oItem.AffectsFormMode = False
oItem.LinkTo = "Trip4Val"
oStatic = oItem.Specific
oStatic.Caption = "Total Trips Made For Itm4"
''Total Trip for Item5 Text
oItem = oForm.Items.Add("Trip5Txt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
oItem.Left = 290
oItem.Width = 140 '100
oItem.Top = 380
oItem.AffectsFormMode = False
oItem.LinkTo = "Trip5Val"
oStatic = oItem.Specific
oStatic.Caption = "Total Trips Made For Itm5"
'oItem = oForm.Items.Add("Txt", SAPbouiCOM.BoFormItemTypes.it_STATIC)
'oItem.Left = 106
'oItem.Width = 4
'oItem.Top = 10
'' oItem.AffectsFormMode = False
''oItem.LinkTo = "OrdrVal" '"Vndval"
'oStatic = oItem.Specific
''oStatic.Caption = "Order No."
'oLink = oItem.ExtendedObject '// new property
'oLink.LinkedObject = SAPbouiCOM.BoLinkedObject.lf_Order
Dim oEditlogdt As SAPbouiCOM.EditText
' Dim oEdittype As SAPbouiCOM.EditText
'Dim oEditloc As SAPbouiCOM.EditText
Dim oEditordr As SAPbouiCOM.EditText
Dim oEditorddt As SAPbouiCOM.EditText
Dim oEditcust As SAPbouiCOM.EditText
Dim oEditdep As SAPbouiCOM.EditText
Dim oEditsup As SAPbouiCOM.EditText
Dim oEditrmrk As SAPbouiCOM.EditText
Dim val1 As String
Dim sSQL As String
Dim logno As Integer
sSQL = "SELECT Max(DocEntry)AS count FROM [@ODPS]"
oLineRec = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
oLineRec.DoQuery(sSQL)
logno = CInt(oLineRec.Fields.Item(0).Value) + 1
''DPS No. Edit Box
oItem = oForm.Items.Add("DpsVal", SAPbouiCOM.BoFormItemTypes.it_EDIT)
oItem.Left = 376
oItem.Width = 160
oItem.Top = 10
oItem.AffectsFormMode = True
oItem.LinkTo = "DpsTxt"
oItem.Enabled = False
oEdittext = oItem.Specific
oEdittext.DataBind.SetBound(True, "@ODPS", "DocEntry")
oEdittext.Value = logno
''Order Edit Text Box
oItem = oForm.Items.Add("OrdrVal", SAPbouiCOM.BoFormItemTypes.it_EDIT)
oItem.Left = 110
oItem.Width = 160
oItem.Top = 10
oItem.LinkTo = "OrdrTxt"
oItem.AffectsFormMode = True
oEditordr = oItem.Specific
'' Adding Choose From List
oEditordr.DataBind.SetBound(True, "@ODPS", "U_ordrno")
' Adding 2 Choose From List Object, ONE FOR EDIT TEXT AND ONE FOR BUTTON.
oEditordr.ChooseFromListUID = "CFL1"
''We set the alias only after the UID is set, the alias is the field in the database
''It compares the value in the edit text and narrows the CFL accrodingly
oEditordr.ChooseFromListAlias = "DocEntry" '"CardCode"
''Order Date Edit Box
oItem = oForm.Items.Add("OrdrdtVal", SAPbouiCOM.BoFormItemTypes.it_EDIT)
oItem.Left = 110
oItem.Width = 160
oItem.Top = 27
oItem.AffectsFormMode = True
oItem.LinkTo = "OrdrdtTxt"
oItem.Enabled = False
oEditorddt = oItem.Specific
oEditorddt.DataBind.SetBound(True, "@ODPS", "U_ordrdt")
' oEditorddt.String = Format(DateTime.Today, "ddMMyy")
''Customer Edit Box
oItem = oForm.Items.Add("CustVal", SAPbouiCOM.BoFormItemTypes.it_EDIT)
oItem.Left = 110
oItem.Width = 160
oItem.Top = 44
oItem.AffectsFormMode = True
oItem.LinkTo = "CustTxt"
oItem.Enabled = False
oEditcust = oItem.Specific
oEditcust.DataBind.SetBound(True, "@ODPS", "U_customer")
''DPS Date Edit Box
oItem = oForm.Items.Add("DateVal", SAPbouiCOM.BoFormItemTypes.it_EDIT)
oItem.Left = 376
oItem.Width = 160
oItem.Top = 27
oItem.AffectsFormMode = True
oItem.LinkTo = "DateTxt"
oEditlogdt = oItem.Specific
oEditlogdt.DataBind.SetBound(True, "@ODPS", "U_dpsdt")
oEditlogdt.String = Format(DateTime.Today, "ddMMyy")
''Log No. Edit
oItem = oForm.Items.Add("LogVal", SAPbouiCOM.BoFormItemTypes.it_COMBO_BOX)
oItem.Left = 110
oItem.Width = 160
oItem.Top = 61
oItem.AffectsFormMode = True
oItem.LinkTo = "LogTxt"
oComboBox = oItem.Specific
AddLogCodeCombo(oForm, val1)
'AddLogCodeCombo(oComboBox)
oComboBox.DataBind.SetBound(True, "@ODPS", "U_logno")
'oComboBox.ValidValues.Add("", "")
'oComboBox.Select(0, SAPbouiCOM.BoSearchKey.psk_Index)
''Total Trip for S/M Edit Box
oItem = oForm.Items.Add("Trip1Val", SAPbouiCOM.BoFormItemTypes.it_EDIT)
oItem.Left = 430 '376
oItem.Width = 105 '80
oItem.Top = 300
oItem.AffectsFormMode = True
oItem.LinkTo = "Trip1Txt"
oItem.Enabled = False
oEditdep = oItem.Specific
oEditdep.DataBind.SetBound(True, "@ODPS", "U_ttaltripsm")
''SuperVisor Edit Box
oItem = oForm.Items.Add("SupVal", SAPbouiCOM.BoFormItemTypes.it_EDIT)
oItem.Left = 110
oItem.Width = 160
oItem.Top = 300
oItem.AffectsFormMode = True
oItem.LinkTo = "SupTxt"
oEditsup = oItem.Specific
oEditsup.DataBind.SetBound(True, "@ODPS", "U_suprvsr")
''Remarks Edit Box
oItem = oForm.Items.Add("RmksVal", SAPbouiCOM.BoFormItemTypes.it_EXTEDIT)
oItem.Left = 110
oItem.Width = 160
oItem.Top = 320
oItem.AffectsFormMode = True
oItem.LinkTo = "RmksTxt"
oEditrmrk = oItem.Specific
oEditrmrk.DataBind.SetBound(True, "@ODPS", "U_remark")
''Total Trip for Laterite Edit Box
oItem = oForm.Items.Add("Trip2Val", SAPbouiCOM.BoFormItemTypes.it_EDIT)
oItem.Left = 430 '376
oItem.Width = 105 '80
oItem.Top = 320
oItem.AffectsFormMode = True
oItem.LinkTo = "Trip2Txt"
oItem.Enabled = False
oEditdep = oItem.Specific
oEditdep.DataBind.SetBound(True, "@ODPS", "U_ttaltriplat")
''Total Trip for Bauxite Edit Box
oItem = oForm.Items.Add("Trip3Val", SAPbouiCOM.BoFormItemTypes.it_EDIT)
oItem.Left = 430 '376
oItem.Width = 105 '80
oItem.Top = 340
oItem.AffectsFormMode = True
oItem.LinkTo = "Trip3Txt"
oItem.Enabled = False
oEditdep = oItem.Specific
oEditdep.DataBind.SetBound(True, "@ODPS", "U_ttaltripbx")
''Total Trip for Item4 Edit Box
oItem = oForm.Items.Add("Trip4Val", SAPbouiCOM.BoFormItemTypes.it_EDIT)
oItem.Left = 430 '376
oItem.Width = 105 '80
oItem.Top = 360
oItem.AffectsFormMode = True
oItem.LinkTo = "Trip4Txt"
oItem.Enabled = False
oEditdep = oItem.Specific
oEditdep.DataBind.SetBound(True, "@ODPS", "U_ttaltripitm4")
''Total Trip for Item 5 Edit Box
oItem = oForm.Items.Add("Trip5Val", SAPbouiCOM.BoFormItemTypes.it_EDIT)
oItem.Left = 430 '376
oItem.Width = 105 '160
oItem.Top = 380
oItem.AffectsFormMode = True
oItem.LinkTo = "Trip5Txt"
oItem.Enabled = False
oEditdep = oItem.Specific
oEditdep.DataBind.SetBound(True, "@ODPS", "U_ttaltripitm5")
'// Adding a OrderCFL button
oItem = oForm.Items.Add("Button1", SAPbouiCOM.BoFormItemTypes.it_BUTTON)
oItem.Left = 269 '271
oItem.Top = 8
oButton = oItem.Specific
oButton.Type = SAPbouiCOM.BoButtonTypes.bt_Image
oItem.Width = 20
oItem.Height = 20
oButton.Image = IO.Directory.GetParent(Application.StartupPath).ToString & "\CFL.BMP"
'SBO_Application.MessageBox(oButton.Image)
'oButton.Image = "C:\Documents and Settings\subratac\My Documents\Visual Studio 2005\Projects\TestAddonApplication\TestAddonApplication\bin\CFL.BMP"
'' Adding Choose From List Object FOR BUTTON.
oButton.ChooseFromListUID = "CFL2"
'Adding a datasource to the form
oDBDataSource = oForm.DataSources.DBDataSources.Add("@DPS1")
'// Adding a Matrix item
oItem = oForm.Items.Add("Matrix1", SAPbouiCOM.BoFormItemTypes.it_MATRIX)
oItem.Left = 5
oItem.Width = 550 '350
oItem.Top = 95
oItem.Height = 200 '150
oMatrix = oItem.Specific
oColumns = oMatrix.Columns
'// Adding Culomn items to the matrix
oColumn = oColumns.Add("#", SAPbouiCOM.BoFormItemTypes.it_EDIT)
oColumn.TitleObject.Caption = "#"
oColumn.Width = 50
oColumn.Editable = False
'oColumn.DataBind.SetBound(True, "@DPS1", "U_holeno")
'// Add a column for Vehicle no.
'oColumn = oColumns.Add("Vhcleno", SAPbouiCOM.BoFormItemTypes.it_EDIT)
'oColumn.TitleObject.Caption = "Vehicle No."
'oColumn.Width = 80
'oColumn.Editable = True
oColumn = oColumns.Add("Vhcleno", SAPbouiCOM.BoFormItemTypes.it_LINKED_BUTTON)
oColumn.TitleObject.Caption = "Vehicle No."
oColumn.Width = 80
oColumn.Editable = True
oLink = oColumn.ExtendedObject
oLink.LinkedObject = SAPbouiCOM.BoLinkedObject.lf_Items
oColumn.DataBind.SetBound(True, "@DPS1", "U_vehcleno")
oColumn.ChooseFromListUID = "CFL5"
oColumn.ChooseFromListAlias = "ItemCode"
'// Add a column for vehicle name
oColumn = oColumns.Add("Vhclenm", SAPbouiCOM.BoFormItemTypes.it_EDIT)
oColumn.TitleObject.Caption = "Vehicle Name"
oColumn.Width = 80
oColumn.Editable = True
oColumn.DataBind.SetBound(True, "@DPS1", "U_vehclenm")
'// Add a column for Trip S/M
oColumn = oColumns.Add("Trpsm", SAPbouiCOM.BoFormItemTypes.it_EDIT)
oColumn.TitleObject.Caption = "Trip(S/M)"
oColumn.Width = 80
oColumn.Editable = True
oColumn.DataBind.SetBound(True, "@DPS1", "U_tripsm")
'// Add a column for Trip Laterite
oColumn = oColumns.Add("Trplat", SAPbouiCOM.BoFormItemTypes.it_EDIT)
oColumn.TitleObject.Caption = "Trip(Laterite)"
oColumn.Width = 80
oColumn.Editable = True
oColumn.DataBind.SetBound(True, "@DPS1", "U_triplat")
'// Add a column for Trip Bauxite
oColumn = oColumns.Add("Trpbax", SAPbouiCOM.BoFormItemTypes.it_EDIT)
oColumn.TitleObject.Caption = "Trip(Bauxite)"
oColumn.Width = 80
oColumn.Editable = True
oColumn.DataBind.SetBound(True, "@DPS1", "U_tripbx")
'// Add a column for Item 4
oColumn = oColumns.Add("Trpitm4", SAPbouiCOM.BoFormItemTypes.it_EDIT)
oColumn.TitleObject.Caption = "Trip(Item 4)"
oColumn.Width = 80
oColumn.Editable = True
oColumn.DataBind.SetBound(True, "@DPS1", "U_tripitm4")
'// Add a column for Item 5
oColumn = oColumns.Add("Trpitm5", SAPbouiCOM.BoFormItemTypes.it_EDIT)
oColumn.TitleObject.Caption = "Trip(Item 5)"
oColumn.Width = 80
oColumn.Editable = True
oColumn.DataBind.SetBound(True, "@DPS1", "U_tripitm5")
''// Link the column to the Stock Transfer master data system form
'oLink = oColumn.ExtendedObject
'oLink.LinkedObject = SAPbouiCOM.BoLinkedObject.lf_StockTransfers
'// Adding a OK button
oItem = oForm.Items.Add("1", SAPbouiCOM.BoFormItemTypes.it_BUTTON)
oItem.Left = 5
oItem.Width = 65
oItem.Top = 400 '372
oItem.Height = 20
oButton = oItem.Specific
'// Adding a Cancel button
oItem = oForm.Items.Add("2", SAPbouiCOM.BoFormItemTypes.it_BUTTON)
oItem.Left = 75
oItem.Width = 65
oItem.Top = 400 '372
oItem.Height = 20
oButton = oItem.Specific
AddLogCodeCombo(oForm, val)
oForm.DataBrowser.BrowseBy = "DpsVal"
End Sub
Public Sub New()
MyBase.New()
Try
SetApplication()
' Set The Connection Context
If Not SetConnectionContext() = 0 Then
SBO_Application.MessageBox("Failed setting a connection to DI API")
End ' Terminating the Add-On Application
End If
If Not ConnectToCompany() = 0 Then
SBO_Application.MessageBox("Failed connecting to the company's Data Base")
End ' Terminating the Add-On Application
End If
'SBO_Application.MessageBox("DI Connected To: " & oCompany.CompanyName)
Catch
System.Windows.Forms.MessageBox.Show("SBO application not found")
End Try
AddMenuItems()
End Sub
Private Sub SBO_Application_AppEvent(ByVal EventType As SAPbouiCOM.BoAppEventTypes) Handles SBO_Application.AppEvent
Select Case EventType
Case SAPbouiCOM.BoAppEventTypes.aet_ShutDown
SBO_Application.MessageBox("A Shut Down Event has been caught" & _
Environment.NewLine() & "Terminating 'Complex Form' Add On...")
'// Take care of terminating your AddOn application
System.Windows.Forms.Application.Exit()
End Select
End Sub
Private Function SetConnectionContext() As Integer
Dim sCookie As String
Dim sConnectionContext As String
' Dim lRetCode As Integer
'// First initialize the Company object
oCompany = New SAPbobsCOM.Company
'// Acquire the connection context cookie from the DI API.
sCookie = oCompany.GetContextCookie
'// Retrieve the connection context string from the UI API using the
'// acquired cookie.
sConnectionContext = SBO_Application.Company.GetConnectionContext(sCookie)
'// before setting the SBO Login Context make sure the company is not
'// connected
If oCompany.Connected = True Then
oCompany.Disconnect()
End If
'// Set the connection context information to the DI API.
SetConnectionContext = oCompany.SetSboLoginContext(sConnectionContext)
End Function
Private Function ConnectToCompany() As Integer
'// Make sure you're not already connected.
If oCompany.Connected = True Then
oCompany.Disconnect()
End If
'// Establish the connection to the company database.
ConnectToCompany = oCompany.Connect
End Function
Private Sub SBO_Application_ItemEvent(ByVal FormUID As String, ByRef pVal As SAPbouiCOM.ItemEvent, ByRef BubbleEvent As Boolean) Handles SBO_Application.ItemEvent
Dim oForm As SAPbouiCOM.Form
oForm = SBO_Application.Forms.Item(FormUID)
Dim oMatrix As SAPbouiCOM.Matrix
Dim count As Integer
Dim oDataSrc As SAPbouiCOM.DataSource
Select Case pVal.EventType
Case SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED
'// Check if the event was raised by one of the Folder items
'// and change the form's pane level
Case SAPbouiCOM.BoEventTypes.et_CLICK
' If pVal.ItemUID = "1" And pVal.BeforeAction = True Then
'If oForm.Mode = SAPbouiCOM.BoFormMode.fm_ADD_MODE Or oForm.Mode = SAPbouiCOM.BoFormMode.fm_UPDATE_MODE Then
'If Validation() = False Then
'If oForm.Items.Item("OrdrVal").Specific().Value = "" Then
' BubbleEvent = False
' ' SBO_Application.MessageBox(" Please Enter The Order No ")
' SBO_Application.StatusBar.SetText("Enter The Order No - 3029 Item Is Not Selectable ", SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
' oForm.Items.Item("OrdrVal").Click(SAPbouiCOM.BoCellClickType.ct_Regular)
' Exit Sub
'End If
'If oForm.Items.Item("SupVal").Specific().Value = "" Then
' BubbleEvent = False
' ' SBO_Application.MessageBox(" Please Enter The Order No ")
' SBO_Application.StatusBar.SetText("Enter The Supervisor - 3029 Item Is Not Selectable ", SAPbouiCOM.BoMessageTime.bmt_Long, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
' oForm.Items.Item("SupVal").Click(SAPbouiCOM.BoCellClickType.ct_Regular)
' Exit Sub
'End If
If pVal.FormMode = 2 And pVal.ItemUID = "1" And pVal.BeforeAction = False Then
'In UPDATE Mode
' strDocNum = oForm.Items.Item("txtCode").Specific.String
' If oForm.Mode = SAPbouiCOM.BoFormMode.fm_ADD_MODE And oForm.Mode = SAPbouiCOM.BoFormMode.fm_UPDATE_MODE Then
Dim strdocnum As String
strdocnum = oForm.Items.Item("DpsVal").Specific.String
oMatrix = oForm.Items.Item("Matrix1").Specific
oDataSrc = oForm.DataSources.DBDataSources.Add("@DPS1")
oForm.Freeze(True)
UpdateMatrixRowsDel(oForm)
oMatrix.FlushToDataSource()
For count = 1 To oMatrix.RowCount
oDataSrc.SetValue("LineId", count - 1, oDataSrc.GetValue("DocEntry", count - 1))
Next
oMatrix.LoadFromDataSource()
oForm.Freeze(False)
End If
' End If
'End If
'End If
End Select
If pVal.EventType = SAPbouiCOM.BoEventTypes.et_CHOOSE_FROM_LIST Then
Dim oCFLEvento As SAPbouiCOM.IChooseFromListEvent
oCFLEvento = pVal
Dim sCFL_ID As String
sCFL_ID = oCFLEvento.ChooseFromListUID
Dim oCFL As SAPbouiCOM.ChooseFromList
oCFL = oForm.ChooseFromLists.Item(sCFL_ID)
If oCFLEvento.BeforeAction = False Then
Dim oDataTable As SAPbouiCOM.DataTable
oDataTable = oCFLEvento.SelectedObjects
''//Function to show values in EditBoxes and Matrix after pressing TAB button.
ShowAllData(pVal, oDataTable, oForm)
End If
End If
Dim Matrix As SAPbouiCOM.Matrix
Matrix = oForm.Items.Item("Matrix1").Specific
'If ((pVal.ItemUID = "Matrix1") And (pVal.Row = Matrix.RowCount) And (pVal.EventType = SAPbouiCOM.BoEventTypes.et_KEY_DOWN)) Then
' ' Matrix.AddRow(1, -1)
' Matrix.AddRow(1, -1)
' Matrix.Columns.Item("#").Cells.Item(Matrix.RowCount).Specific.Value = Matrix.RowCount
'End If
If (FormUID = "SM_DPSFM") And (pVal.EventType = SAPbouiCOM.BoEventTypes.et_FORM_UNLOAD) Then
Windows.Forms.Application.Exit()
End If
'ShowTripTotal(pVal, oForm)
Dim i As Integer
Dim tripsm As Integer = 0
Dim triplat As Integer = 0
Dim tripbax As Integer = 0
Dim tripitm4 As Integer = 0
Dim tripitm5 As Integer = 0
If ((pVal.FormUID = "SM_DPSFM") And (pVal.EventType = SAPbouiCOM.BoEventTypes.et_ITEM_PRESSED) Or (pVal.EventType = SAPbouiCOM.BoEventTypes.et_KEY_DOWN)) Then
For i = 1 To Matrix.RowCount
tripsm += Matrix.Columns.Item(3).Cells.Item(i).Specific.Value
oForm.Items.Item("Trip1Val").Specific().value = tripsm
triplat += Matrix.Columns.Item(4).Cells.Item(i).Specific.Value
oForm.Items.Item("Trip2Val").Specific().value = triplat
tripbax += Matrix.Columns.Item(5).Cells.Item(i).Specific.Value
oForm.Items.Item("Trip3Val").Specific().value = tripbax
tripitm4 += Matrix.Columns.Item(6).Cells.Item(i).Specific.Value
oForm.Items.Item("Trip4Val").Specific().value = tripitm4
tripitm5 += Matrix.Columns.Item(7).Cells.Item(i).Specific.Value
oForm.Items.Item("Trip5Val").Specific().value = tripitm5
Matrix.LoadFromDataSource()
Next
End If
End Sub
Private Sub SalesOrdrCFL(ByVal oForm As SAPbouiCOM.Form)
Try
Dim oCFLs As SAPbouiCOM.ChooseFromListCollection
'Dim oCons As SAPbouiCOM.Conditions
'Dim oCon As SAPbouiCOM.Condition
oCFLs = oForm.ChooseFromLists
Dim oCFL As SAPbouiCOM.ChooseFromList
Dim oCFLCreationParams As SAPbouiCOM.ChooseFromListCreationParams
oCFLCreationParams = SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_ChooseFromListCreationParams)
' Adding 2 CFL, one for the button and one for the edit text.
oCFLCreationParams.MultiSelection = False
oCFLCreationParams.ObjectType = "17"
oCFLCreationParams.UniqueID = "CFL1"
oCFL = oCFLs.Add(oCFLCreationParams)
oCFLCreationParams.UniqueID = "CFL2"
oCFL = oCFLs.Add(oCFLCreationParams)
Catch
MsgBox(Err.Description)
End Try
End Sub
Private Sub OBRCFL(ByVal oForm As SAPbouiCOM.Form)
Try
Dim oCFLs As SAPbouiCOM.ChooseFromListCollection
' Dim oCons As SAPbouiCOM.Conditions
' Dim oCon As SAPbouiCOM.Condition
oCFLs = oForm.ChooseFromLists
Dim oCFL As SAPbouiCOM.ChooseFromList
Dim oCFLCreationParams As SAPbouiCOM.ChooseFromListCreationParams
oCFLCreationParams = SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_ChooseFromListCreationParams)
' Adding 2 CFL, one for the button and one for the edit text.
oCFLCreationParams.MultiSelection = False
oCFLCreationParams.ObjectType = "SM_OOBR"
oCFLCreationParams.UniqueID = "CFL3"
oCFL = oCFLs.Add(oCFLCreationParams)
'' Adding Conditions to CFL1
'oCons = oCFL.GetConditions()
'oCon = oCons.Add()
'oCon.Alias = "U_ordrdt" '"Order Date" '"U_ordrdt" '"Balance"
'oCon.Operation = SAPbouiCOM.BoConditionOperation.co_EQUAL
'oCon.CondVal = oForm.Items.Item("OrdrdtVal").Specific().string '"120000"
'oCFL.SetConditions(oCons)
Catch
MsgBox(Err.Description)
End Try
End Sub
Private Sub itemlist(ByVal oForm As SAPbouiCOM.Form)
Try
Dim oCFLs As SAPbouiCOM.ChooseFromListCollection
' Dim oCons As SAPbouiCOM.Conditions
' Dim oCon As SAPbouiCOM.Condition
oCFLs = oForm.ChooseFromLists
Dim oCFL As SAPbouiCOM.ChooseFromList
Dim oCFLCreationParams As SAPbouiCOM.ChooseFromListCreationParams
oCFLCreationParams = SBO_Application.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_ChooseFromListCreationParams)
' Adding 2 CFL, one for the button and one for the edit text.
oCFLCreationParams.MultiSelection = False
oCFLCreationParams.ObjectType = "4"
oCFLCreationParams.UniqueID = "CFL5"
oCFL = oCFLs.Add(oCFLCreationParams)
oCFLCreationParams.UniqueID = "CFL5"
oCFL = oCFLs.Add(oCFLCreationParams)
'oCFL = oCFLs.Add(oCFLCreationParams)
'oCons = oCFL.GetConditions()
'oCon = oCons.Add()
'oCon.Alias = "ItemCode"
'oCon.Operation = SAPbouiCOM.BoConditionOperation.co_START
'oCon.CondVal = "V"
'oCFL.SetConditions(oCons)
Catch
Exit Sub
MsgBox(Err.Description)
End Try
End Sub
Private Sub ShowAllData(ByRef pVal As SAPbouiCOM.ItemEvent, ByVal oDatatable As SAPbouiCOM.DataTable, ByVal oForm As SAPbouiCOM.Form)
Dim val, val2, val4 As String
Dim val1 As String
Dim i As Integer
Dim oCombo As SAPbouiCOM.ComboBox
oCombo = oForm.Items.Item("LogVal").Specific
Dim Matrix As SAPbouiCO -
SPry menubar floating submenu's
I've been tackling with this spry menubar trying to get it so that menu's float over content in div's or frames instead of positioning the content below the extended menu.
Here is my website www.nathanielmcmahon.com
I had it working in one browser before but not others. Now firefox and iexplorer push content below and chrome pushes content to the side.
I want the menu to display over content with an opaque background
Below is the modified sprymenubar css.
@charset "UTF-8";
/* SpryMenuBarHorizontal.css - Revision: Spry Preview Release 1.4 */
/* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
LAYOUT INFORMATION: describes box model, positioning, z-order
/* The outermost container of the Menu Bar, an auto width box with no margin or padding */
ul.MenuBarHorizontal
list-style-type: none;
font-size: 100%;
cursor: default;
z-index: 1200;
/* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
ul.MenuBarActive
/* Menu item containers, position children relative to this container and are a fixed width */
ul.MenuBarHorizontal li
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
text-align: left;
cursor: pointer;
width: auto;
float: left;
height: inherit;
position: relative;
Submenus should appear below their parent (top: 0) with a higher
z-index, but they are initially off the left side of the screen
(-1000em) */
ul.MenuBarHorizontal ul
list-style-type: none;
font-size: 100%;
cursor: default;
width: 10em;
position: relative;
left: -1000em;
z-index: 1300;
visibility: visible;
Submenu that is showing with class designation MenuBarSubmenuVisible,
we set left to auto so it comes onto the screen below its parent menu
item */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
left: 115px;
/* Menu item containers are same fixed width as parent */
ul.MenuBarHorizontal ul li
width: 13em;
z-index: 2000;
height: 35px;
background-image: none;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../assets/images
/transparent-png.png', sizingMethod='fixed');
background-color: #FFF;
/* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
ul.MenuBarHorizontal ul ul
margin: -27% 0 0 75%;
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
left: auto;
top: 0;
/* Menu items are a light gray block with padding and no text decoration */
ul.MenuBarHorizontal a
display: block;
cursor: pointer;
padding: .5em;
color: #999999;
text-decoration: none;
font-family: Arial, Helvetica, sans-serif;
font-size: 16px;
font-weight: bold;
/* Menu items that have mouse over or focus have a blue background and white text */
ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
color: #999999;
/* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
ul.MenuBarHorizontal
a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover,
ul.MenuBarHorizontal a.MenuBarSubmenuVisible
color: #999999;
SUBMENU INDICATION: styles if there is a submenu under a given menu item
Menu items that have a submenu have the class designation
MenuBarItemSubmenu and are set to use a background image positioned on
the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal a.MenuBarItemSubmenu
background-image: url(../SpryAssets/SpryMenuBarDown.gif);
background-repeat: no-repeat;
background-position: 94% 50%;
Menu items that have a submenu have the class designation
MenuBarItemSubmenu and are set to use a background image positioned on
the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
background-image: url(../SpryAssets/SpryMenuBarRight.gif);
background-repeat: no-repeat;
background-position: 94% 50%;
Menu items that are open with submenus have the class designation
MenuBarItemSubmenuHover and are set to use a "hover" background image
positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
background-image: url(../SpryAssets/SpryMenuBarDownHover.gif);
background-repeat: no-repeat;
background-position: 94% 50%;
Menu items that are open with submenus have the class designation
MenuBarItemSubmenuHover and are set to use a "hover" background image
positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
background-image: url(../SpryAssets/SpryMenuBarRightHover.gif);
background-repeat: no-repeat;
background-position: 94% 50%;
BROWSER HACKS: the hacks below should not be changed unless you are an expert
/* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
ul.MenuBarHorizontal iframe
z-index: 1010;
position: absolute;
ul.MenuBarHorizontal li.MenuBarItemIE
display: inline;
f\loat: left;
background: #FFF;I've been tackling with this spry menubar trying to get it so that menu's float over content in div's or frames instead of positioning the content below the extended menu.
Here is my website www.nathanielmcmahon.com
I had it working in one browser before but not others. Now firefox and iexplorer push content below and chrome pushes content to the side.
I want the menu to display over content with an opaque background
Below is the modified sprymenubar css.
@charset "UTF-8";
/* SpryMenuBarHorizontal.css - Revision: Spry Preview Release 1.4 */
/* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
LAYOUT INFORMATION: describes box model, positioning, z-order
/* The outermost container of the Menu Bar, an auto width box with no margin or padding */
ul.MenuBarHorizontal
list-style-type: none;
font-size: 100%;
cursor: default;
z-index: 1200;
/* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
ul.MenuBarActive
/* Menu item containers, position children relative to this container and are a fixed width */
ul.MenuBarHorizontal li
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
text-align: left;
cursor: pointer;
width: auto;
float: left;
height: inherit;
position: relative;
Submenus should appear below their parent (top: 0) with a higher
z-index, but they are initially off the left side of the screen
(-1000em) */
ul.MenuBarHorizontal ul
list-style-type: none;
font-size: 100%;
cursor: default;
width: 10em;
position: relative;
left: -1000em;
z-index: 1300;
visibility: visible;
Submenu that is showing with class designation MenuBarSubmenuVisible,
we set left to auto so it comes onto the screen below its parent menu
item */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
left: 115px;
/* Menu item containers are same fixed width as parent */
ul.MenuBarHorizontal ul li
width: 13em;
z-index: 2000;
height: 35px;
background-image: none;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../assets/images
/transparent-png.png', sizingMethod='fixed');
background-color: #FFF;
/* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
ul.MenuBarHorizontal ul ul
margin: -27% 0 0 75%;
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
left: auto;
top: 0;
/* Menu items are a light gray block with padding and no text decoration */
ul.MenuBarHorizontal a
display: block;
cursor: pointer;
padding: .5em;
color: #999999;
text-decoration: none;
font-family: Arial, Helvetica, sans-serif;
font-size: 16px;
font-weight: bold;
/* Menu items that have mouse over or focus have a blue background and white text */
ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
color: #999999;
/* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
ul.MenuBarHorizontal
a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover,
ul.MenuBarHorizontal a.MenuBarSubmenuVisible
color: #999999;
SUBMENU INDICATION: styles if there is a submenu under a given menu item
Menu items that have a submenu have the class designation
MenuBarItemSubmenu and are set to use a background image positioned on
the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal a.MenuBarItemSubmenu
background-image: url(../SpryAssets/SpryMenuBarDown.gif);
background-repeat: no-repeat;
background-position: 94% 50%;
Menu items that have a submenu have the class designation
MenuBarItemSubmenu and are set to use a background image positioned on
the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
background-image: url(../SpryAssets/SpryMenuBarRight.gif);
background-repeat: no-repeat;
background-position: 94% 50%;
Menu items that are open with submenus have the class designation
MenuBarItemSubmenuHover and are set to use a "hover" background image
positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
background-image: url(../SpryAssets/SpryMenuBarDownHover.gif);
background-repeat: no-repeat;
background-position: 94% 50%;
Menu items that are open with submenus have the class designation
MenuBarItemSubmenuHover and are set to use a "hover" background image
positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
background-image: url(../SpryAssets/SpryMenuBarRightHover.gif);
background-repeat: no-repeat;
background-position: 94% 50%;
BROWSER HACKS: the hacks below should not be changed unless you are an expert
/* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
ul.MenuBarHorizontal iframe
z-index: 1010;
position: absolute;
ul.MenuBarHorizontal li.MenuBarItemIE
display: inline;
f\loat: left;
background: #FFF; -
Best practice when changing a lot of forms
Hi gurus,
if you have a lot of forms to manipulate and a lot of logic to change, what would be the best practice ?
Making some manipulation objects would be a nice thing. When I think of about 200 items or more on nearly every standard-form in B1 not included the logic behind, my brain gets dizzy
So there's no way than to keep the code clean and structured. Am I right ????
What about VB-Classes ?? I'm not sure about the stability of VB.net classes in bigger projects. C# would be nice, but isn't supported as I have in mind.
Does anyone have experience with big B1 VB.net projects especially concerning the stability of B1 and the resulting performance ?!?!?!???
The company I'm working for, seems to live from the flexibility of the software
regards,
HolgerNo problem,
only thing to change is the creation of the menu.
The rest works fine, when using Visualstudio 2003. 2005 Beta complains much about CLS-compliance.
Spaghetticode, goodbye
Regards,
Holger
PS: What about the idea of extending this under a opensourcelike thing ? Or is this not allowed by SAP ?
Code:
Dim oMenus As SAPbouiCOM.Menus
Dim oCreationPackage As SAPbouiCOM.MenuCreationParams
oTechDemoRoot = m_SboApplication.Menus.Item("43520") 'Modules'
oMenus = oTechDemoRoot.SubMenus
oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_POPUP
oCreationPackage.UniqueID = "ScooterDEMO"
oCreationPackage.String = strTechDemoRootMenu
'oCreationPackage.Image = sPath & "VID.bmp"
'add the menu at the bottom of the list
oCreationPackage.Position = oTechDemoRoot.SubMenus.Count + 1
'add subitems and submenus to customized menu root
oMenus.AddEx(oCreationPackage)
' Get the menu collection of the newly added pop-up item
oMenuItem = m_SboApplication.Menus.Item("ScooterDEMO")
oMenus = oMenuItem.SubMenus
' Add 3 Sub Menu Items
oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_STRING
oCreationPackage.UniqueID = m_Name & "Mnu_0"
oCreationPackage.String = "Speed up your business ;)"
'oCreationPackage.Image = sPath & "bla.bmp"
oMenus.AddEx(oCreationPackage)
oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_STRING
oCreationPackage.UniqueID = m_Name & "Mnu_1"
oCreationPackage.String = "UI simple form via code"
'oCreationPackage.Image = sPath & "bla.bmp"
oMenus.AddEx(oCreationPackage)
oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_STRING
oCreationPackage.UniqueID = m_Name & "Mnu_2"
oCreationPackage.String = "UI Calculator"
'oCreationPackage.Image = sPath & "bla.bmp"
oMenus.AddEx(oCreationPackage)
oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_STRING
oCreationPackage.UniqueID = m_Name & "Mnu_3"
oCreationPackage.String = "UI BusinessPartnerFormExtention"
'oCreationPackage.Image = sPath & "bla.bmp"
oMenus.AddEx(oCreationPackage)
oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_STRING
oCreationPackage.UniqueID = m_Name & "Mnu_4"
oCreationPackage.String = "UI-DI UDFieldsCreation"
'oCreationPackage.Image = sPath & "bla.bmp"
oMenus.AddEx(oCreationPackage)
oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_STRING
oCreationPackage.UniqueID = m_Name & "Mnu_5"
oCreationPackage.String = "UI Complex form created via code"
'oCreationPackage.Image = sPath & "bla.bmp"
oMenus.AddEx(oCreationPackage)
oCreationPackage.Type = SAPbouiCOM.BoMenuType.mt_STRING
oCreationPackage.UniqueID = m_Name & "Mnu_6"
oCreationPackage.String = "UI .Net lookalike contest ;)"
'oCreationPackage.Image = sPath & "bla.bmp"
oMenus.AddEx(oCreationPackage) -
Is it a solution to use Apple TV and VoiceOver to play my tunes on my home audio system?
hi, i am visually impaired and want to be able to have voice access to browse my music so that i can easily play them on my home system. when i saw that apple tv supports voice over, this idea came to my mind to have an apple tv connected to my home audio system and share my library on my computer to be able to browse it using apple tv with voice over enabled. this way i have access to my music library and via voice. but i couldn't find a good tutorial to approve if my idea is correct or not. please give me feedback to know if my idea is a correct one or essentially it is not a good solution for such problem.
thanks a lotYes it should work ok.
I don't use it normally but once enabled Voice Over states the current menu position. If the position has submenus it says 'button'.
For example, I have 2 itunes libraries running currently.
As I scroll across the columns using a right keypress it says something like Main Menu and:
Movies (right keypress) Internet (right keypress) Computers
On pressing select on Computers the submenu opens showing both shared libraries:
AlleyCat Mac Mini
AlleyCat Mac Pro
The Voice Over announces 'Alley Cat Mac Mini, Button, One of Two'
Button seems to indicate a submenu.
Pressing down key on remote it announces 'Alley Cat Mac Pro, Button, Two of Two'
Selecting either library lists the media content categories:
Music / TV Shows / Podcasts etc (order may be different)
It announces say 'Music, Button, 1 of 6'
Pressing select ('button') opens the Music category.
You then have several subcategories inclusing Shuffle/ Search / Music Videos/ Album Artist/ Album / Genre/ Genius etc etc
I'd personally like Artist at the top but it should be easy to navigate down with a few clicks and you'll soon remember which menu number is your preferred category.
One say is Artist, there's Shuffle or similar at the top then all artists listed alphabetically.
So I have maybe:
a-Ha
ABBA
ABC
Academy of Ancient Music
Alanis Morrisette
Alisson Krauss
etc
etc
As you scroll down it says the artist name pretty well for most and says say ABBA, Button, 3 of 227'
Select takes you to the album/track submeny and process procedes.
The Apple remote is very simple and should work well, though i think the older white one is more tactile than the new silver one.
AC -
HI, I've added a horizontal menu widget to a site. I would like the submenus to be positioned vertically underneath each the main navigation 'sections'.
I've been using the transform options to reposition the submenus and save what I've done. However, when I click back into the submenus,they jump back to their original position.
Also, is it possible to alter the states/size/text fonts of the submenus all at once?
Any clues would be gratefully received.
Thanks.Just in case anybody else has this problem.
I found another discussion with the same issue...
In the 'Plan' window, you have to set the 'child pages' horizontally below the top level page for the sub menus to position themselves vertically.
Ahhhh.... all is well. -
IE 7.0 Positioning Error For Menu Bar Submenus
http://www.cloud9industries.com/clients/jewelryworld/index4.html
In Internet Explorer 7, the submenu items are displayed
horizontally rather than vertically (as they are in IE 6.0). I'm
using Spry 1.6 and the site has been updated to use it as well. Any
ideas on how to get that fixed. It works fine in IE 6, Safari, and
Firefox.
Thanks,
cloud9industriesHi cloud9industries,
please add position:relative attribute on each ul tag that
contains the lis for submenu items.
I'm referring to these:
<ul style="position:relative;">
<li style="width:107px; height:20px; background-image:
url(images/bg/li_bg_1.png)"><a href="#"
class="style2">Engagement</a></li>
<li style="width:107px; height:20px; background-image:
url(images/bg/li_bg_2.png)"><a href="#"
class="style2">Diamond</a></li>
</ul>
<ul style="position:relative;">
<li style="width:82px; height:20px; background-image:
url(images/bg/li_bg_1.png)"><a href="#"
class="style2">Diamond</a></li>
<li style="width:82px; height:20px; background-image:
url(images/bg/li_bg_2.png)"><a href="#"
class="style2">Gemstone</a></li>
</ul>
Diana -
Spry menu Bar I.E. positioning issues?
Hi,
I, like many folks I've seen on various forums have the same problem with my spry menu appearing at the top of I.E browsers instead of under the menu bar. I've tried all sorts of fixes that I've found and have updated to the latest version of Spry. I am using CS3. Could anyone please, please help? I'm not sure where else to go as I've spent the last week on the web trying to resolve the issue. Everything works great on Safari and Firefox. My URL is http://www.visiongreeninvestments.org
Thanks in advance to anyone who can point me in the right direction.
My CSS is:
@charset "UTF-8";
/* SpryMenuBarHorizontal.css - Revision: Spry Preview Release 1.4 */
/* Copyright (c) 2006. Adobe Systems Incorporated. All rights reserved. */
LAYOUT INFORMATION: describes box model, positioning, z-order
/* The outermost container of the Menu Bar, an auto width box with no margin or padding */
ul.MenuBarHorizontal
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
cursor: default;
width: auto;
/* Set the active Menu Bar with this class, currently setting z-index to accomodate IE rendering bug: http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html */
ul.MenuBarActive
z-index: 1000;
/* Menu item containers, position children relative to this container and are a fixed width */
ul.MenuBarHorizontal li
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
position: relative;
text-align: left;
cursor: pointer;
width: 130px;
float: left;
/* Submenus should appear below their parent (top: 0) with a higher z-index, but they are initially off the left side of the screen (-1000em) */
ul.MenuBarHorizontal ul
margin: 0;
padding: 0;
list-style-type: none;
font-size: 100%;
z-index: 1020;
cursor: default;
width: 8.2em;
position: absolute;
left: -1000em;
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to auto so it comes onto the screen below its parent menu item */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible
left: auto;
/* Menu item containers are same fixed width as parent */
ul.MenuBarHorizontal ul li
width: 8.2em;
background-image: none;
ul.MenuBarHorizontal ul li a
width: 7.8em;
background-image: none;
background-color: #669933;
/* Submenus should appear slightly overlapping to the right (95%) and up (-5%) */
ul.MenuBarHorizontal ul ul
position: absolute;
margin: -5% 0 0 95%;
/* Submenu that is showing with class designation MenuBarSubmenuVisible, we set left to 0 so it comes onto the screen */
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible ul.MenuBarSubmenuVisible
left: auto;
top: 0;
DESIGN INFORMATION: describes color scheme, borders, fonts
/* Submenu containers have borders on all sides */
ul.MenuBarHorizontal ul
border: 0px solid #CCC;
/* Menu items are a light gray block with padding and no text decoration */
ul.MenuBarHorizontal a
display: block;
cursor: pointer;
background-color: #669933;
color: #000066;
text-decoration: none;
font-family: Times;
font-size: 14px;
font-weight: normal;
background-image: url(../homepagelayout/greenbarbg.jpg);
background-repeat: repeat;
padding-top: 0.5em;
padding-right: 0.75em;
padding-bottom: 0.5em;
padding-left: 0.75em;
border-top-width: 0px;
border-right-width: 0px;
border-bottom-width: 0px;
border-left-width: 0px;
border-top-style: none;
border-right-style: none;
border-bottom-style: none;
border-left-style: none;
/* Menu items that have mouse over or focus have a blue background and white text */
ul.MenuBarHorizontal a:hover, ul.MenuBarHorizontal a:focus
background-color: #669933;
color: #FFF;
background-image: none;
/* Menu items that are open with submenus are set to MenuBarItemHover with a blue background and white text */
ul.MenuBarHorizontal a.MenuBarItemHover, ul.MenuBarHorizontal a.MenuBarItemSubmenuHover, ul.MenuBarHorizontal a.MenuBarSubmenuVisible
background-color: #669933;
color: #FFF;
background-image: none;
SUBMENU INDICATION: styles if there is a submenu under a given menu item
/* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal a.MenuBarItemSubmenu
background-image: url(../homepagelayout/greenbarbg.jpg);
background-repeat: repeat;
background-color: #669933;
/* Menu items that have a submenu have the class designation MenuBarItemSubmenu and are set to use a background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal ul a.MenuBarItemSubmenu
background-image: none;
background-position: 95% 50%;
background-color: #669933;
/* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal a.MenuBarItemSubmenuHover
background-image: none;
background-position: 95% 50%;
background-color: #669933;
/* Menu items that are open with submenus have the class designation MenuBarItemSubmenuHover and are set to use a "hover" background image positioned on the far left (95%) and centered vertically (50%) */
ul.MenuBarHorizontal ul a.MenuBarItemSubmenuHover
background-image: none;
background-repeat: repeat;
background-position: 95% 50%;
background-color: #669933;
BROWSER HACKS: the hacks below should not be changed unless you are an expert
/* HACK FOR IE: to make sure the sub menus show above form controls, we underlay each submenu with an iframe */
ul.MenuBarHorizontal iframe
position: absolute;
z-index: 1010;
/* HACK FOR IE: to stabilize appearance of menu items; the slash in float is to keep IE 5.0 from parsing */
@media screen, projection
ul.MenuBarHorizontal li.MenuBarItemIE
display: inline;
f\loat: left;
background: #FFF;
/*insert this bracket/*I see that the online version has already been upgraded to Spry 1.61 and that it now works.
Gramps
PS Before you change anything, have a look here http://www.dwcourse.com/dreamweaver/ten-commandments-spry-menubars.php#one. This will ensure that you don't make a mess of it this time around.
Maybe you are looking for
-
The report in FI which contains Quantity field with every line item
Hi Gurus, What are the reports in Finance which contains Qty field with every Line Item reports & reports that contains user name & System Id in it along with other informations e.g. G/L, Ar, AP Thanks & Regds, Santosh Rothe
-
9.2.0.6 DBCA installation fails on SuSe9 SP1
Hi all, 2*PIII 800Mhz 40GB Linux SuSe 9 SP1 I istaled Oracle software 9.2.0.4 and then I add 9.2.06 patch. Then I tryied to create database with DBCA but after I try to start creation by clicking OK button in the last step , in the shell I get messag
-
Is it possible to sort songs after using iTunes Match?
When I used iTunes to sync my songs previously, everything's fine because I can do all in iTunes then press sync. But with the use of iTunes Match, everything seems automatically done through the "cloud". I can't even rearrange the order of my songs,
-
SSL Protocol Error. Certificate is either invalid or common name...
There is only one website I have found that has this issue for us. It is collegesource.org. I have worked with their support but so far we have no solution. I have Windows Vista with IE7, Firefox 3.6 and chrome 4.0 and Adobe Reader 9.3. When I atte
-
Session in Progress - user not logged in.
I show a user session in EAS with a status of "in progress" for a spreadsheet operation. User claims to not being logged in to Essbase and not to have initiated a worksheet retrieval. This happened before to this same user id and I let their session