ScriptForge.Basic tjeneste

Innhold

# 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')

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

## Tjenestepåkallelse

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.

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 LibreOffice - InnstillingerVerktøy - Alternativer - 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.

Strengen som sendes til DateValue må uttrykkes i et av datoformatene som er definert av lokalinnstillingen din (se LibreOffice - InnstillingerVerktøy - Alternativer - 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 LibreOffice - InnstillingerVerktøy - Alternativer - 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")

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")

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å.

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

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)

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.

Lignende emner

GlobalScope-spesifikasjonselement

Programmering med Python-skript

uno.fileUrlToSystemPath()

uno.systemPathToFileUrl()

Input/Output til Skjerm med Python på wikien

XSCRIPTCONTEXT.getComponentContext()

uno.getComponentContext()

platform.system()

os.pathsep()