Difference between revisions of "Documentation/DevGuide/Basic/Writing and Debugging a Basic UNO program"
OOoWikiBot (Talk | contribs) m (Robot: Changing Category:Documentation/Developers Guide/Basic and Dialogs) |
m |
||
(10 intermediate revisions by 5 users not shown) | |||
Line 5: | Line 5: | ||
|NextPage=Documentation/DevGuide/Basic/Calling a Sub from the User Interface | |NextPage=Documentation/DevGuide/Basic/Calling a Sub from the User Interface | ||
}} | }} | ||
− | {{DISPLAYTITLE:Writing and Debugging a Basic UNO program}} | + | {{Documentation/DevGuideLanguages|Documentation/DevGuide/Basic/{{SUBPAGENAME}}}} |
− | Enter the following source code in the Basic editor window. The example asks the user for the location of a graphics file and inserts it at the current cursor position of our document. Later, the example will be extended by a small insert graphics autopilot. | + | {{DISPLAYTITLE:Writing and Debugging a Basic UNO program}} |
+ | Enter the following source code in the Basic editor window. The example asks the user for the location of a graphics file and inserts it at the current cursor position of our document. Later, the example will be extended by a small insert graphics autopilot. | ||
<!--[SOURCE:BasicAndDialogs/FirstStepsBasic.odt]--> | <!--[SOURCE:BasicAndDialogs/FirstStepsBasic.odt]--> | ||
− | + | <syntaxhighlight lang="oobas"> | |
Sub Main | Sub Main | ||
' ask the user for a graphics file | ' ask the user for a graphics file | ||
sGraphicUrl = InputBox("Please enter the URL of a graphic file", _ | sGraphicUrl = InputBox("Please enter the URL of a graphic file", _ | ||
"Import Graphics", _ | "Import Graphics", _ | ||
− | "file:///" | + | "file:///") |
if sGraphicURL = "" then ' User clicked Cancel | if sGraphicURL = "" then ' User clicked Cancel | ||
exit sub | exit sub | ||
Line 37: | Line 38: | ||
oText.insertTextContent(oCursor.getStart(), oGraphicObject, false) | oText.insertTextContent(oCursor.getStart(), oGraphicObject, false) | ||
End Sub | End Sub | ||
+ | </syntaxhighlight> | ||
+ | If help is required on Basic keywords, press {{key|F1}} while the text cursor is on a keyword. The {{AOo}} online help contains descriptions of the Basic language as supported by {{AOo}}. | ||
− | + | Starting with the line <tt>oDoc = ThisComponent</tt>, where the document model is accessed, we use the UNO integration of {{AOo}} Basic. <tt>ThisComponent</tt> is a shortcut to access a document model from the Basic code contained in it. Earlier, you created <tt>Module1</tt> in ''FirstStepsBasic.odt'', that is, your Basic code is embedded in the document ''FirstStepsBasic.odt'', not in a global library below the '''My Macros''' container. The property <tt>ThisComponent</tt> therefore contains the document model of ''FirstStepsBasic.odt''. | |
− | + | ||
− | Starting with the line < | + | |
− | {{ | + | {{Tip|Outside document libraries use <tt>ThisComponent</tt> or <tt>StarDesktop.CurrentComponent</tt> to retrieve the current document. If access to an open document is required, even if it is not the current document, you have to iterate over the components in <tt>StarDesktop.Components</tt>, checking their URL property with code similar to the following: |
− | + | <syntaxhighlight lang="oobas">oComps = StarDesktop.Components | |
oCompsEnum = oComps.createEnumeration() | oCompsEnum = oComps.createEnumeration() | ||
Line 53: | Line 54: | ||
print oComp.getURL() | print oComp.getURL() | ||
endif | endif | ||
− | wend</ | + | wend</syntaxhighlight> |
}} | }} | ||
Line 59: | Line 60: | ||
{| cellpadding=4 | {| cellpadding=4 | ||
|[[Image:Breakpoint.png]] | |[[Image:Breakpoint.png]] | ||
− | |To debug the program, put the cursor into the line < | + | |To debug the program, put the cursor into the line <tt>oDoc = ThisComponent</tt> and click the '''Breakpoint''' icon in the macro bar. |
|- | |- | ||
|[[Image:MacroRun.png]] | |[[Image:MacroRun.png]] | ||
Line 68: | Line 69: | ||
|- | |- | ||
|[[Image:Macros.png]] | |[[Image:Macros.png]] | ||
− | |Click the '''Macros''' icon if you need to run a Sub other than the first Sub in the module | + | |Click the '''Macros''' icon if you need to run a Sub other than the first Sub in the module. In the '''{{AOo}} Basic Macros''' dialog, navigate to the appropriate module, select the Sub to run and press the {{button|'''Run'''}} button. |
|} | |} | ||
− | To observe the values of Basic variables during debugging, enter a variable name in the '''Watch''' field of the Basic editor and press the | + | To observe the values of Basic variables during debugging, enter a variable name in the '''Watch''' field of the Basic editor and press the {{key|Enter}} key to add the watch, or point at a variable name with the mouse cursor without clicking it. In the example below, we can observe the variables <tt>sGraphicUrl</tt> and <tt>oGraphicObject</tt>: |
− | [[Image:Watch.png|none|thumb| | + | [[Image:Watch.png|none|thumb|700px|A macro in the source editor window]] |
− | Since | + | Since OpenOffice.org 2.0.0 it is also possible to inspect the values of UNO objects in the Basic debugger during runtime. |
{{PDL1}} | {{PDL1}} | ||
[[Category:Documentation/Developer's Guide/Basic and Dialogs]] | [[Category:Documentation/Developer's Guide/Basic and Dialogs]] |
Latest revision as of 10:40, 18 January 2024
- Creating a Module in a Standard Library
- Writing and Debugging a Basic UNO program
- Calling a Sub from the User Interface
- Creating Dialogs
- Adding Event Handlers
- AutoPilot Dialogs
Enter the following source code in the Basic editor window. The example asks the user for the location of a graphics file and inserts it at the current cursor position of our document. Later, the example will be extended by a small insert graphics autopilot.
Sub Main ' ask the user for a graphics file sGraphicUrl = InputBox("Please enter the URL of a graphic file", _ "Import Graphics", _ "file:///") if sGraphicURL = "" then ' User clicked Cancel exit sub endif ' access the document model oDoc = ThisComponent ' get the Text service of the document oText = oDoc.getText() ' create an instance of a graphic object using the document service factory oGraphicObject = oDoc.createInstance("com.sun.star.text.GraphicObject") ' set the URL of the graphic oGraphicObject.GraphicURL = sGraphicURL ' get the current cursor position in the GUI and create a text cursor from it oViewCursor = oDoc.getCurrentController().getViewCursor() oCursor = oText.createTextCursorByRange(oViewCursor.getStart()) ' insert the graphical object at the cursor position oText.insertTextContent(oCursor.getStart(), oGraphicObject, false) End Sub
If help is required on Basic keywords, press F1 while the text cursor is on a keyword. The Apache OpenOffice online help contains descriptions of the Basic language as supported by Apache OpenOffice.
Starting with the line oDoc = ThisComponent, where the document model is accessed, we use the UNO integration of Apache OpenOffice Basic. ThisComponent is a shortcut to access a document model from the Basic code contained in it. Earlier, you created Module1 in FirstStepsBasic.odt, that is, your Basic code is embedded in the document FirstStepsBasic.odt, not in a global library below the My Macros container. The property ThisComponent therefore contains the document model of FirstStepsBasic.odt.
To observe the values of Basic variables during debugging, enter a variable name in the Watch field of the Basic editor and press the ↵ Enter key to add the watch, or point at a variable name with the mouse cursor without clicking it. In the example below, we can observe the variables sGraphicUrl and oGraphicObject:
Since OpenOffice.org 2.0.0 it is also possible to inspect the values of UNO objects in the Basic debugger during runtime.
Content on this page is licensed under the Public Documentation License (PDL). |