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

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.

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.

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

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Äkinnstillinger - SprÄk) 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:

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

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 compatibility mode (Option VBASupport 1), the Long value is calculated as
Result = red + green×256 + blue×65536
See RGB Function [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)
  

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

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