ScriptForge.Grunnleggende tjeneste

Tjenesten ScriptForge.Basic foreslår en samling av LibreOffice Basic-metoder som skal utføres i en Python-kontekst. Grunnleggende tjenestemetoder gjengir den nøyaktige syntaksen og oppførselen til grunnleggende innebygde funksjoner.

Typisk eksempel:


   bas.MsgBox('Vis denne teksten i en meldingsboks fra et Python-skript')
  
warning

ScriptForge.Grunnleggende-tjenesten er begrenset til Python-skript.


Tjenestepåkallelse

note

Før du bruker Basic-tjenesten, importer CreateScriptService()-metoden fra scriptforge-modulen:



    from scriptforge import CreateScriptService
    bas = CreateScriptService("Basic")
  

Egenskaper

Navn

Skrivebeskyttet

Type

Beskrivelse

MB_OK, MB_OKCANCEL, MB_RETRYCANCEL, MB_YESNO, MB_YESNOCANCEL

Ja

Integer

Verdier: 0, 1, 5, 4, 3

MB_ICONEXCLAMATION, MB_ICONINFORMATION, MB_ICONQUESTION, MB_ICONSTOP

Ja

Integer

Verdier: 48, 64, 32, 16

MB_ABORTRETRYIGNORE, MB_DEFBUTTON1, MB_DEFBUTTON2, MB_DEFBUTTON3

Ja

Integer

Verdier: 2, 128, 256, 512

IDABORT, IDCANCEL, IDIGNORE, IDNO, IDOK, IDRETRY, IDYES

Ja

Integer

Verdier: 3, 2, 5, 7, 1, 4, 6
Konstanter som indikerer MsgBox valgt knapp.

StarDesktop

Ja

UNO
objekt

Returnerer StarDesktop-objektet som representerer LibreOffice-applikasjonen.

ThisComponent

Ja

UNO
objekt

Hvis den gjeldende komponenten refererer til et LibreOffice-dokument, returnerer denne metoden UNO-objektet som representerer dokumentet. Denne egenskapen returnerer Ingen når den gjeldende komponenten ikke samsvarer med et dokument.

ThisDatabaseDocument

Ja

UNO
objekt

Hvis skriptet kjøres fra et Base-dokument eller noen av dets underkomponenter, returnerer denne metoden hovedkomponenten til Base-forekomsten. Denne egenskapen returnerer ellersIngen.


Liste over metoder i basistjenesten

CDate
CDateFromUnoDateTime
CDateToUnoDateTime
ConvertFromUrl
ConvertToUrl
CreateUnoService
CreateUnoStruct
DateAdd

DateDiff
DatePart
DateValue
Format
GetDefaultContext
GetGuiType
GetPathSeparator
GetSystemTicks

GlobalScope.BasicLibraries
GlobalScope.DialogLibraries
InputBox
MsgBox
Now
RGB
Xray


CDate

Konverterer et numerisk uttrykk eller en streng til et datetime.datetime Python-native objekt.

note

Denne metoden eksponerer den grunnleggende innebygde funksjonen CDate for Python-skript.


Syntaks:

svc.CDate(expression: any): obj

Parametre:

uttrykk: et numerisk uttrykk eller en streng som representerer en dato.

Når du konverterer et strenguttrykk, må dato og klokkeslett angis enten i et av datogodkjenningsmønstrene som er definert for lokalinnstillingen din (se - Språk og lokale innstillinger - Generelt) eller i ISO-datoformat (for øyeblikket er det bare ISO-formatet med bindestreker, f.eks. "2012-12-31" som godtas). I numeriske uttrykk representerer verdier til venstre for desimalen datoen, som begynner fra 31. desember 1899. Verdier til høyre for desimalen representerer tiden.

Eksempel:


    d = bas.CDate(1000.25)
    bas.MsgBox(str(d)) # 1902-09-26 06:00:00
    bas.MsgBox(d.year) # 1902
  

CDateFromUnoDateTime

Konverterer en UNO-dato/klokkeslett-representasjon til et datetime.datetime Python-objekt.

Syntaks:

svc.CDateFromUnoDateTime(unodate: uno): obj

