<?xml version="1.0" encoding="UTF-8"?>
<helpdocument version="1.0">
	
<!--***********************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 ***********************************************************-->


 
	
<meta>
      <topic id="textschartmain0202xml" indexer="include" status="PUBLISH">
         <title xml-lang="en-US" id="tit">Formatting Bar</title>
         <filename>/text/schart/main0202.xhp</filename>
      </topic>
   </meta>
   <body>
      <section id="chartformatting">
         <paragraph xml-lang="en-US" id="hd_id0810200911433792" role="heading" level="1" l10n="NEW"><link href="text/schart/main0202.xhp" name="Formatting Bar">Formatting Bar</link></paragraph>
         <paragraph xml-lang="en-US" id="par_id0810200911433835" role="paragraph" l10n="NEW">The Formatting Bar is shown when a chart is set to edit mode. Double-click a chart to enter edit mode. Click outside the chart to leave edit mode.</paragraph>
      </section>
      <paragraph xml-lang="en-US" id="par_id0810200911433878" role="paragraph" l10n="NEW">You can edit the formatting of a chart using the controls and icons on the Formatting Bar.</paragraph>
<bookmark xml-lang="en-US" branch="hid/.uno:ChartElementSelector" id="bm_id0810200902112648" localize="false"/>
<paragraph xml-lang="en-US" id="hd_id0810200902300436" role="heading" level="2" l10n="NEW">Select Chart Element</paragraph>
      <paragraph xml-lang="en-US" id="par_id0810200902300479" role="paragraph" l10n="NEW"><ahelp hid=".">Select the element from the chart that you want to format. The element gets selected in the chart preview. Click Format Selection to open the properties dialog for the selected element.</ahelp></paragraph>
      <paragraph xml-lang="en-US" id="hd_id0810200902300555" role="heading" level="2" l10n="NEW">Format Selection</paragraph>
      <paragraph xml-lang="en-US" id="par_id0810200902300539" role="paragraph" l10n="NEW"><ahelp hid=".">Opens the properties dialog for the selected element.</ahelp></paragraph>
      <paragraph xml-lang="en-US" id="hd_id0810200902300545" role="heading" level="2" l10n="NEW">Chart Type</paragraph>
      <paragraph xml-lang="en-US" id="par_id0810200902300594" role="paragraph" l10n="NEW"><ahelp hid=".">Opens the Chart Type dialog.</ahelp></paragraph>
      <paragraph xml-lang="en-US" id="hd_id0810200902300537" role="heading" level="2" l10n="NEW">Chart Data Table</paragraph>
      <paragraph xml-lang="en-US" id="par_id0810200902300699" role="paragraph" l10n="NEW"><ahelp hid=".">Opens the Data Table dialog where you can edit the chart data.</ahelp></paragraph>
      <paragraph xml-lang="en-US" id="hd_id0810200902300672" role="heading" level="2" l10n="NEW">Horizontal Grid On/Off</paragraph>
      <paragraph xml-lang="en-US" id="par_id0810200902300630" role="paragraph" l10n="CHG"><ahelp hid=".">The Horizontal Grid On/Off icon on the Formatting bar toggles the visibility of the grid display for the Y axis.</ahelp></paragraph>
      <paragraph xml-lang="en-US" id="hd_id0810200902300738" role="heading" level="2" l10n="NEW">Legend On/Off</paragraph>
      <paragraph xml-lang="en-US" id="par_id081020090230076" role="paragraph" l10n="NEW"><ahelp hid=".">To show or hide a legend, click Legend On/Off on the Formatting bar.</ahelp></paragraph>
      <paragraph xml-lang="en-US" id="hd_id0810200902300785" role="heading" level="2" l10n="NEW">Scale Text</paragraph>
      <paragraph xml-lang="en-US" id="par_id0810200902300784" role="paragraph" l10n="NEW"><ahelp hid=".">Rescales the text in the chart when you change the size of the chart.</ahelp></paragraph>
      <paragraph xml-lang="en-US" id="hd_id081020090230087" role="heading" level="2" l10n="NEW">Automatic Layout</paragraph>
      <paragraph xml-lang="en-US" id="par_id0810200902300834" role="paragraph" l10n="NEW"><ahelp hid=".">Moves all chart elements to their default positions inside the current chart. This function does not alter the chart type or any other attributes other than the position of elements.</ahelp></paragraph>
   </body>
</helpdocument>