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.

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: A string that contains the date that will be converted to a Date object.

note

The string passed to DateValue must be expressed in one of the date formats defined by your locale setting (see - Language Settings - Languages) or using the ISO date format "yyyy-mm-dd" (year, month and day separated by hyphens).


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:

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

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

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 resulting Long value is calculated with the following formula:
Result = red×65536 + green×256 + blue.

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

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


Supporter oss!