Tulong sa LibreOffice 25.8
Pinapasimple ng serbisyo ng UI (User Interface) ang pagkakakilanlan at pagmamanipula ng iba't ibang mga window na bumubuo sa buong LibreOffice application:
Pagpili ng Windows
Paglipat at pagbabago ng laki ng Windows
Mga setting ng statusbar
Pagpapakita ng isang lumulutang na progress bar
Paglikha ng mga bagong bintana
Access sa pinagbabatayan na "mga dokumento"
Ang serbisyo ng UI ay ang panimulang punto upang magbukas, gumawa o mag-access sa nilalaman ng bago o umiiral na mga dokumento mula sa isang script ng user.
Maaaring italaga ang isang window gamit ang iba't ibang paraan:
isang buong path at pangalan ng file
ang huling bahagi ng buong pangalan ng file o kahit na ang huling bahagi lamang na walang suffix nito
ang pamagat ng bintana
para sa mga bagong dokumento, tulad ng "Walang Pamagat 1"
isa sa mga espesyal na bintana" BASICIDE "at" WELCOMESCREEN "
Case-sensitive ang pangalan ng window.
Ang mga pamamaraan Lumikha ng Dokumento , CreateBaseDocument , GetDocument , OpenBaseDocument at OpenDocument , na inilarawan sa ibaba, bumuo ng mga bagay na dokumento. Kapag ang isang window ay naglalaman ng isang dokumento, isang halimbawa ng Dokumento kinakatawan ng klase ang dokumentong iyon. Ang isang counterexample na ang Basic IDE ay hindi isang dokumento ngunit isang window sa aming terminolohiya. Bilang karagdagan, ang isang dokumento ay may uri: Calc , Impress , Manunulat ,...
Ang mga partikular na katangian at pamamaraan na naaangkop sa mga dokumento ay ipinatupad sa isang klase ng dokumento.
Ang pagpapatupad ng klase ng mga object ng dokumento ay ginagawa sa Mga SFDocuments nauugnay na aklatan. Tingnan mo" Dokumento "serbisyo.
Bago gamitin ang UI serbisyo ang ScriptForge kailangang i-load o i-import ang library:
    Dim ui As Variant
    GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
    Set ui = CreateScriptService("UI")
  
    from scriptforge import CreateScriptService
    ui = CreateScriptService("UI")
  | Pangalan | ReadOnly | Type | Mga nilalaman | 
|---|---|---|---|
| ActiveWindow | Mayroon | String | isang wasto at natatangi WindowName para sa kasalukuyang aktibong window. Kapag hindi matukoy ang window, ibabalik ang isang zero-length na string. | 
| Height | Mayroon | Integer | Ibinabalik ang taas ng aktibong window sa mga pixel. | 
| Width | Mayroon | Integer | Ibinabalik ang lapad ng aktibong window sa mga pixel. | 
| X | Mayroon | Integer | Ibinabalik ang X coordinate ng aktibong window, na ang distansya sa kaliwang gilid ng screen sa mga pixel. | 
| Y | Mayroon | Integer | Ibinabalik ang Y coordinate ng aktibong window, na ang distansya sa tuktok na gilid ng screen sa mga pixel. Ang halagang ito ay hindi isinasaalang-alang ang mga dekorasyon sa bintana na idinagdag ng iyong operating system, kaya kahit na ang window ay na-maximize ang halagang ito ay maaaring hindi zero. | 
| Pangalan | Halaga | Mga nilalaman | 
|---|---|---|
| MACROEXECALWAYS | 2 | Ang mga macro ay palaging isinasagawa | 
| MACROEXECNEVER | 1 | Ang mga macro ay hindi kailanman naisasagawa | 
| MACROEXECNORMAL | 0 | Ang macro execution ay depende sa mga setting ng user | 
Ang mga halimbawa sa ibaba ay nagpapakita ng a MsgBox kasama ang mga pangalan ng lahat ng kasalukuyang bukas na dokumento.
     Dim openDocs As Object, strDocs As String
     Set openDocs = ui.Documents()
     strDocs = openDocs(0)
     For i = 1 To UBound(openDocs)
         strDocs = strDocs & Chr(10) & openDocs(i)
     Next i
     MsgBox strDocs
   
     ui = CreateScriptService("UI")
     bas = CreateScriptService("Basic")
     openDocs = ui.Documents()
     strDocs = "\n".join(openDocs)
     bas.MsgBox(strDocs)
   | Listahan ng Mga Paraan sa Serbisyo ng UI | ||