Parametre:

unodate: Et UNO dato/tidsobjekt av en av følgende typer: com.sun.star.util.DateTime, com.sun.star.util. Dato eller com.sun.star.util.Time

Eksempel:

Følgende eksempel oppretter et com.sun.star.util.DateTime-objekt og konverterer det til et datetime.datetime Python-objekt.


    uno_date = bas.CreateUnoStruct('com.sun.star.util.DateTime')
    uno_date.Year = 1983
    uno_date.Month = 2
    uno_date.Day = 23
    new_date = bas.CDateFromUnoDateTime(uno_date)
    bas.MsgBox(str(new_date)) # 1983-02-23 00:00:00
  

CDateToUnoDateTime

Konverterer en datorepresentasjon til et com.sun.star.util.DateTime-objekt.

Syntaks:

svc.CDateToUnoDateTime(date: obj): uno

Parametre:

dato: Et Python-dato/tidsobjekt av en av følgende typer: datetime.datetime, datetime.date, datetime.time , float (time.time) eller time.struct_time.

Eksempel:


    from datetime import datetime
    current_datetime = datetime.now()
    uno_date = bas.CDateToUnoDateTime(current_datetime)
    bas.MsgBox(str(uno_date.Year) + "-" + str(uno_date.Month) + "-" + str(uno_date.Day))
  

ConvertFromUrl

Returnerer et systemsti-filnavn for den gitte filen: URL.

Syntaks:

svc.ConvertFromUrl(url: str): str

Parametre:

url: En absolutt fil: URL.

Returverdi:

En systemsti-filnavn.

Eksempel:


    filename = bas.ConvertFromUrl( "file:///C:/Program%20Files%20(x86)/LibreOffice/News.txt")
    bas.MsgBox(filename)
  

ConvertToUrl

Returnerer en fil: URL for den gitte systemstien.

Syntaks:

svc.ConvertToUrl(systempath: str): str

Parametre:

systemsti: Et systemfilnavn som en streng.

Returverdi:

En fil: URL som en streng.

Eksempel:


    url = bas.ConvertToUrl( 'C:\Program Files(x86)\LibreOffice\News.txt')
    bas.MsgBox(url)
  

CreateUnoService

Instantierer en UNO-tjeneste med ProcessServiceManager.

Syntaks:

svc.CreateUnoService(servicename: str): uno

Parametre:

tjenestenavn: Et fullt kvalifisert tjenestenavn som com.sun.star.ui.dialogs.FilePicker eller com.sun.star.sheet.FunctionAccess.

Eksempel:


    dsk = bas.CreateUnoService('com.sun.star.frame.Desktop')
  

CreateUnoStruct

Returnerer en forekomst av en UNO-struktur av den angitte typen.

Syntaks:

svc.CreateUnoStruct(unostructure: str): uno

Parametre:

unostructure: Et fullt kvalifisert strukturnavn som com.sun.star.beans.Property eller com.sun.star.util.DateTime.

Eksempel:


    date_struct = CreateUnoStruct('com.sun.star.util.DateTime')
  

DateAdd

Legger til en dato eller et tidsintervall til en gitt dato/tid flere ganger og returnerer den resulterende datoen.

Syntaks:

svc.DateAdd(interval: str, number: num, date: datetime): datetime

Parametre:

intervall: Et strenguttrykk fra følgende tabell som spesifiserer dato eller tidsintervall.

intervall (strengverdi)

Forklaring

yyyy

År

q

Kvartal

m

Måned

y

Dag i året

w

Ukedag

ww

Uke i året

d

Dag

h

Time

n

Minutt

s

Sekund


tall: Et numerisk uttrykk som spesifiserer hvor ofte intervall-verdien vil bli lagt til når den er positiv eller trukket fra når den er negativ.

dato: En gitt datetime.datetime-verdi, intervall-verdien vil bli lagt til antall ganger til denne datetime.datetime-verdi.

Returverdi:

En datetime.datetime-verdi.

Eksempel:


    dt = datetime.datetime(2004, 1, 31)
    dt = bas.DateAdd("m", 1, dt)
    print(dt)
  

