ScriptForge.Basic tjeneste

Innhold
Innholdsliste 🔎︎

# 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 | StarDesktop-objektet representerer LibreOffice Start Center.

Liste over metoder i basistjenesten
CDate CDateFromUnoDateTime CDateToUnoDateTime ConvertFromUrl ConvertToUrl CreateUnoService DateAdd DateDiff DatePart | DateValue Format GetDefaultContext GetGuiType GetPathSeparator GetSystemTicks GlobalScope.BasicLibraries GlobalScope.DialogLibraries InputBox | MsgBox Now RGB ThisComponent ThisDatabaseDocument 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.

When you convert a string expression, the date and time must be entered either in one of the date acceptance patterns defined for your locale setting (see LibreOffice - PreferencesTools - Options - Language Settings - Languages) or in ISO date format (momentarily, only the ISO format with hyphens, e.g. "2012-12-31" is accepted). In numeric expressions, values to the left of the decimal represent the date, beginning from December 31, 1899. Values to the right of the decimal represent the time.

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

        import uno
        uno_date = uno.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')

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

interval (string value) | Forklaring
yyyy | År
q | Quarter
m | Måned
y | Day of year
w | Ukedag
ww | Week of year
d | Dag
h | Time
n | Minute
s | Second

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: An optional parameter that specifies the starting day of a week.

firstdayofweek value | Forklaring
0 | Use system default value
1 | Sunday (default)
2 | Mandag
3 | Tirsdag
4 | Onsdag
5 | Torsdag
6 | Fredag
7 | Saturday

firstweekofyear: An optional parameter that specifies the starting week of a year.

firstweekofyear value | Forklaring
0 | Use system default value
1 | Week 1 is the week with January, 1st (default)
2 | Week 1 is the first week containing four or more days of that year
3 | Week 1 is the first week containing only days of the new year

### 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:

Date: String expression that contains the date that you want to calculate. In contrast to the DateSerial function that passes years, months and days as separate numeric values, the DateValue function requests the date string to be according to either one of the date acceptance patterns defined for your locale setting (see LibreOffice - PreferencesTools - Options - Language Settings - Languages) or to ISO date format (momentarily, only the ISO format with hyphens, e.g. "2012-12-31" is accepted).

### 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:

expression: Numeric expression that you want to convert to a formatted string.

format: String that specifies the format code for the number. If format is omitted, the Format function works like the LibreOffice Basic Str() function.

### Returverdi:

Text string.

### Formatering av koder

The following list describes the codes that you can use for formatting a numeric expression:

0: If expression has a digit at the position of the 0 in the format code, the digit is displayed, otherwise a zero is displayed.

If expression has fewer digits than the number of zeros in the format code, (on either side of the decimal), leading or trailing zeros are displayed. If the expression has more digits to the left of the decimal separator than the amount of zeros in the format code, the additional digits are displayed without formatting.

Decimal places in the expression are rounded according to the number of zeros that appear after the decimal separator in the format code.

#: If expression contains a digit at the position of the # placeholder in the format code, the digit is displayed, otherwise nothing is displayed at this position.

This symbol works like the 0, except that leading or trailing zeroes are not displayed if there are more # characters in the format code than digits in the expression. Only the relevant digits of the expression are displayed.

.: The decimal placeholder determines the number of decimal places to the left and right of the decimal separator.

If the format code contains only # placeholders to the left of this symbol, numbers less than 1 begin with a decimal separator. To always display a leading zero with fractional numbers, use 0 as a placeholder for the first digit to the left of the decimal separator.

%: Multiplies the expressionby 100 and inserts the percent sign (%) where the expression appears in the format code.