|---|---|---|
| 
           Activate | ||
Tandaan, bilang isang pagbubukod, na ang mga pamamaraan ay minarkahan (*) ay hindi naaangkop sa mga Base na dokumento .
Gawing aktibo ang tinukoy na window. Nagbabalik ang pamamaraan totoo kung ang ibinigay na window ay natagpuan at maaaring i-activate. Walang pagbabago sa aktwal na user interface kung walang window na tumutugma sa pagpili.
svc.Activate(windowname: str): bool
windowname : tingnan ang mga kahulugan sa itaas.
      ui.Activate("C:\Documents\My file.odt")
    
      ui.Activate(r"C:\Documents\My file.odt")
    Gumagawa at nag-iimbak ng bagong LibreOffice Base na dokumento na nag-e-embed ng walang laman na database ng ibinigay na uri. Ang pamamaraan ay nagbabalik a Dokumento halimbawa ng serbisyo.
svc.CreateBaseDocument(filename: str, embeddeddatabase: str = 'HSQLDB', registrationname: str = '', opt calcfilename: str): svc
filename : Tinutukoy ang file na gagawin. Dapat itong sundin ang SF_FileSystem.FileNaming notasyon. Kung ang file ay mayroon na, ito ay mapapatungan nang walang babala.
embeddeddatabase : Alinman sa "HSQLDB" (default), "FIREBIRD" o "CALC".
pangalan ng pagpaparehistro : Ang pangalan na ginamit upang iimbak ang bagong database sa rehistro ng mga database. Kapag = "" (default), walang pagpaparehistro na nagaganap. Kung ang pangalan ay mayroon na ito ay na-overwrite nang walang babala.
calcfilename : Kailan lang embeddeddatabase = "CALC", calcfilename kumakatawan sa file na naglalaman ng mga talahanayan bilang mga Calc sheet. Ang file ay dapat na umiiral o isang error ay nakataas.
      Dim myBase As Object, myCalcBase As Object
      Set myBase = ui.CreateBaseDocument("C:\Databases\MyBaseFile.odb", "FIREBIRD")
      Set myCalcBase = ui.CreateBaseDocument("C:\Databases\MyCalcBaseFile.odb", _
          "CALC", , "C:\Databases\MyCalcFile.ods")
   
     myBase = ui.CreateBaseDocument(r"C:\Databases\MyBaseFile.odb", "FIREBIRD")
     myCalcBase = ui.CreateBaseDocument(r"C:\Databases\MyCalcBaseFile.odb", \
         "CALC", calcfilename = r"C:\Databases\MyCalcFile.ods")
   Gumawa ng bagong LibreOffice na dokumento ng isang partikular na uri o batay sa isang ibinigay na template. Ang pamamaraan ay nagbabalik ng isang halimbawa ng klase ng dokumento o isa sa mga subclass nito (Calc, Writer).
svc.CreateDocument(documenttype: str = '', templatefile: str = '', hidden: bool = False): svc
uri ng dokumento : "Calc", "Writer", atbp. Kung wala, ang templatefile dapat na naroroon ang argumento.
templatefile : Ang puno FileName ng template kung saan buuin ang bagong dokumento. Kung ang file ay hindi umiiral, ang argumento ay hindi papansinin. Ang FileSystem nagbibigay ng serbisyo ang TemplatesFolder at UserTemplatesFolder mga katangian upang makatulong sa pagbuo ng argumento.
nakatago : kung totoo , buksan ang bagong dokumento sa background (default = Mali ). Upang gamitin nang may pag-iingat: ang pag-activate o pagsasara pagkatapos ay maaari lamang mangyari sa pamamagitan ng program.
Sa parehong mga halimbawa sa ibaba, ang unang tawag sa Lumikha ng Dokumento paraan ay lumilikha ng isang blangkong dokumento ng Calc, samantalang ang pangalawa ay lumilikha ng isang dokumento mula sa isang template file.
      Dim myDoc1 As Object, myDoc2 As Object, FSO As Object
      Set myDoc1 = ui.CreateDocument("Calc")
      Set FSO = CreateScriptService("FileSystem")
      Set myDoc2 = ui.CreateDocument(, FSO.BuildPath(FSO.TemplatesFolder, "personal/CV.ott"))
   
     myDoc1 = ui.CreateDocument("Calc")
     fs = CreateScriptService("FileSystem")
     myDoc2 = ui.CreateDocument(templatefile = fs.BuildPath(fs.TemplatesFolder, "personal/CV.ott"))
   Ang listahan ng mga kasalukuyang bukas na dokumento. Ang mga espesyal na bintana ay hindi pinapansin. Ang listahang ito ay binubuo ng zero-based one dimensional array alinman sa mga filename - gamit ScriptForge.FileSystem.FileNaming notasyon - o ng mga pamagat ng window para sa mga hindi na-save na dokumento.
