Form Builder 6 -- built-in delete menu item
Hi all,
The built-in delete menu item doesn't ask for confirmation whether we wanted to delete the record or not.
Can anyone here tell me how to add in the confirmation (e.g. Are you sure to delete?) before deleting the record?
Thanks in advance.
Regards,
Vivian
You can use Key-DELREC trigger. More you can read in the Forms on-line help DO_KEY built-in.
Helena
Similar Messages
-
How to popup a new forms window upon clicking Tools- Menu item
Hi,
I am new to forms. Can some one help me out with the following requirement?
I need to provide a new 'Menu' item in the Tools menu of a seeded form and when the user clicks on the new menu option, he should get a new window wherein he can input some values. Then I need to read these user input values and pass them to a custom stored procedure and invoke the stored procedure on the database. After the stored proc finished executing I need to re-query the block on the seeded form to populate the latest records.
Appreciate if some one can let me know the implementation steps for the requirement mentioned above.
Thanks
Sara
Edited by: 4377318 on Sep 2, 2008 2:33 PMHi OraMol,
Thanks a ton for your response! Looks like it is pretty simple, but can you please brief me on how to create this 'canvas' to accept parameters and requery the base block? I know its a silly question though but basically am new to forms :)
Sarah -
Hide the delete menu item from a specific document library
I want to hide the Delete item menu option for a specific document library.Since it is for a specific library I would not like to use customcore.js approach.Please suggest some useful javascript for same.
I have a custom delete action associated with the menu which performs other function as well so need to hide the OOB delete option from the item menu of a document library.
I have already used below javascript in CEWP which I added on the document library page itself(allitems.aspx) but yeild no results:
<script type="text/javascript">
var elemTable=document.getElementById('ECBItems');
if (elemTable !=null) {
var elemTBody=elemTable.childNodes[0];
//iterate each table row to find the correct ECB menu item to hide(remove)
for (var iMenuItem=0; iMenuItem < elemTBody.childNodes.length; iMenuItem++) {
var elemTR=elemTBody.childNodes[iMenuItem];
var elemTDTitle=elemTR.childNodes[0];
var title=GetInnerText(elemTDTitle);
//here we filter on title, but the table contains more information if need be
if(title =='Delete') {
elemTBody.removeChild(elemTR);
</script>
Please suggest which can be kept specific and requires no change in masterpage as same masterpage is used across the site.Hi justSP,
Greetings.
Hope the below links help you
http://social.technet.microsoft.com/Forums/office/en-US/9adea3a2-6d08-4c04-ace2-88a704833f1d/how-to-hide-delete-item-from-ecb-menu-for-1-specific-custom-list?forum=sharepointcustomizationlegacy
http://chakkaradeep.com/index.php/sharepoint-hiding-menu-items-from-the-edit-control-block/
http://social.technet.microsoft.com/Forums/office/en-US/1b832635-4ae7-4f31-826c-2d6b834ece52/hide-delete-from-ecb-menu-for-a-specific-document-library-in-sharepoint-2010?forum=sharepointcustomizationprevious
http://social.technet.microsoft.com/Forums/office/en-US/919e01e6-9a7a-4439-b778-28e0dc8bffba/how-to-hide-delete-option-from-ecb-menu-in-document-library-in-sharepoint-2010?forum=sharepointdevelopmentprevious
Please remember to click 'Mark as Answer' on the answer if it helps you -
About Forms builder. what is a 'referenced item'?
COPY bulit-in exists for two reasons:
1.You cannot use standard PL/SQL syntax to set a referenced item* equal to a value.
2. .................
Anybody who can tell me what is referenced item?
It's better if you can give a easy-understanding example.
Thanks in advance.Hello,
I think it means calculated item.
Francois -
Oracle Forms Builder Customization
Hi all,
I am beginning a software integration project and would really appreciate it if you could give me some guidance. Is it possible to customize the Forms Builder IDE and create menu items or buttons with scripts behind them to support something like automated storage and build functions that are linked to Subversion? Alternatively, is anyone aware of a third-party plug-in or application for Forms Builder that will support this? Thanks in advance.
-SBecause you have not offered details about which product versions, platforms, or hardware you are using, I can only offer some generic information. However, for the most part, the same concept will apply to all versions and platforms.
It sounds like what you are looking to do is fairly simple and there may not be a need for using something as complex as the Forms API. Correct me if I am wrong but this is what I understand... you want to:
1. Generate multiple executable files (FMX, MMX, PLX) from source files (FMB, MMB, PLL)
2. Copy or relocate the latest source files
3. Copy or relocate the latest executable files to a production environment
All of the above can be fairly easy to accomplish with simple scripts. For example batch files on Windows (shell scripts on Unix).
Generate executable files*
See My Oracle Support Article 955143.1 for some example code of how to compile with a script.
Copy or relocate the latest source files*
Examples of how to determine the newer of two files can be found all over the Internet, but I foudn the following to be quite clear (these are Windows batch examples):
http://forums.techguy.org/dos-pda-other/835496-solved-how-compare-2-file.html
This information along with the copy or xcopy command (Windows) can be used to move the latest files to a new location.
Copy or relocate the latest executable*
The same as above can be used for these files, however if the production server is a remote machine and not the same machine, some permissions handling may be necessary.
This search will expose information about copying across network share (mapped drives)
http://www.google.com/search?q=copy+file+network+share -
I am using LabVIEW 6.02 & also downloaded the application builder patch. For my runtime menus, I've a subVI that first calls "Delete Menu Items.vi" to get rid of the standard menu items and then "Insert Menu Items.vi" to add my own. I only get an error when I try to run the built application.
There was a similar issue in LabVIEW 5.0 where you would get the error if you passed an empty array to the 'items' input of Delete Menu Items. This was corrected in version 5.0.1. Did you mass compile your VI's after upgrading to version 6.0.2?
I tried to reproduce the problem in a small VI but was not successful. I can run an executable built from this example without any problems. I am attaching it for you to test.
Chris_Mitchell
Product Development Engineer
Certified LabVIEW Architect
Attachments:
menu.llb 33 KB -
I am enabling the Data menu items for my custom form like this:
myForm.EnableMenu("1281", true);
myForm.EnableMenu("1282", true);
myForm.EnableMenu("1283", true);
myForm.EnableMenu("1288", true);
myForm.EnableMenu("1289", true);
myForm.EnableMenu("1290", true);
myForm.EnableMenu("1291", true);
This works fine for my form but as soon as a SAP system form gets focus, the Data menu items do not work until I close my form. Do I need to do something in the "lose focus" event for my form?In your menu event code, are you checking to see if your custom form is the active form before processing the menu event?
If not your code will be processed regardless of which form is currently active, and this could lead to the behaviour you describe.
You can tell if your custom form is active by looking at the "selected" property of form object.
Regards,
John. -
Finding which menu item has been clicked
Does oracle forms have anyway of knowing which menu item has been clicked.
I have a security structure set up where menu items are made visible depending on their name, which in turn is based on the individual forms that a particular user can access.
I would like to write a generic method for all menu items where it uses the name of the clicked menu item to perform a query, the result could be used to open a new form.
So is there a build in or some 'secret source' which tells me the name or gives me the id of a clicked menu item?
Message was edited by:
gazbarberNot entirely sure what you mean, are you sugesting i have a generic method with a switch statment and uses the input paramter to decide what to do?
It's not really what i'm after, rather I already have the name of the menu item in the database, the same table also contains the module filename that clicking the button should go to.
So the idea would be somthing like
declare
begin
select module name into new form from secutity table where menu item = :system.current menu item;
open_form(new form);
end;
:sysem.current menu item is the missing ingreadiant.
My menu has many items in the hundreds i think so even the generic switch staement would be pretty tedious and i want changes in the database to be felt system wide as they are else where in my system.
Thanks for you help and i hope this explains my question better.
Regards,
Gareth
Message was edited by:
gazbarber -
FRM-10242: Cannot call linked-in Forms from Form Builder. error
FRM-10242: Cannot call linked-in Forms from Form Builder.
Cause: The menu designer specified a call to linked-in Forms from within Form Builder.
Action: Notify your DBA.
does anyone know why this happens.
I have this main-menu.. and when i click on one of the submenus which should call the form....i get this error.Same issue here... Been trying to get this working since a week now. I tried all the solutions like memory heap and all but no luck.
One thing that I would like to know is that, in some threads the resolution was to recompile the INS_FORMS.MK file under /forms/lib32 but with my installation I don't have that "lib32" folder under /forms/ and I can not even find that file anywhere in my entire installation.
I am using 12.1.1 on Windows Server 2008.
Any help or guidelines is greatly appreciated.
Santhosh. -
Forms Builder default font?
Is there anyway to set the default font that Forms Builder uses when creating text items?
Normally when I start developing a new form Forms Builder defaults the font to Microsoft Sans Serif 8, but for some reason everytime I open Forms Builder now I get a font of Tahoma 8 and I'd like to change it to something else.Java fonts are different and limited, so even you set your fonts different on windows, at runtime you will be limited to the java supported fonts. I usually set it to helvetica and it seems pretty close to what I see at runtime. But , we are developing and deploying on Linux, so it may be different on windows.
-
Unable to create Menu Item List Buttons in Forms - Not Working!
Hi guys,
I need desperate help since I have been stuck on these for 2 days and I am unable to move forward!!
I am trying to create a pdf form using Acrobat pro 9 and Adobe LiveCycle Designer ES. Since I am new to this, I have been browsing through numerous sites, forums and tutorials to learn about this. So far, I was able to create the forum with text fields, etc.. I am trying to have a column in my pdf form where the users can simply copy & paste image icons here..I was having difficulty with this already and have done numerous searches in google. In the end, I thought I am better off trying to use the "stamp" tool for this instead of image field. So this is what I did:
1) I already placed the image icons (that the users will be copying & pasting) on my pdfs so users can simply click on it to select the image.
2) I added a new bottom to this form which has the short cut to the menu item "copy" function. I labeled this button as 'Copy' and to this button, I added the following javascript for "Mouseup":
app.execMenuItem("CopyFileToClipboard");
3) Next I created another button that I called 'paste' and this button executes the "Paste Clipboard Image as Stamp Tool" menu. This button has the following javascript:
app.execMenuItem("Annots:Tool:StampFromClipboardMenuItem");
I thought that after doing the above, the user should be able to click on one of the images in the pdf, then click on 'copy' button and in the end click on 'paste' button that will then run an action so user can stamp this copied image to where ever they want in that file. But this is not happening!! I dont why?? Nothing happens when these buttons are clicked. I have made sure that the "Extended features in Adobe Reader..." is enabled and also tried running the above javascripts on my console window to test it and i know that the actual javascript code is not at fault since these functions works when I try the code through the debugger window. But I just cannot figure out why these menu item functions are not working when the buttons I had created are clicked!!! I dont know if what I have done is correct or if there is a easier way to achieve what I am trying to do!! Its a shame there is no simpler way for the end-users to copy and paste images to the columns in the pdf forms.
please help me understand why the above button are not working....any help will be great!!Hi Paul,
This is further to our email correspondence. I am just pasting your email response here since it may be useful to other newbies like me:
"Ok here you go ......I had to add the new row via a script object as the new objects are not completely available until the script ends so I cannot resize the new row from teh current script.
Then when we resize - we have to resize the row, the cells and the image ....we start with all existing subforms then we do it for the new row that was just added.
Lastly I see that you have a delete row button. This will have to be part of the row otherwise we ill not know which row the user will want to delete .....unless you ask them (which is not good UI design)."
I was really impressed the way you modified the script so the table height does not change when new rows are added. That did help me in understanding the methods and it will certainly be v useful to me in the future. I have been practicing and getting a hang of LS and I have actually decided to redesigned my form since it appears that trying to have a fixed table height is quite a bit of work each time a row is added, removed or changed, etc... Your advise so far have been v helpful and it has helped me in redesigned the form into a different layout. So far so good...However, I just have a few more clarifications regarding some hurdles I am facing:
PS: I have emailed you a sample of my new form now so you can have a look at it.
1) Dynamic Image fields:
In this form, I have a subform that has a dropdown list and next to this, I have an image field. I want to change the image based on the selection in the dropdown list. I found a few samples and tutorials on this already and I tried 2 different approach for this. One works and the other doesnt.
Method that works: What I have done here is, I added all the images in the form and have put their presence to invisible. Then using the javascript, I am making the image visible based on the selection in the dropdown list. I found this method somewhere through googling and it works.
Method that doesnt work: Its similar to the above, but instead of putting all the images in the form, I just inserted 1 image field and then tried to change the url of this dynamic image based on the selection in the drop down list. But this method is not working. I tried inserting this jscript and nothing happens:
switch (this.rawValue)
case "1":
myImages.value.Image.href=http://www.mysiteaddress.com/blah_blah.jpg;
break;
case "2":
myImages.value.Image.href=http://www.mysiteaddress.com/blah_blah2.jpg;
break;
The 2nd method does not work. Although I know the method 1 above works and I am currently using it, I am just curious to find out why the 2nd method is not working? Did I get the script wrong or is this feature no longer allowed? I just thought that if the second method works fine, it saves the hassle of putting all the images on the form and then making them hidden. Instead, I just need to put one image field and then dynamically change its image based on the selection. I hope this make sense..please advise..
2) Changing the background colour of the Dropdown list box:
I am trying to change the bg colour of the listbox in the dropdown list object (only the listbox bg color and not the whole background color). So, I added the following script to the mouseEnter event and this works:
var vName = this.somExpression;
var fieldObj = xfa.resolveNode(vName + ".ui.#choiceList.border.fill.color");
fieldObj.value = "255,255,225";
My Problem: The above script works so I dont need to change anything there. But, I also want to add another script to the mouseExit event to change the fill color to its default once the mouse leaves the dropdown lists. Initially, this field has no fill colour and the border fill style is none. The fill color is only added during the mouseEnter event. How do I change the bg color fill back to none during mouseExit after the above script is executed on mouseEnter?
(NOTE: If you see my form, I have used the above scripts for the dropdown list only in "boxSubform[0]".)
3) Changing the length of the Dropdown List box:
I only have about 1.6 inches workspace to add this dropdown list box. However, the length of some lists (list items) in this dropdown list box is actually longer and the remaining part is cut out. So, I added the following script to increase the dropdownlist length and it does not work the way I would have hoped...
The script I have written so far:
I added these to the mouseEnter event and it works fine -
form1.pageSubform.dynamicSubform.Table1.Row1.boxSubform[0].MyDropdown::mouseEnter - (JavaScript, client)
this.w = "2in"; //this is to to increase the width of the dropdown list
I added these to the mouseExit event and it works fine too-
form1.pageSubform.dynamicSubform.Table1.Row1.boxSubform[0].MyDropdown::mouseExit - (JavaScript, client)
this.w = "1.625in";
When I tested the form with the above script, this is what happens:
1) First when you move the mouse over this field, the width increases. Similarly the width decreased when you move away.
2) So, even if this is clicked, the list box is opened with this 2inch width so thats good.
3) There are no problems when the mouse is moved over these list items as well. However, this does not look good when the dropdown list item is clicked with its item lists open and then the mouse leaves this area. In this case, as soon as the mouse leaves this area, the mouseExit script runs and hence it makes the drop down list width to shrink eventhough the list items are still open. How do I resolve this? I was thinking about this and I thought the possible way to overcome this is by writing a javascript for the mouseExit event executing something like this:
if this dropdown list is open,
then this.w = "2in";
else
this.w = "1.625in";
I am not sure how to write a jscript for the above?
(NOTE: If you see my form, I have used the above scripts for the dropdown list in "boxSubform[0]".)
4) Hiding the alternative row shadowing for hidden columns:
If you check out my form, you can notice that I have put the "close" button (button to delete table rows) on the left column and I have also put its presence to "Visible (screen only)". The parent table has got the 'alternative row shadow' checked. What I notice here is, when this page is printed, eventhough the first column's presence is set to "Visible (Screen Only)", it still prints the row shadow for this column and it looks bad. How can I fix this? Any help will be great!
I have already emailed you my new form again so you can have a look.
Thanks again Paul and I cant thank you enough for your help. I am sooo happy to see such a great support and resources available here since it can be a nightmare for some newbies like me... :-) -
Acrobat Forms - Make fillable text box appear after box checked or drop down menu item selected
I have been asked to build an approvals form for my workplace however the approval processes vary considerably depending on the subject. I have been asked to create a list of topics in the form of check boxes or a drop down menu which will then populate a list of text boxes with differing approval authorities and corresponding spaces for signatures. i.e. if 'Topic 1' is selected a list of names and signature spaces will appear, however if 'Topic 2' is selected a different list of names and signature spaces will appear instead.
In order to achieve this I think I only need to find out how to link check boxes or drop down menu items to the appearance of different text boxes.
I should also add that I am a beginner with this stuff.
Thank you very much for any help you can provide.Remove the red coloured part
ul.MenuBarHorizontal ul.MenuBarSubmenuVisible {
left: auto;
top:0;
or start again with the original SpryMenuBarHorizontal.css and follow the rules as in http://www.dwcourse.com/dreamweaver/ten-commandments-spry-menubars.php#one.
Either way will get you back on track.
Good luck.
Ben -
Hierarchical Tree Items question, in Oracle9i forms builder ^^;
Hi,I'm kind of new to using the Hierachical Tree item in Oracle9i Forms builder. so anyway,in the book it was explaining how it's done clearly,but, what I want to do using that item is kind of different;
in the book it has the way of making it like a navigator for the items/fields/tables in the database,either by creating a view for those fields by using Select Statements or using the whole table itself.
however,what I'm trying to do is to have that tree list the names of Forms I have already created and probably the list of Reports I got,so it would sort of like a Menu and I could add a trigger to open the form/report once an item in the tree is double clicked on
here's an example of what I'm talking about :
http://i7.photobucket.com/albums/y264/_Crzy_Chck_/Htree.jpg
sorry the screen shot isn't the best ^^;
that's from a company my friend works at,they have that tree as a menu for their forms and reports,once u double click on a form name or a report,it opens up ^^;
I tried google/yahoo,I got the same info I found on the book.Or you may want to check out this code:
PROCEDURE next_menu(
menu_in IN OUT NUMBER
, master_menu_in IN NUMBER
, master_name_in IN VARCHAR2
, context_menu_in IN VARCHAR2
, node_in IN ftree.node
, no_rows_out IN OUT BOOLEAN )
IS
CURSOR c_menu(
b_master_menu NUMBER
, b_prev_menu NUMBER
, b_context_menu gba_tpivmnu.kmenu%TYPE )
IS
SELECT p.ofnk MASTER
, m.ofnk
, m.napp || m.kfnk_sub napplus
, m.rid
, m.rid_mas
FROM gba_tpivmnu p -- parent menu
, gba_tpivmnu m -- menu
WHERE m.rid_mas = p.rid
AND m.kmenu = b_context_menu
AND (
m.rid_mas = b_master_menu
OR ( b_master_menu IS NULL
AND m.rid_mas IS NULL ) )
AND ( m.rid > b_prev_menu
OR b_prev_menu IS NULL )
ORDER BY m.rid;
r_menu c_menu%ROWTYPE;
l_prev_menu tmenu.kode%TYPE;
l_teller PLS_INTEGER := 0;
new_node ftree.node;
this_node ftree.node;
tree_itm item := FIND_ITEM( tree_item );
l_top_node_name VARCHAR2( 512 );
BEGIN
IF master_menu_in IS NOT NULL
THEN
IF node_in IS NULL
THEN
/* eerste keer, dus dit wordt de bovenste node */
l_top_node_name := master_name_in;
glob.set_current_menu( context_menu_in );
new_node :=
ftree.ADD_TREE_NODE(
tree_itm
, ftree.root_node
, ftree.parent_offset
, ftree.last_child
, ftree.expanded_node
, master_name_in
, 'favorites'
, master_menu_in );
END IF;
LOOP
r_menu.rid := NULL;
OPEN c_menu(
master_menu_in
, l_prev_menu
, context_menu_in );
FETCH c_menu
INTO r_menu;
CLOSE c_menu;
l_teller := l_teller + 1;
l_prev_menu := r_menu.rid;
EXIT WHEN r_menu.rid IS NULL;
this_node :=
ftree.ADD_TREE_NODE(
tree_itm
, NVL( node_in, new_node )
, ftree.parent_offset
, ftree.last_child
, ftree.expanded_node
, r_menu.ofnk
, NULL
, r_menu.napplus );
next_menu(
menu_in => menu_in
, master_menu_in => r_menu.rid
, master_name_in => r_menu.ofnk
, context_menu_in => context_menu_in
, node_in => this_node
, no_rows_out => no_rows_out );
END LOOP;
IF l_teller = 0
THEN
no_rows_out := TRUE;
END IF;
IF l_top_node_name IS NOT NULL
THEN
set_tree_item_top_node( l_top_node_name );
END IF;
END IF;
END next_menu;tree_item contains the name of the tree item you are using. the select statement is based on a table that is like EMP, where one EMP van be another EMP's manager. In this table a menu-option can be another menu-option's master.
this is a recursive function that keeps calling itself untill the query finds no more record.
Good Luck! -
How a menu item can read the parameter from a Form module and ....
I would like to specify the menu item to go_block from a Form module, or even open window, reading parameters.
But there is an Error says "CANNOT CALL LINK-IN FORM from Form builder"
How to make it works??
Plesae HELP~~~~~Dear Friend,
There is one Procedure by which you can get the value of the paramtere passed to the form.. this procedure is NAME_IN...
Hope this will solve your problem..
Ok
Email me when your problem is solved...
My email is "[email protected]"
Regards
Shan -
FRM : 41067 Cannot find menu item id ( forms 10g Menus/Forms Conversion )
Hi All ,
We have menus converted into forms 10g using the forms migration assistant FMA ( frmplsqlconv ) . Now , we had the menus (.mmb) which had used Shared Menus.
After conversion observed that there were some duplicate copies of the shared menus created automatically and each reference where this shared menu was used was replaced by the newly created ones.
Now , when I open the form that uses the menu I get the following error :
FRM : 41067 Cannot find menu item id
On debuggin observed the the above error was generated at :
set_menu_item_property(SHARED_MENU.ITEM,.... )
Not sure how this worked in forms earlier version and not working in 10g now.
Could anyone please let me know how to go about to fix this issue and why is this happening at the first point.
Is re-creating the menu from scratch the only option to resolve the issue ?
Please advise ..
Thanks ,Hi
Error Message: FRM-41067: Cannot find Menu Item: invalid ID.
Error Cause:An invalid ID was passed to a built-in subprogram.
Action:Verify that a proper call to FIND_MENU_ITEM will be performed. Level: 20 Type: Errori think c1 returns null pls check ur Query in the cursor ; run & test if it returns data or not & check the name of the menu that should actually match with the name stored in the db.
If the error still existing then u can get reide of it with a simple line check using FIND_MENU_ITEM as follow...
PROCEDURE disable_menu_items IS
mi_id MenuItem;
val varchar2(10);
BEGIN
IF :Global.user_code '01' THEN
IF :GLOBAL.VC_ROLE_CODE '01' THEN
declare
cursor c1 is
select vc_menu_code,vc_menu_name from
makess.mk_module_menu a where
vc_module_code='06' and
not exists(select vc_menu_code
from makess.mk_roles_menu_inv b
where vc_comp_code=:global.vc_comp_code
and a.vc_menu_code=b.vc_menu_code
and ch_role_code=:global.vc_role_code);
BEGIN
for crec in c1
mi:=FIND_MENU_ITEM('MENU.MENUITEM');
IF NOT ID_NULL(mi) THEN
loop
set_menu_item_property(crec.vc_menu_name,ENABLED,Property_false);
end loop;
END IF;
END;
:global.check:='N';
END IF;
END IF;
END;Hope this helps...
Regards,
Abdetu...
Maybe you are looking for
-
Looking for local mac genius to unscramble contacts, calendar and outlook
I've made a mess of syncing PC and MAC together and now have multiple repeats of same contact and calendar entries that are never ending. Need a local mac genius to unscramble. Anyone know someone in PHX, AZ area? I just don't have time to do this
-
In the Value Mapping Table n:1 relations is not allowed???
I'm using Value Mapping but if I try to fill the Value Mapping Table with 2 different source values (e.g AA, BB) and the same one as target (e.g. ZZ) the Integration Builder does not allow it. I receive the message: "Rappresentation already exists.
-
How do I open a text file to sort using bubble sort?
Hi, I have a text file, which is a list of #'s.. ex) 0.001121 0.313313 0.001334 how do you open a text file and read a list? I have the bubble sort code which sorts.. thanks
-
Maybe this isn't in the right forum, feel free to move it. So I've been hearing that the intel graphics are working really well under linux. I've had experience with intel integrated graphics in a vaio in the past. It was a horrible card, even within
-
Dear all, During modifications in smartform I have to add 2 more columns in the main window ,which already consists of 6 columns ,whether it is possible to alter the column width (as: 1 cm , 2 cm , 07 cm , 2.75 cm ,2.33 cm,and 3.06 cm as of total 18