DateDiff

Returnerer antall dato- eller tidsintervaller mellom to gitte dato-/tidsverdier.

Syntaks:

svc.DateDiff(interval: str, date1: datetime, date2: datetime, firstdayofweek = 1, firstweekofyear = 1): int

Parametre:

intervall: Et strenguttrykk som spesifiserer datointervallet, som beskrevet i DateAdd-metoden ovenfor.

date1, date2: De to datetime.datetime-verdiene som skal sammenlignes.

firstdayofweek: En valgfri parameter som spesifiserer startdagen for en uke.

første ukedag verdi

Forklaring

0

Bruk systemets standardverdi

1

Søndag (standard)

2

Mandag

3

Tirsdag

4

Onsdag

5

Torsdag

6

Fredag

7

Lørdag


firstweekofyear: En valgfri parameter som spesifiserer startuken for et år.

verdi for første uke i året

Forklaring

0

Bruk systemets standardverdi

1

Uke 1 er uken med 1. januar (standard)

2

Uke 1 er den første uken som inneholder fire eller flere dager i det året

3

Uke 1 er den første uken som kun inneholder dager i det nye året


Returverdi:

Et tall.

Eksempel:


    date1 = datetime.datetime(2005,1, 1)
    date2 = datetime.datetime(2005,12,31)
    diffDays = bas.DateDiff('d', date1, date2)
    print(diffDays)
  

DatePart

Funksjonen DatePart returnerer en spesifisert del av en dato.

Syntaks:

svc.DatePart(interval: str, date: datetime, firstdayofweek = 1, firstweekofyear = 1): int

Parametre:

intervall: Et strenguttrykk som spesifiserer datointervallet, som beskrevet i DateAdd-metoden ovenfor.

dato: Datoen/klokkeslettet som resultatet beregnes fra.

firstdayofweek, firstweekofyear: valgfrie parametere som henholdsvis spesifiserer startdagen for en uke og startuken i et år, som beskrevet i DateDiff-metoden ovenfor.

Returverdi:

Den utpakkede delen for en gitt dato/klokkeslett.