svc.Documents(): str[1..*]
Sa parehong mga halimbawa sa ibaba, ang pamamaraan ay maaaring magbalik ng isang walang laman na array kung walang mga dokumentong bukas.
      Dim docList As Variant
      docList = ui.Documents
   
     docList = ui.Documents()
   Nagbabalik ng isang instance ng klase ng Dokumento o isa sa mga subclass nito (Calc, Writer, Base, FormDocument) na tumutukoy sa alinman sa ibinigay na window o sa aktibong dokumento.
svc.GetDocument(windowname: str = ''): svc
svc.GetDocument(windowname: uno): svc
windowname : Tingnan ang mga kahulugan sa itaas . Kung ang argument na ito ay wala, ang aktibong window ay ginagamit. Mga bagay ng UNO ng mga uri com.sun.star.lang.XComponent o com.sun.star.comp.dba.ODatabaseDocument tinatanggap din. Kaya dumaan ThisComponent o ThisDatabaseDocument habang lumilikha ng bago ang argumento SFDocuments.Document , Base o Calc serbisyo.
      Dim myDoc As Object
      Set myDoc = ui.GetDocument("C:\Documents\My file.odt")
      Set myBase = ui.GetDocument(ThisDatabaseDocument)
   
     from scriptforge import CreateScriptService
     bas = CreateScriptService("Basic")
     myDoc = ui.GetDocument(r"C:\Documents\My file.odt")
     myDoc = ui.GetDocument(bas.ThisComponent)
   Upang ma-access ang pangalan ng kasalukuyang aktibong window, sumangguni sa ActiveWindow ari-arian.
Pina-maximize ang aktibong window o ang ibinigay na window.
svc.Maximize(windowname: str)
windowname : tingnan ang mga kahulugan sa itaas . Kung wala ang argumentong ito, ang aktibong window ay ma-maximize.
      ui.Maximize("Untitled 1")
   
     ui.Maximize("Untitled 1")
   Pinaliit ang aktibong window o ang ibinigay na window.
svc.Minimize(windowname: str)
windowname : tingnan ang mga kahulugan sa itaas . Kung wala ang argumentong ito, mababawasan ang aktibong window.
     ui.Minimize()
   
     ui.Minimize()
   Magbukas ng kasalukuyang LibreOffice Base na dokumento. Ang pamamaraan ay nagbabalik a Base bagay.
svc.OpenBaseDocument(filename: str = '', registrationname: str = '', macroexecution: int = 0): svc
filename : Tinutukoy ang file na bubuksan. Dapat itong sundin ang SF_FileSystem.FileNaming notasyon.
pangalan ng pagpaparehistro : Ang pangalan na gagamitin upang mahanap ang database sa rehistro ng mga database. Hindi pinapansin kung FileName <> "".
macroexecution : 0 = ang pag-uugali ay tinukoy ng configuration ng user, 1 = macros ay hindi maipapatupad, 2 = macros ay executable. Ang default ay 0.
      Dim myBase As Object
      Set myBase = ui.OpenBaseDocument("C:\Documents\myDB.odb", MacroExecution := ui.MACROEXECALWAYS)
   
     myBase = ui.OpenBaseDocument(r"C:\Documents\myDB.odb", macroexecution = ui.MACROEXECALWAYS)
   Upang mapabuti ang pagiging madaling mabasa ng code na magagamit mo paunang-natukoy na mga pare-pareho para sa macroexecution argumento, tulad ng sa mga halimbawa sa itaas.
