Difference between revisions of "Currently open documents"

From Apache OpenOffice Wiki
Jump to: navigation, search
 
m
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
'''The following function returns an array of the currently open documents. It calls fnWhichComponent which is available from [[Currently active document]].'''
 
'''The following function returns an array of the currently open documents. It calls fnWhichComponent which is available from [[Currently active document]].'''
  
<code>[oobas]
+
<syntaxhighlight lang="oobas">
 
function fnCurrentDocuments(optional sType as string)
 
function fnCurrentDocuments(optional sType as string)
 
dim oEnum as object, oPosDoc as object, i as integer
 
dim oEnum as object, oPosDoc as object, i as integer
Line 46: Line 46:
 
fnCurrentDocuments = mDocs()
 
fnCurrentDocuments = mDocs()
 
end function
 
end function
</code>
+
</syntaxhighlight>
 
An example of calling the above function. This function returns an array of the titles for the currently open documents.  
 
An example of calling the above function. This function returns an array of the titles for the currently open documents.  
  
<code>[oobas]
+
<syntaxhighlight lang="oobas">
 
function fnCurrentDocTitles(optional sType as string)
 
function fnCurrentDocTitles(optional sType as string)
 
if isMissing(sType) then
 
if isMissing(sType) then
Line 70: Line 70:
 
fnCurrentDocTitles = mTitles()
 
fnCurrentDocTitles = mTitles()
 
End function
 
End function
</code>
+
</syntaxhighlight>
 
An example of displaying the titles of the currently open documents:  
 
An example of displaying the titles of the currently open documents:  
  
<code>[oobas]
+
<syntaxhighlight lang="oobas">
 
sText = "Text"
 
sText = "Text"
 
mCurTitles = fnCurrentDocTitles(sText)
 
mCurTitles = fnCurrentDocTitles(sText)
Line 81: Line 81:
 
         msgbox "No Text documents currently open."
 
         msgbox "No Text documents currently open."
 
end if
 
end if
</code>
+
</syntaxhighlight>
 +
 
 +
[[Category:Basic:Tutorials]]

Latest revision as of 14:40, 24 August 2022

The following function returns an array of the currently open documents. It calls fnWhichComponent which is available from Currently active document.

function fnCurrentDocuments(optional sType as string)
dim oEnum as object, oPosDoc as object, i as integer
dim oListboxDocs as object
 
oEnum = StarDesktop.getComponents.createEnumeration
 
'Count windows
i = -1
while oEnum.hasMoreElements
        oPosDoc = oEnum.nextElement
        ' The check for interface XserviceInfo necessary as some windows, e.g. Help
        ' don't have the interface and need to be excluded anyway.
        If HasUnoInterfaces(oPosDoc, "com.sun.star.lang.XServiceInfo") Then
                if isMissing(sType) then
                        i = i + 1
                elseif  fnWhichComponent(oPosDoc) = Stype then
                        i = i + 1
                end if
        end if
wend
 
if i = -1 then
        'no documents of specified type currently open
        exit function
end if
 
dim mDocs(i)
 
i = -1
oEnum = StarDesktop.getComponents.createEnumeration
while oEnum.hasMoreElements
        oPosDoc = oEnum.nextElement
        If HasUnoInterfaces( oPosDoc, "com.sun.star.lang.XServiceInfo") Then 
                If isMissing(sType) then
                        i = i + 1
                        mDocs(i) = oPosDoc
                elseif fnWhichComponent(oPosDoc) = Stype then
                        i = i + 1
                        mDocs(i) = oPosDoc
                end if
        end if
wend
fnCurrentDocuments = mDocs()
end function

An example of calling the above function. This function returns an array of the titles for the currently open documents.

function fnCurrentDocTitles(optional sType as string)
if isMissing(sType) then
        mDocs = fnCurrentDocuments()
else
        mDocs = fnCurrentDocuments(SType)
end if
 
if isEmpty(mDocs) then
        exit function
end if
 
nDocs = uBound(mDocs)
 
dim mTitles(nDocs)
 
for i = 0 to nDocs
        mTitles(i) = mDocs(i).getCurrentController.getFrame.getPropertyValue("Title")
next
fnCurrentDocTitles = mTitles()
End function

An example of displaying the titles of the currently open documents:

sText = "Text"
mCurTitles = fnCurrentDocTitles(sText)
if not isEmpty(mCurTitles) then
        msgbox join(mCurTitles, chr(10)), 0, "Currently open " & sText & "documents."
else
        msgbox "No Text documents currently open."
end if
Personal tools