E- E+ e- e+ : If the format code contains at least one digit placeholder (0 or #) to the right of the symbol E-, E+, e-, or e+, the expression is formatted in the scientific or exponential format. The letter E or e is inserted between the number and the exponent. The number of placeholders for digits to the right of the symbol determines the number of digits in the exponent.

If the exponent is negative, a minus sign is displayed directly before an exponent with E-, E+, e-, e+. If the exponent is positive, a plus sign is only displayed before exponents with E+ or e+.

The thousands delimiter is displayed if the format code contains the delimiter enclosed by digit placeholders (0 or #).

The use of a period as a thousands and decimal separator is dependent on the regional setting. When you enter a number directly in Basic source code, always use a period as decimal delimiter. The actual character displayed as a decimal separator depends on the number format in your system settings.

- + $ ( ) space: A plus (+), minus (-), dollar ($), space, or brackets entered directly in the format code is displayed as a literal character.

To display characters other than the ones listed here, you must precede it by a backslash (\), or enclose it in quotation marks (" ").

\ : The backslash displays the next character in the format code.

Characters in the format code that have a special meaning can only be displayed as literal characters if they are preceded by a backslash. The backslash itself is not displayed, unless you enter a double backslash (\\) in the format code.

Characters that must be preceded by a backslash in the format code in order to be displayed as literal characters are date- and time-formatting characters (a, c, d, h, m, n, p, q, s, t, w, y, /, :), numeric-formatting characters (#, 0, %, E, e, comma, period), and string-formatting characters (@, &, <, >, !).

You can also use the following predefined number formats. Except for "General Number", all of the predefined format codes return the number as a decimal number with two decimal places.

If you use predefined formats, the name of the format must be enclosed in quotation marks.

### Forhåndsdefinerte formater

General Number: Numbers are displayed as entered.

Currency: Inserts a dollar sign in front of the number and encloses negative numbers in brackets.

Fixed: Displays at least one digit in front of the decimal separator.

Standard: Displays numbers with a thousands separator.

Percent: Multiplies the number by 100 and appends a percent sign to the number.

Scientific: Displays numbers in scientific format (for example, 1.00E+03 for 1000).

A format code can be divided into three sections that are separated by semicolons. The first part defines the format for positive values, the second part for negative values, and the third part for zero. If you only specify one format code, it applies to all numbers.

Du kan angi de lokale innstillingene som kontrollerer formatering av datoer, tall og valuta i LibreOffice Basic i LibreOffice - InnstillingerVerktøy - Alternativer - Språk Innstillinger - Språk. I Basic formatkoderblir alltid descimaler (.) brukt som plassholdere for desimalskilletegnet som er defineret i de lokale innstillingene. Punktumet vil bli erstattet med det aktuelle skilletegnet.

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:

prompt: String expression displayed as the message in the dialog box.

title: String expression displayed in the title bar of the dialog box.

default: String expression displayed in the text box as default if no other input is given.

xpostwips: Integer expression that specifies the horizontal position of the dialog. The position is an absolute coordinate and does not refer to the window of LibreOffice.

ypostwips: Integer expression that specifies the vertical position of the dialog. The position is an absolute coordinate and does not refer to the window of LibreOffice.

If xpostwips and ypostwips are omitted, the dialog is centered on the screen. The position is specified in 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:

prompt: String expression displayed as a message in the dialog box. Line breaks can be inserted with Chr$(13).

title: String expression displayed in the title bar of the dialog. If omitted, the title bar displays the name of the respective application.

buttons: Any integer expression that specifies the dialog type, as well as the number and type of buttons to display, and the icon type. buttons represents a combination of bit patterns, that is, a combination of elements can be defined by adding their respective values:

### 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:

red: Any integer expression that represents the red component (0-255) of the composite color.

green: Any integer expression that represents the green component (0-255) of the composite color.

blue: Any integer expression that represents the blue component (0-255) of the composite color.

The color picker dialog helps computing red, green and blue components of a composite color. Changing the color of text and selecting Custom color displays the color picker dialog.

### Returverdi:

Integer

### Eksempel:

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

## ThisComponent

Hvis den gjeldende komponenten refererer til et LibreOffice-dokument, returnerer denne metoden UNO-objektet som representerer dokumentet.

Metoden vil returnere Ingen når gjeldende komponent ikke samsvarer med et dokument.

### Syntaks:

svc.ThisComponent(): uno

### Eksempel:

        comp = bas.ThisComponent
        bas.MsgBox("\n".join(comp.getSupportedServiceNames()))

## ThisDatabaseDocument

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

Denne metoden returnerer Ingen ellers.

### Syntaks:

svc.ThisDatabaseDocument(): uno

### Eksempel:

        db_doc = bas.ThisDatabaseDocument
        table_names = db_doc.DataSource.getTables().getElementNames()
        bas.MsgBox("\n".join(table_names))

Besøk OfficeDatabaseDocument API-siden for å lære mer om hovedkomponentenes strukturer.

## 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 specifier

Programmering med Python-skript

uno.fileUrlToSystemPath()

uno.systemPathToFileUrl()

Input/Output til Skjerm med Python på wikien

XSCRIPTCONTEXT.getComponentContext()

uno.getComponentContext()

platform.system()

os.pathsep()