Nagbubukas ng isang umiiral na dokumento ng LibreOffice na may mga ibinigay na opsyon. Nagbabalik ng object ng dokumento o isa sa mga subclass nito. Ang pamamaraan ay nagbabalik wala (sa BASIC) o wala (sa Python) kung nabigo ang pagbubukas, kahit na ang pagkabigo ay sanhi ng desisyon ng user.
svc.Opendocument(filename: str, password: str = '', readonly: bool = False, hidden: bool = False, macroexecution: int = 0, filtername: str = '', filteroptions: str = ''): svc
filename : Tinutukoy ang file na bubuksan. Dapat itong sundin ang FileNaming notasyon ng FileSystem serbisyo.
password : Upang gamitin kapag ang dokumento ay protektado. Kung mali o wala habang protektado ang dokumento, ipo-prompt ang user na magpasok ng password.
readonly : Default = Mali .
nakatago : kung totoo , buksan ang bagong dokumento sa background (default = Mali ). Upang gamitin nang may pag-iingat: ang pag-activate o pagsasara pagkatapos ay maaari lamang mangyari sa pamamagitan ng program.
macroexecution : 0 = ang pag-uugali ay tinukoy ng configuration ng user, 1 = macros ay hindi maipapatupad, 2 = macros ay executable. Ang default ay 0.
filtername : Ang pangalan ng isang filter na dapat gamitin para sa pag-load ng dokumento. Kung mayroon, ang filter ay dapat na umiiral.
mga pagpipilian sa filter : Isang opsyonal na string ng mga opsyon na nauugnay sa filter.
      Dim myDoc As Object, FSO As Object
      Set myDoc = ui.OpenDocument("C:\Documents\myFile.odt", ReadOnly := True)
   
     myDoc = ui.OpenDocument(r"C:\Documents\myFile.odt", readonly = True)
   Binabago ang laki at/o inililipat ang aktibong window. Ang wala at negatibong mga argumento ay binabalewala. Kung ang window ay pinaliit o pinalaki, tumatawag Baguhin ang laki walang argumento ibinabalik ito.
svc.Resize(left: int = -1, top: int = -1, width: int = -1, height: int = -1)
kaliwa, itaas : Mga distansya ng kaliwang sulok sa itaas mula sa itaas at kaliwang gilid ng screen, sa mga pixel.
lapad, taas : Mga bagong sukat ng window, sa mga pixel.
Sa mga sumusunod na halimbawa, ang lapad at taas ng bintana ay binago habang itaas at umalis ay naiwang hindi nagbabago.
      ui.Resize(Width := 500, Height := 500)
   
     ui.Resize(width = 500, height = 500)
   Upang baguhin ang laki ng isang window na hindi aktibo, i-activate muna ito gamit ang I-activate paraan.
