diff options
-rw-r--r-- | AllLangHelp_sbasic.mk | 1 | ||||
-rw-r--r-- | source/auxiliary/sbasic.tree | 1 | ||||
-rw-r--r-- | text/sbasic/guide/calc_borders.xhp | 248 |
3 files changed, 0 insertions, 250 deletions
diff --git a/AllLangHelp_sbasic.mk b/AllLangHelp_sbasic.mk index dc978fef35..fc3aca51cd 100644 --- a/AllLangHelp_sbasic.mk +++ b/AllLangHelp_sbasic.mk @@ -19,7 +19,6 @@ $(eval $(call gb_AllLangHelp_add_helpfiles,sbasic,\ helpcontent2/source/text/sbasic/guide/access2base \ helpcontent2/source/text/sbasic/guide/basic_2_python \ helpcontent2/source/text/sbasic/guide/basic_examples \ - helpcontent2/source/text/sbasic/guide/calc_borders \ helpcontent2/source/text/sbasic/guide/control_properties \ helpcontent2/source/text/sbasic/guide/create_dialog \ helpcontent2/source/text/sbasic/guide/insert_control \ diff --git a/source/auxiliary/sbasic.tree b/source/auxiliary/sbasic.tree index 3902268c6f..9256c75d07 100644 --- a/source/auxiliary/sbasic.tree +++ b/source/auxiliary/sbasic.tree @@ -375,7 +375,6 @@ <topic id="sbasic/text/sbasic/shared/01040000.xhp">Event-Driven Macros</topic> <topic id="sbasic/text/sbasic/guide/basic_examples.xhp">%PRODUCTNAME Basic Programming Examples</topic> <topic id="sbasic/text/sbasic/guide/basic_2_python.xhp">Calling Python Scripts from Basic</topic> - <topic id="sbasic/text/sbasic/guide/calc_borders.xhp">Formatting Borders in Calc with Macros</topic> <topic id="sbasic/text/sbasic/guide/access2base.xhp">Access2Base, the API for Base users</topic> </node> </node> diff --git a/text/sbasic/guide/calc_borders.xhp b/text/sbasic/guide/calc_borders.xhp deleted file mode 100644 index 6ca63b6199..0000000000 --- a/text/sbasic/guide/calc_borders.xhp +++ /dev/null @@ -1,248 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<helpdocument version="1.0"> -<!-- - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * ---> - -<meta> - <topic id="SF_FormControl" indexer="include" status="PUBLISH"> - <title id="tit" xml-lang="en-US">Formatting Borders in Calc with Macros</title> - <filename>/text/sbasic/guide/calc_borders.xhp</filename> - </topic> -</meta> - -<body> - <bookmark localize="false" branch="index" id="bm_id41582391760114"> - <bookmark_value>macros;format borders</bookmark_value> - </bookmark> - <h1 id="hd_id461623364876507"><variable id="title"><link href="text/sbasic/guide/calc_borders.xhp" name="Calc_Borders_h1">Formatting Borders in Calc with Macros</link></variable></h1> - <paragraph role="paragraph" id="par_id461630536347127">By using Basic or Python programming languages it is possible to write macros that apply formats to ranges of cells in Calc.</paragraph> - - <h2 id="hd_id81630536486560">Formatting Borders in Ranges of Cells</h2> - <paragraph role="paragraph" id="par_id871630536518700">The code snippet below creates a <literal>Sub</literal> called <literal>FormatCellBorder</literal> that applies new border formats to a given range address in the current Calc sheet.</paragraph> - <bascode> - <paragraph role="bascode" localize="false" id="bas_id161630537784558">Sub FormatCellBorder(cellAddress as String, newStyle as Byte, newWidth as Long, Optional newColor as Long)</paragraph> - <paragraph role="bascode" id="bas_id131630537785605"> ' Creates the UNO struct that will store the new line format</paragraph> - <paragraph role="bascode" localize="false" id="bas_id751630537785844"> Dim lineFormat as New com.sun.star.table.BorderLine2</paragraph> - <paragraph role="bascode" localize="false" id="bas_id331630537786054"> lineFormat.LineStyle = newStyle</paragraph> - <paragraph role="bascode" localize="false" id="bas_id561630537786262"> lineFormat.LineWidth = newWidth</paragraph> - <paragraph role="bascode" localize="false" id="bas_id731630537786476"> If Not IsMissing(newColor) Then lineFormat.Color = newColor</paragraph> - <paragraph role="bascode" id="bas_id971630537786724"> ' Gets the target cell</paragraph> - <paragraph role="bascode" localize="false" id="bas_id221630537786925"> Dim oCell as Object</paragraph> - <paragraph role="bascode" localize="false" id="bas_id301630537787141"> Set oCell = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(cellAddress)</paragraph> - <paragraph role="bascode" id="bas_id791630537787373"> ' Applies the new format to all borders</paragraph> - <paragraph role="bascode" localize="false" id="bas_id291630537787589"> oCell.TopBorder = lineFormat</paragraph> - <paragraph role="bascode" localize="false" id="bas_id471630537787829"> oCell.RightBorder = lineFormat</paragraph> - <paragraph role="bascode" localize="false" id="bas_id21630537788070"> oCell.LeftBorder = lineFormat</paragraph> - <paragraph role="bascode" localize="false" id="bas_id491630537788285"> oCell.BottomBorder = lineFormat</paragraph> - <paragraph role="bascode" localize="false" id="bas_id531630537788597">End Sub</paragraph> - </bascode> - <paragraph role="paragraph" id="par_id141630537941393">The <literal>Sub</literal> described above takes in four arguments:</paragraph> - <list type="unordered"> - <listitem> - <paragraph id="par_id841630538209958" role="listitem"><emph>cellAddress</emph> is a string such as denoting the range to be formatted in the format "A1".</paragraph> - </listitem> - <listitem> - <paragraph id="par_id821630538210271" role="listitem"><emph>newStyle</emph> is an integer value that corresponds to the border line style (see <link href="text/sbasic/guide/calc_borders.xhp#LineStyles_h2" name="LineStyles_link">Line Styles</link> below).</paragraph> - </listitem> - <listitem> - <paragraph id="par_id191630538210607" role="listitem"><emph>newWidth</emph> is an integer value that defines the line width.</paragraph> - </listitem> - <listitem> - <paragraph id="par_id71630538211142" role="listitem"><emph>newColor</emph> is an integer value corresponding to a color defined using the <link href="text/sbasic/shared/03010305.xhp" name="RGB_link">RGB</link> function.</paragraph> - </listitem> - </list> - <paragraph role="paragraph" id="par_id201630538522838">To call <literal>FormatCellBorder</literal> create a new macro and pass the desired arguments, as shown below:</paragraph> - <bascode> - <paragraph role="bascode" localize="false" id="bas_id871630538918984">Sub MyMacro</paragraph> - <paragraph role="bascode" id="bas_id651630603779228"> ' Gives access to the line style constants</paragraph> - <paragraph role="bascode" localize="false" id="bas_id961630603780188"> Dim cStyle as Object</paragraph> - <paragraph role="bascode" localize="false" id="bas_id741630603780429"> Set cStyle = com.sun.star.table.BorderLineStyle</paragraph> - <paragraph role="bascode" id="bas_id321630538931144"> ' Formats "B5" with solid blue borders</paragraph> - <paragraph role="bascode" localize="false" id="bas_id1001630538931505"> FormatCellBorder("B5", cStyle.SOLID, 20, RGB(0, 0, 255))</paragraph> - <paragraph role="bascode" id="bas_id91630538931686"> ' Formats all borders in the range "D2:F6" with red dotted borders</paragraph> - <paragraph role="bascode" localize="false" id="bas_id261630538932143"> FormatCellBorder("D2:F6", cStyle.DOTTED, 20, RGB(255, 0, 0))</paragraph> - <paragraph role="bascode" localize="false" id="bas_id471630539067462">End Sub</paragraph> - </bascode> - <paragraph role="paragraph" id="par_id31630540159114">It is possible to implement the same functionality in Python:</paragraph> - <pycode> - <paragraph role="pycode" localize="false" id="pyc_id381630541980340">from uno import createUnoStruct</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id231630541980607">from scriptforge import CreateScriptService</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id801630542013431"></paragraph> - <paragraph role="pycode" localize="false" id="pyc_id221630540777433">def formatCellBorder(cellAddress, newStyle, newWidth, newColor=0):</paragraph> - <paragraph role="pycode" id="pyc_id411630540777672"> # Defines the new line format</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id731630540777889"> line_format = createUnoStruct("com.sun.star.table.BorderLine2")</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id341630540778097"> line_format.LineStyle = newStyle</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id301630540778329"> line_format.LineWidth = newWidth</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id691630540778577"> line_format.Color = newColor</paragraph> - <paragraph role="pycode" id="pyc_id361630540778786"> # Scriptforge service to access cell ranges</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id471630540778985"> doc = CreateScriptService("Calc")</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id551630540779225"> cell = doc.XCellRange(cellAddress)</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id51630540779426"> cell.TopBorder = line_format</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id31630540779643"> cell.RightBorder = line_format</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id401630540779834"> cell.LeftBorder = line_format</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id291630540780067"> cell.BottomBorder = line_format</paragraph> - </pycode> - <paragraph role="paragraph" id="par_id931630541661889">The code snippet below implements a macro named <literal>myMacro</literal> that calls <literal>formatCellBorder</literal>:</paragraph> - <pycode> - <paragraph role="pycode" localize="false" id="pyc_id131630605507740">from com.sun.star.table import BorderLineStyle as cStyle</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id351630605508043"></paragraph> - <paragraph role="pycode" localize="false" id="pyc_id181630541791470">def myMacro():</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id1001630541791803"> bas = CreateScriptService("Basic")</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id531630541792043"> formatCellBorder("B5", cStyle.SOLID, 20, bas.RGB(0, 0, 255))</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id601630541792230"> formatCellBorder("D2:F6", cStyle.DOTTED, 20, bas.RGB(255, 0, 0))</paragraph> - </pycode> - <note id="par_id261630541889040">The Python code presented above uses the <link href="text/sbasic/shared/03/lib_ScriptForge.xhp" name="SF_link">ScriptForge library</link> that is available since %PRODUCTNAME 7.2.</note> - - <section id="LineStyles_h2"> - <h2 id="hd_id361630539136798">Line Styles</h2> - </section> - <paragraph role="paragraph" id="par_id501630539147234">Line styles are defined as integer contants. The table below lists the constants for the line styles available in <menuitem>Format - Cells - Borders</menuitem>:</paragraph> - <table id="tab_id531630539273987"> - <tablerow> - <tablecell> - <paragraph id="par_id651630604006712" role="tablehead">Constant name</paragraph> - </tablecell> - <tablecell> - <paragraph id="par_id501630539273987" role="tablehead">Integer value</paragraph> - </tablecell> - <tablecell> - <paragraph id="par_id191630539273987" role="tablehead">Line style name</paragraph> - </tablecell> - </tablerow> - <tablerow> - <tablecell> - <paragraph id="par_id301630604024530" localize="false" role="tablecontent">SOLID</paragraph> - </tablecell> - <tablecell> - <paragraph id="par_id861630539273987" localize="false" role="tablecontent">0</paragraph> - </tablecell> - <tablecell> - <paragraph id="par_id691630539273987" role="tablecontent">Solid</paragraph> - </tablecell> - </tablerow> - <tablerow> - <tablecell> - <paragraph id="par_id571630604044791" localize="false" role="tablecontent">DOTTED</paragraph> - </tablecell> - <tablecell> - <paragraph id="par_id321630539319305" localize="false" role="tablecontent">1</paragraph> - </tablecell> - <tablecell> - <paragraph id="par_id591630539325162" role="tablecontent">Dotted</paragraph> - </tablecell> - </tablerow> - <tablerow> - <tablecell> - <paragraph id="par_id921630604090581" localize="false" role="tablecontent">DASHED</paragraph> - </tablecell> - <tablecell> - <paragraph id="par_id261630539430102" localize="false" role="tablecontent">2</paragraph> - </tablecell> - <tablecell> - <paragraph id="par_id881630539433260" role="tablecontent">Dashed</paragraph> - </tablecell> - </tablerow> - <tablerow> - <tablecell> - <paragraph id="par_id981630604124169" localize="false" role="tablecontent">FINE_DASHED</paragraph> - </tablecell> - <tablecell> - <paragraph id="par_id701630539460809" localize="false" role="tablecontent">14</paragraph> - </tablecell> - <tablecell> - <paragraph id="par_id111630539463634" role="tablecontent">Fine dashed</paragraph> - </tablecell> - </tablerow> - <tablerow> - <tablecell> - <paragraph id="par_id311630604157101" localize="false" role="tablecontent">DOUBLE_THIN</paragraph> - </tablecell> - <tablecell> - <paragraph id="par_id101630539468131" localize="false" role="tablecontent">15</paragraph> - </tablecell> - <tablecell> - <paragraph id="par_id261630539471483" role="tablecontent">Double thin</paragraph> - </tablecell> - </tablerow> - <tablerow> - <tablecell> - <paragraph id="par_id911630604171290" localize="false" role="tablecontent">DASH_DOT</paragraph> - </tablecell> - <tablecell> - <paragraph id="par_id851630539475055" localize="false" role="tablecontent">16</paragraph> - </tablecell> - <tablecell> - <paragraph id="par_id671630539478101" role="tablecontent">Dash dot</paragraph> - </tablecell> - </tablerow> - <tablerow> - <tablecell> - <paragraph id="par_id841630604186084" localize="false" role="tablecontent">DASH_DOT_DOT</paragraph> - </tablecell> - <tablecell> - <paragraph id="par_id481630539481944" localize="false" role="tablecontent">17</paragraph> - </tablecell> - <tablecell> - <paragraph id="par_id701630539484498" role="tablecontent">Dash dot dot</paragraph> - </tablecell> - </tablerow> - </table> - <tip id="par_id751630539680866">Refer to the <link href="https://api.libreoffice.org/docs/idl/ref/namespacecom_1_1sun_1_1star_1_1table_1_1BorderLineStyle.html" name="BorderLineStyle_link">BorderLineStyle Constant Reference</link> in the LibreOffice API documentation to learn more about line style constants.</tip> - - <h2 id="hd_id31630542361666">Formatting Borders Using TableBorder2</h2> - <paragraph role="paragraph" id="par_id11630542436346">Range objects have a property named <literal>TableBorder2</literal> that can be used to format range borders as it is done in the <menuitem>Format - Cells - Borders</menuitem> dialog in the <emph>Line Arrangement</emph> section.</paragraph> - <paragraph role="paragraph" id="par_id641630542724480">In addition to top, bottom, left and right borders, <literal>TableBorder2</literal> also defines vertical and horizontal borders. The macro below applies only the top and bottom borders to the range "B2:E5".</paragraph> - <bascode> - <paragraph role="bascode" localize="false" id="bas_id761630543331847">Sub TableBorder2Example</paragraph> - <paragraph role="bascode" localize="false" id="bas_id261630606415938"> Dim cStyle as Object</paragraph> - <paragraph role="bascode" localize="false" id="bas_id831630606416281"> Set cStyle = com.sun.star.table.BorderLineStyle</paragraph> - <paragraph role="bascode" id="bas_id191630543332073"> ' Defines the new line format</paragraph> - <paragraph role="bascode" localize="false" id="bas_id111630543332260"> Dim lineFormat as New com.sun.star.table.BorderLine2</paragraph> - <paragraph role="bascode" localize="false" id="bas_id101630543332460"> lineFormat.LineStyle = cStyle.SOLID</paragraph> - <paragraph role="bascode" localize="false" id="bas_id241630543332688"> lineFormat.LineWidth = 15</paragraph> - <paragraph role="bascode" localize="false" id="bas_id631630543332874"> lineFormat.Color = RGB(0, 0, 0)</paragraph> - <paragraph role="bascode" id="bas_id281630543333061"> ' Struct that stores the new TableBorder2 definition</paragraph> - <paragraph role="bascode" localize="false" id="bas_id691630543333288"> Dim tableFormat as New com.sun.star.table.TableBorder2</paragraph> - <paragraph role="bascode" localize="false" id="bas_id451630543333501"> tableFormat.TopLine = lineFormat</paragraph> - <paragraph role="bascode" localize="false" id="bas_id661630543333742"> tableFormat.BottomLine = lineFormat</paragraph> - <paragraph role="bascode" localize="false" id="bas_id151630543333968"> tableFormat.IsTopLineValid = True</paragraph> - <paragraph role="bascode" localize="false" id="bas_id211630543334181"> tableFormat.IsBottomLineValid = True</paragraph> - <paragraph role="bascode" id="bas_id11630543334395"> ' Applies the table format to the range "B2:E5"</paragraph> - <paragraph role="bascode" localize="false" id="bas_id761630543334607"> Dim oCell as Object</paragraph> - <paragraph role="bascode" localize="false" id="bas_id531630543334821"> oCell = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("B2:E5")</paragraph> - <paragraph role="bascode" localize="false" id="bas_id851630543335050"> oCell.TableBorder2 = tableFormat</paragraph> - <paragraph role="bascode" localize="false" id="bas_id51630543335289">End Sub</paragraph> - </bascode> - <paragraph role="paragraph" id="par_id401630544066231">The macro can be implemented in Python as follows:</paragraph> - <pycode> - <paragraph role="pycode" localize="false" id="pyc_id131630605507120">from com.sun.star.table import BorderLineStyle as cStyle</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id21630606279912">from scriptforge import CreateScriptService</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id351630605508087"></paragraph> - <paragraph role="pycode" localize="false" id="pyc_id791630544113462">def tableBorder2Example():</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id461630606297116"> bas = CreateScriptService("Basic")</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id221630544113741"> line_format = createUnoStruct("com.sun.star.table.BorderLine2")</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id271630544113941"> line_format.LineStyle = cStyle.SOLID</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id41630544114154"> line_format.LineWidth = 18</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id921630544114367"> line_format.Color = bas.RGB(0, 0, 0)</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id421630544114568"> table_format = createUnoStruct("com.sun.star.table.TableBorder2")</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id721630544114809"> table_format.TopLine = line_format</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id481630544115021"> table_format.BottomLine = line_format</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id371630544115248"> table_format.IsTopLineValid = True</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id171630544115462"> table_format.IsBottomLineValid = True</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id761630544115702"> doc = CreateScriptService("Calc")</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id341630544115915"> cell = doc.XCellRange("B2:E5")</paragraph> - <paragraph role="pycode" localize="false" id="pyc_id841630544116128"> cell.TableBorder2 = table_format</paragraph> - </pycode> - <tip id="par_id751630539680102">Refer to the <link href="https://api.libreoffice.org/docs/idl/ref/structcom_1_1sun_1_1star_1_1table_1_1TableBorder2.html" name="BorderLineStyle_link">TableBorder2 Struct Reference</link> in the LibreOffice API documentation to learn more about its attributes.</tip> - - <section id="relatedtopics"> - <embed href="text/sbasic/shared/03/lib_ScriptForge.xhp#ScriptForge_lib"/> - </section> - </body> -</helpdocument> |