Eksempel:


    print(bas.DatePart("ww", datetime.datetime(2005,12,31)
    print(bas.DatePart('q', datetime.datetime(1999,12,30)
  

DateValue

Beregner en datoverdi fra en datostreng.

Syntaks:

svc.DateValue(date: str): datetime

Parametre:

dato: En streng som inneholder datoen som skal konverteres til et Date-objekt.

note

Strengen som sendes til DateValue må uttrykkes i et av datoformatene som er definert av lokalinnstillingen din (se - Språk og lokale innstillinger- Generelt) eller bruk ISO-datoformatet "åååå-mm-dd" (år, måned og dag atskilt med bindestreker).


Returverdi:

Den beregnede datoen.

Eksempel:


    dt = bas.DateValue("23-02-2011")
    print(dt)
  

Format

Konverterer et tall til en streng, og formaterer det deretter i henhold til formatet du angir.

Syntaks:

svc.Format(expression: any, format = ''): str

Parametre:

uttrykk: Numerisk uttrykk som du vil konvertere til en formatert streng.

format: Streng som spesifiserer formatkoden for nummeret. Hvis format er utelatt, fungerer Format-funksjonen som LibreOffice Basic Str()-funksjonen.

Returverdi:

Tekststreng.

Formatering av koder

Følgende liste beskriver kodene du kan bruke for å formatere et numerisk uttrykk:

0: Hvis uttrykk har et siffer ved posisjonen til 0-en i format-koden, vises sifferet, ellers vises en null.

Hvis uttrykket har færre sifre enn antallet nuller i format-koden, (på hver side av desimalen), vises innledende eller etterfølgende nuller. Hvis uttrykket har flere sifre til venstre for desimalskilletegnet enn antallet nuller i format-koden, vises tilleggssifrene uten formatering.

Desimaler i uttrykket avrundes i henhold til antallet nuller som vises etter desimalskilletegnet i format-koden.

#: Hvis uttrykk inneholder et siffer ved posisjonen til # plassholderen i koden format, vises sifferet, ellers vises ingenting ved denne stillingen.

Dette symbolet fungerer som 0, bortsett fra at innledende eller etterfølgende nuller ikke vises hvis det er flere # tegn i format-koden enn sifre i uttrykket. Bare de relevante sifrene i uttrykket vises.

.: Desimalplassholderen bestemmer antall desimalplasser til venstre og høyre for desimalskilletegnet.

Hvis format-koden inneholder bare # plassholdere til venstre for dette symbolet, begynner tall mindre enn 1 med et desimalskilletegn. For alltid å vise en foranstående null med brøktall, bruk 0 som plassholder for det første sifferet til venstre for desimalskilletegn.

%: Multipliserer uttrykketmed 100 og setter inn prosenttegnet (%) der uttrykket vises i formatet kode.

E- E+ e- e+ : Hvis format-koden inneholder minst én siffer plassholder (0 eller #) til høyre for symbolet E-, E+, e-, eller e+, uttrykket er formatert i det vitenskapelige eller eksponentielle formatet. Bokstaven E eller e settes inn mellom tallet og eksponenten. Antallet plassholdere for sifre til høyre for symbolet bestemmer antall sifre i eksponenten.

Hvis eksponenten er negativ, vises et minustegn rett foran en eksponent med E-, E+, e-, e+. Hvis eksponenten er positiv, vises et plusstegn kun foran eksponenter med E+ eller e+.

Tusenskilletegnet vises hvis format-koden inneholder skilletegnet omsluttet av sifferplassholdere (0 eller #).

Bruken av et punktum som tusen- og desimalskilletegn er avhengig av den regionale innstillingen. Når du skriver inn et tall direkte i Grunnleggende kildekode, bruk alltid et punktum som desimalskilletegn. Det faktiske tegnet som vises som desimalskilletegn avhenger av tallformatet i systeminnstillingene.

- + $ ( ) mellomrom: Et pluss (+), minus (-), dollar ($), mellomrom eller parentes angitt direkte i format-koden vises som et bokstavtegn.

For å vise andre tegn enn de som er oppført her, må du ha en omvendt skråstrek (\), eller sette den i anførselstegn (" ").

\ : Omvendt skråstrek viser neste tegn i format-koden.

Tegn i format-koden som har en spesiell betydning kan bare vises som bokstavelige tegn hvis de innledes med en omvendt skråstrek. Selve omvendt skråstrek vises ikke, med mindre du skriver inn en dobbel skråstrek (\\) i formatkoden.

Tegn som må innledes med en omvendt skråstrek i formatkoden for å bli vist som bokstavtegn, er dato- og tidsformateringstegn (a, c, d, h, m, n, p, q, s, t, w , y, /, :), numeriske formateringstegn (#, 0, %, E, e, komma, punktum) og strengformaterende tegn (@, &, <, >, !).

Du kan også bruke følgende forhåndsdefinerte tallformater. Bortsett fra "Generelt tall", returnerer alle de forhåndsdefinerte formatkodene tallet som et desimaltall med to desimaler.

Hvis du bruker forhåndsdefinerte formater, må navnet på formatet være omgitt av anførselstegn.

Forhåndsdefinerte formater

Generelt nummer: Tall vises slik de er skrevet inn.

Valuta: Setter inn et dollartegn foran tallet og omslutter negative tall i parentes.

Fast: Viser minst ett siffer foran desimalskilletegnet.

Standard: Viser tall med tusenskilletegn.

Prosent: Multipliser tallet med 100 og legger til et prosenttegn til tallet.

Vitenskapelig: Viser tall i vitenskapelig format (for eksempel 1,00E+03 for 1000).

En kode i format kan deles inn i tre seksjoner som er atskilt med semikolon. Den første delen definerer formatet for positive verdier, den andre delen for negative verdier, og den tredje delen for null. Hvis du bare angir én format kode, gjelder den for alle tall.

Du kan angi lokale innstillinger som brukes for å kontrollere formateringen av tall, datoer og valutaer i LibreOffice Basic i - Språk og lokale - Generelt. I Basic-formatkoder brukes alltid desimaltegn (.) som plassholder for desimalskilletegn som er definert i lokaliteten din, og vil bli erstattet av det tilsvarende tegnet.

Det samme gjelder for de lokale innstillingene for dato-, tid- og valuta-format. Basic-formatet vil bli tolket og vist i samband, med til de lokale språkinnstillingene.

Eksempel:


    txt = bas.Format(6328.2, '##.##0.00')
    print(txt)
  

GetDefaultContext

Returnerer standardkonteksten til prosesstjenesten, hvis den eksisterer, ellers returnerer en nullreferanse.

GetDefaultContext er et alternativ til getComponentContext()-metoden tilgjengelig fra XSCRIPTCONTEXT global variabel eller fra uno.py-modulen.

Syntaks:

svc.GetDefaultContext(): uno

Returverdi:

Standard komponentkontekst brukes når tjenester instansieres via XMultiServiceFactory. Se kapittelet Professional UNO i utviklerveiledningen på api.libreoffice.org for mer informasjon.

Eksempel:


    ctx = bas.GetDefaultContext()
  

GetGuiType

Returnerer en numerisk verdi som spesifiserer det grafiske brukergrensesnittet. Denne funksjonen er kun tilgjengelig for bakoverkompatibilitet med tidligere versjoner.

Se system()-metoden fra plattformen Python-modulen for å identifisere operativsystemet.

Syntaks:

svc.GetGuiType(): int

Eksempel:


    n = bas.GetGuiType()
  

GetPathSeparator

Returnerer den operativsystemavhengige katalogseparatoren som brukes til å spesifisere filstier.

Bruk os.pathsep fra os Python-modulen for å identifisere stiseparatoren.

Syntaks:

svc.GetPathSeparator(): str

Eksempel:


    sep = bas.GetPathSeparator()
  

GetSystemTicks

Returnerer antall systemmerker levert av operativsystemet. Du kan bruke denne funksjonen til å optimalisere visse prosesser. Bruk denne metoden for å beregne tid i millisekunder:

Syntaks:

svc.GetSystemTicks(): int

Eksempel:


    ticks_ini = bas.GetSystemTicks()
    time.sleep(1)
    ticks_end = bas.GetSystemTicks()
    bas.MsgBox("{} - {} = {}".format(ticks_end, ticks_ini,ticks_end - ticks_ini))
  

GlobalScope.BasicLibraries

Returnerer UNO-objektet som inneholder alle delte Basic-biblioteker og moduler.

Denne metoden er Python-ekvivalenten til GlobalScope.BasicLibraries i grunnleggende skript.

Syntaks:

svc.GlobalScope.BasicLibraries(): uno

Returverdi:

com.sun.star.script.XLibraryContainer

Eksempel:

Følgende eksempel laster inn Gimmikk Basic-biblioteket hvis det ikke har blitt lastet inn ennå.


    libs = bas.GlobalScope.BasicLibraries()
    if not libs.isLibraryLoaded("Gimmicks"):
        libs.loadLibrary("Gimmicks")
  

GlobalScope.DialogLibraries

Returnerer UNO-objektet som inneholder alle delte dialogbiblioteker.

Denne metoden er Python-ekvivalenten til GlobalScope.DialogLibraries i Basic skript.

Syntaks:

svc.GlobalScope.DialogLibraries(): uno

Returverdi:

com.sun.star.comp.sfx2.DialogLibraryContainer

Eksempel:

Følgende eksempelet viser en meldingsboks med navnene på alle tilgjengelige dialogbiblioteker.


    dlg_libs = bas.GlobalScope.DialogLibraries()
    lib_names = dlg_libs.getElementNames()
    bas.MsgBox("\n".join(lib_names))
  

InputBox

Syntaks:

svc.InputBox(prompt: str, [title: str], [default: str], [xpostwips: int, ypostwips: int]): str

Parametre:

spørring: Strenguttrykk vises som meldingen i dialogboksen.

tittel: Strenguttrykk som vises i tittellinjen i dialogboksen.

standard: Strenguttrykk vises i tekstboksen som standard hvis ingen annen inndata er gitt.

xpostwips: Heltallsuttrykk som spesifiserer den horisontale posisjonen til dialogboksen. Posisjonen er en absolutt koordinat og refererer ikke til vinduet til LibreOffice.

ypostwips: Heltallsuttrykk som spesifiserer den vertikale plasseringen av dialogen. Posisjonen er en absolutt koordinat og refererer ikke til vinduet til LibreOffice.

Hvis xpostwips og ypostwips utelates, er dialogen sentrert på skjermen. Stillingen er spesifisert i twips.

Returverdi:

String

Eksempel:


    txt = s.InputBox('Vennligst skriv inn en setning:', "Kjære bruker")
    s.MsgBox(txt, s.MB_ICONINFORMATION, "Bekreftelse av setning")
  
note

For detaljert informasjon, se Innput/Output til Skjerm med Python på Wikien.


MsgBox

Viser en dialogboks som inneholder en melding og returnerer en valgfri verdi.
MB_xx-konstanter hjelper til med å spesifisere dialogtypen, antall og type knapper som skal vises, pluss ikontypen. Ved å legge til deres respektive verdier danner de bitmønstre, som definerer MsgBox-dialogutseendet.

Syntaks:

bas.MsgBox(prompt: str, [buttons: int], [title: str])[: int]

Parametre:

spørring: Strenguttrykk vises som en melding i dialogboksen. Linjeskift kan settes inn med Chr$(13).

tittel: Strenguttrykk som vises i tittellinjen i dialogboksen. Hvis den utelates, viser tittellinjen navnet på den respektive applikasjonen.

knapper: Ethvert heltallsuttrykk som spesifiserer dialogtypen, samt antall og type knapper som skal vises, og ikontypen. knapper representerer en kombinasjon av bitmønstre, det vil si at en kombinasjon av elementer kan defineres ved å legge til deres respektive verdier:

Returverdi:

Et valgfritt heltall som beskrevet i egenskapene IDxx ovenfor.

Eksempel:


    txt = s.InputBox('Vennligst skriv inn en setning:', "Kjære bruker")
    s.MsgBox(txt, s.MB_ICONINFORMATION, "Bekreftelse av setning")
  
note

For detaljert informasjon, se Innput/Output til Skjerm med Python på Wikien.


Now

Returnerer gjeldende systemdato og -klokkeslett som et datetime.datetime Python-objekt.

Syntaks:

svc.Now(): datetime

Eksempel:


    bas.MsgBox(bas.Now(), bas.MB_OK, "Now")
  

RGB

Returnerer en heltallsfargeverdi som består av røde, grønne og blå komponenter.

Syntaks:

svc.RGB(red:int, green: int, blue: int): int

Parametre:

rød: Ethvert heltallsuttrykk som representerer den røde komponenten (0-255) i den sammensatte fargen.

grønn: Ethvert heltallsuttrykk som representerer den grønne komponenten (0-255) i den sammensatte fargen.

blå: Ethvert heltallsuttrykk som representerer den blå komponenten (0-255) i den sammensatte fargen.

Den resulterende Lang-verdien beregnes med følgende formel:
Resultat = rød×65536 + grønn×256 + blå.

warning

Under VBA-kompatibilitetsmodus (Alternativ VBASupport 1), er Lang verdien beregnes som
Resultat = rød + grønn×256 + blå×65536
Se RGB-funksjon [VBA]


tip

fargevelgerdialogen hjelper med å beregne røde, grønne og blå komponenter i en sammensatt farge. Endre fargen på teksten og velge Egendefinert farge viser fargevelgerdialogen .


Returverdi:

Integer

Eksempel:


    YELLOW = bas.RGB(255,255,0)
  

Xray

Inspiser Uno-objekter eller variabler.

Syntaks:

svc.Xray(obj: any)

Parametre:

obj: En variabel eller UNO-objekt.

Eksempel:


    bas.Xray(bas.StarDesktop)
  
warning

Alle ScriptForge Grunnleggende rutiner eller identifikatorer som er prefikset med et understrekingstegn "_" er reservert for intern bruk. De er ikke ment å brukes i grunnleggende makroer eller Python-skript.


Supporter oss!