Nagpapatakbo ng UNO command sa kasalukuyang window. Ang ilang karaniwang mga utos ay: Save, SaveAs, ExportToPDF, Undo, Copy, Paste, atbp.
Ang mga utos ay maaaring patakbuhin nang may mga argumento o walang. Ang mga argumento ay hindi napatunayan bago patakbuhin ang utos. Kung ang utos o ang mga argumento nito ay hindi wasto, kung gayon walang mangyayari.
Para sa kumpletong listahan ng mga utos ng UNO na maaaring patakbuhin sa LibreOffice, sumangguni sa pahina ng Wiki Development/DispatchCommands .
svc.RunCommand(command: str, [args: any])
utos : Case-sensitive na string na naglalaman ng UNO command name. Opsyonal ang pagsasama ng prefix na ".uno:" sa command. Ang utos mismo ay hindi sinusuri para sa kawastuhan. Kung walang nangyari pagkatapos ng command call, malamang na mali ang command.
args : Para sa bawat argument na ipapasa sa command, tukuyin ang isang pares na naglalaman ng pangalan ng argumento at halaga.
Ang sumusunod na halimbawa ay nagpapatakbo ng .uno:Tungkol sa command sa kasalukuyang window.
    Set ui = CreateScriptService("UI")
    ui.RunCommand("About")
  Nasa ibaba ang isang halimbawa na nagpapatakbo ng UNO command .uno:BasicIDEAppear at ipinapasa ang mga argumentong kinakailangan upang buksan ang Basic IDE sa isang partikular na linya ng isang module.
    ' Ang mga argumento ay ipinasa sa utos:
    ' Document  = "LibreOffice Macros & Dialogs"
    ' LibName = "ScriptForge"
    ' Name = "SF_Session"
    ' Line = 600
    ui.RunCommand(".uno:BasicIDEAppear", "Document", "LibreOffice Macros & Dialogs", _ 
                  "LibName", "ScriptForge", "Name", "SF_Session", "Line", 600)
  Tandaan na ang pagtawag sa command BasicIDEAppear walang argumento ay magbubukas lamang ng .
    ui = CreateScriptService("UI")
    ui.RunCommand("About")
  
    ui.RunCommand(".uno:BasicIDEAppear", "Document", "LibreOffice Macros & Dialogs", \
                  "LibName", "ScriptForge", "Name", "SF_Session", "Line", 600)
  Sa Python posible ring tumawag RunCommand gamit ang mga argumento ng keyword:
    ui.RunCommand(".uno:BasicIDEAppear", Document = "LibreOffice Macros & Dialogs", \
                  LibName = "ScriptForge", Name = "SF_Session", Line = 600)
  Ang bawat bahagi ng LibreOffice ay may sariling hanay ng mga command na magagamit. Ang isang madaling paraan upang matutunan ang mga utos ay pupunta Mga Tool - I-customize - Keyboard . Kapag ipinwesto mo ang iyong mouse sa ibabaw ng isang function sa Function list, lalabas ang isang tooltip kasama ang kaukulang utos ng UNO.
Magpakita ng text at progressbar sa status bar ng aktibong window. Anumang mga kasunod na tawag sa parehong macro run ay tumutukoy sa parehong status bar ng parehong window, kahit na ang window ay hindi na nakikita. Ang isang tawag na walang argumento ay nire-reset ang status bar sa normal nitong estado.
svc.SetStatusbar(text: str = '', percentage: int = -1)
text : Isang opsyonal na text na ipapakita sa harap ng progress bar.
porsyento : isang opsyonal na antas ng pag-unlad sa pagitan ng 0 at 100.
      Dim i As Integer
      For i = 0 To 100
          ui.SetStatusbar("Progress ...", i)
          Wait 50
      Next i
      ' Nire-reset ang statusbar
      ui.SetStatusbar
   
     from time import sleep
     for i in range(101):
         ui.SetStatusbar("Test:", i)
         sleep(0.05)
     ui.SetStatusbar()
   Nagpapakita ng non-modal na dialog box. Tukuyin ang pamagat nito, isang paliwanag na teksto at isang porsyento ng progreso na ipapakita sa isang progressbar. Ang dialog ay mananatiling nakikita hanggang sa isang tawag sa pamamaraan na walang mga argumento o hanggang sa manu-manong isara ng user ang dialog.
svc.ShowProgressBar(title: str = '', text: str = '', percentage: int = -1)
pamagat : Ang pamagat na lumalabas sa ibabaw ng dialog box. Default = "ScriptForge".
text : Isang opsyonal na text na ipapakita sa itaas ng progress bar.
porsyento : isang opsyonal na antas ng pag-unlad sa pagitan ng 0 at 100.
      Dim i As Integer
      For i = 0 To 100
          ui.ShowProgressBar("Window Title", "Progress ..." & i & "/100", i)
          Wait 50
      Next i
      ' Isinasara ang window ng Progress Bar
      ui.ShowProgressBar
   
     from time import sleep
     for i in range(101):
         ui.ShowProgressBar("Window Title", "Progress ... " + str(i) + "/100", i)
         sleep(0.05)
     # Isinasara ang window ng Progress Bar
     ui.ShowProgressBar()
   Nagbabalik totoo kung makikilala ang ibinigay na window.
svc.WindowExists(windowname: str): bool
windowname : tingnan ang mga kahulugan sa itaas.
      If ui.WindowExists("C:\Document\My file.odt") Then
          ' ...
   
     if ui.WindowExists(r"C:\Document\My file.odt"):
         # ...