Spis treści
Indeks 🔎︎

# ScriptForge.Basic service

The ScriptForge.Basic service proposes a collection of LibreOffice Basic methods to be executed in a Python context. Basic service methods reproduce the exact syntax and behaviour of Basic builtin functions.

Typical example:

       bas.MsgBox('Display this text in a message box from a Python script')

ScriptForge.Basic service is limited to Python scripts.

## Service invocation

Before using the Basic service, import the CreateScriptService() method from the scriptforge module:

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

## Właściwości

Nazwa | ReadOnly | Type | Description
--- | --- | --- | ---
MB_OK, MB_OKCANCEL, MB_RETRYCANCEL, MB_YESNO, MB_YESNOCANCEL | Yes | Integer | Values: 0, 1, 5, 4, 3
MB_ICONEXCLAMATION, MB_ICONINFORMATION, MB_ICONQUESTION, MB_ICONSTOP | Yes | Integer | Values: 48, 64, 32, 16
MB_ABORTRETRYIGNORE, MB_DEFBUTTON1, MB_DEFBUTTON2, MB_DEFBUTTON3 | Yes | Integer | Values: 2, 128, 256, 512
IDABORT, IDCANCEL, IDIGNORE, IDNO, IDOK, IDRETRY, IDYES | Yes | Integer | Values: 3, 2, 5, 7, 1, 4, 6 Constants indicating MsgBox selected button.
StarDesktop | Yes | UNO object | Returns the StarDesktop object that represents the LibreOffice application.
ThisComponent | Yes | UNO object | If the current component refers to a LibreOffice document, this method returns the UNO object representing the document. This property returns None when the current component does not correspond to a document.
ThisDatabaseDocument | Yes | UNO object | If the script is being executed from a Base document or any of its subcomponents this method returns the main component of the Base instance. This property returns None otherwise.

List of Methods in the Basic Service
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

Converts a numeric expression or a string to a datetime.datetime Python native object.

This method exposes the Basic builtin function CDate to Python scripts.

### Składnia:

svc.CDate(expression: any): obj

### Parametry:

expression: a numeric expression or a string representing a date.

Podczas konwertowania wyrażenia tekstowego data i godzina muszą zostać wprowadzone zgodnie z jednym ze wzorców akceptowania daty zdefiniowanych w ustawieniach regionalnych (zobacz LibreOffice - PreferencjeNarzędzia - Opcje - Ustawienia języka - Języki) lub w formacie daty ISO (chwilowo akceptowany jest tylko format ISO z dywizami, np. "2012-12-31"). W wyrażeniach numerycznych wartości po lewej stronie przecinka reprezentują datę, począwszy od 31 grudnia 1899. Wartości po prawej stronie ułamka dziesiętnego reprezentują godzinę.

### Przykład:

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

## CDateFromUnoDateTime

Converts a UNO date/time representation to a datetime.datetime Python native object.

### Składnia:

svc.CDateFromUnoDateTime(unodate: uno): obj

### Parametry:

unodate: A UNO date/time object of one of the following types: com.sun.star.util.DateTime, com.sun.star.util.Date or com.sun.star.util.Time

### Przykład:

The following example creates a com.sun.star.util.DateTime object and converts it to a datetime.datetime Python object.

        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

Converts a date representation into a com.sun.star.util.DateTime object.

### Składnia:

svc.CDateToUnoDateTime(date: obj): uno

### Parametry:

date: A Python date/time object of one of the following types: datetime.datetime, datetime.date, datetime.time, float (time.time) or time.struct_time.

### Przykład:

        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

Returns a system path file name for the given file: URL.

### Składnia:

svc.ConvertFromUrl(url: str): str

### Parametry:

url: An absolute file: URL.

### Zwracana wartość:

A system path file name.

### Przykład:

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

## ConvertToUrl

Returns a file: URL for the given system path.

### Składnia:

svc.ConvertToUrl(systempath: str): str

### Parametry:

systempath: A system file name as a string.

### Zwracana wartość:

A file: URL as a string.

### Przykład:

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

## CreateUnoService

Instantiates a UNO service with the ProcessServiceManager.

### Składnia:

svc.CreateUnoService(servicename: str): uno

### Parametry:

servicename: A fully qualified service name such as com.sun.star.ui.dialogs.FilePicker or com.sun.star.sheet.FunctionAccess.

### Przykład:

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

## CreateUnoStruct

Returns an instance of a UNO structure of the specified type.

### Składnia:

svc.CreateUnoStruct(unostructure: str): uno

### Parametry:

unostructure: A fully qualified structure name such as com.sun.star.beans.Property or com.sun.star.util.DateTime.

### Przykład:

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

## DateAdd

Adds a date or time interval to a given date/time a number of times and returns the resulting date.

### Składnia:

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

### Parametry:

interval: A string expression from the following table, specifying the date or time interval.

interval (wartość ciągu) | Znaczenie
--- | ---
yyyy | Rok
q | Kwartał
m | Miesiąc
y | Dzień roku
w | Dzień tygodnia
ww | Tydzień roku
d | Dzień
h | Godzina
n | Minuta
s | Sekunda

number: A numerical expression specifying how often the interval value will be added when positive or subtracted when negative.

date: A given datetime.datetime value, the interval value will be added number times to this datetime.datetime value.

### Zwracana wartość:

A datetime.datetime value.

### Przykład:

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

## DateDiff

Returns the number of date or time intervals between two given date/time values.

### Składnia:

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

### Parametry:

interval: A string expression specifying the date interval, as detailed in above DateAdd method.

date1, date2: The two datetime.datetime values to be compared.

firstdayofweek: opcjonalny parametr określający początkowy dzień tygodnia.

Wartość firstdayofweek | Znaczenie
--- | ---
0 | Użyj domyślnej wartości systemowej
1 | niedziela (domyślnie)
2 | poniedziałek
3 | wtorek
4 | środa
5 | czwartek
6 | piątek
7 | sobota

firstweekofyear: opcjonalny parametr określający początkowy tydzień roku.

Wartość firstweekofyear | Znaczenie
--- | ---
0 | Użyj domyślnej wartości systemowej
1 | Pierwszym tygodniem roku jest tydzień zawierający dzień 1 stycznia (wartość domyślna)
2 | Pierwszym tygodniem roku jest pierwszy tydzień, który obejmuje co najmniej cztery dni tego roku
3 | Pierwszym tygodniem roku jest pierwszy tydzień, który obejmuje wyłącznie dni nowego roku

### Zwracana wartość:

A number.

### Przykład:

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

## DatePart

The DatePart function returns a specified part of a date.

### Składnia:

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

### Parametry:

interval: A string expression specifying the date interval, as detailed in above DateAdd method.

date: The date/time from which the result is calculated.

firstdayofweek, firstweekofyear: optional parameters that respectively specify the starting day of a week and the starting week of a year, as detailed in above DateDiff method.

### Zwracana wartość:

The extracted part for the given date/time.

### Przykład:

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

## DateValue

Computes a date value from a date string.

### Składnia:

svc.DateValue(date: str): datetime

### Parametry:

date: ciąg zawierający datę, która zostanie przekonwertowana na obiekt Date.

Ciąg przekazany do DateValue musi być wyrażony w jednym z formatów daty zdefiniowanych w ustawieniach regionalnych (patrz LibreOffice - PreferencjeNarzędzia - Opcje - Ustawienia języka - Języki) lub używając formatu daty ISO "yyyy-mm-dd" (rok, miesiąc i dzień oddzielone dywizami).

### Zwracana wartość:

The computed date.

### Przykład:

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

## Format

Converts a number to a string, and then formats it according to the format that you specify.

### Składnia:

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

### Parametry:

expression: Wyrażenie numeryczne, które chcesz przekonwertować na sformatowany ciąg.

format: Ciąg, który określa kod formatu dla liczby. Jeśli pominięto format, funkcja formatu działa jak funkcja Str() LibreOffice Basic.

### Zwracana wartość:

Ciąg tekstowy.

### Formatting Codes

Poniższa lista opisuje kody, których można użyć do formatowania wyrażenia numerycznego:

0: Jeśli expression ma cyfrę w pozycji 0 w kodzie format, cyfra jest wyświetlana, w przeciwnym razie wyświetlane jest zero.

Jeśli expression ma mniej cyfr niż liczba zer w kodzie format (po obu stronach dziesiętnych), wyświetlane są zera wiodące lub spuszczające. Jeśli expression ma więcej cyfr po lewej stronie separatora dziesiętnego niż liczbę zer w kodzie format, dodatkowe cyfry są wyświetlane bez formatowania.

Miejsca dziesiętne w expression są zaokrąglone zgodnie z liczbą zer, które pojawiają się po dziesiętnym separatorze w kodzie format.

#: Jeśli expression zawiera cyfrę w pozycji symbolu zastępczego # w kodzie format, cyfra jest wyświetlana, w przeciwnym razie nic nie jest wyświetlane w tej pozycji.

Ten symbol działa jak 0, z wyjątkiem tego, że zera wiodące lub spuszczające nie są wyświetlane, jeśli w kodzie format jest więcej # znaków niż cyfr w expression. Wyświetlane są tylko odpowiednie cyfry expression.

.: Symbol zastępczy przecinka dziesiętnego określa liczbę miejsc przed i po przecinku.

Jeśli kod format zawiera tylko symbole zastępcze # po lewej stronie tego symbolu, liczby mniejsze niż 1 zaczynają się od separatora dziesiętnego. Aby zawsze wyświetlać wiodące zero z liczbami ułamkowymi, użyj 0 jako symbol zastępczy dla pierwszej cyfry po lewej stronie separatora dziesiętnego.

%: Mnoży expression przez 100 i wstawia znak procentowy (%), w którym expression pojawia się w kodzie format.

E- E+ e- e+ : Jeśli kod format zawiera co najmniej jeden cyfrowy symbol zastępczy (0 lub #) po prawej stronie symbolu E-, E+, e- lub e+, expression sformatowane jest w formacie naukowym lub wykładniczym. Litera E lub e jest wstawiana między liczbą a wykładnikiem. Liczba symboli zastępczych cyfr po prawej stronie symbolu określa liczbę cyfr w wykładniku.

W przypadku zastosowania symboli E-, E+, e-, e+, jeśli wykładnik jest ujemny, bezpośrednio przez wykładnikiem jest wyświetlany znak minus. Jeśli wykładnik jest dodatni, znak plus jest wyświetlany przez wykładnikiem tylko w przypadku zastosowania symboli E+ lub e+.

Tysiące ograniczników jest wyświetlane, jeśli kod format zawiera ograniczenie zamknięte przez cyfry zastępcze (0 lub #).

Użycie kropki jako separatora tysięcy i przecinka dziesiętnego zależy od ustawień regionalnych. W przypadku wprowadzania liczb bezpośrednio w kodzie źródłowym Basic jako separatora dziesiętnego należy zawsze używać kropki. Rzeczywisty znak wyświetlany jako separator dziesiętny zależy od formatu liczb w ustawieniach systemowych.

- + $ ( ) spacja: Plus (+), minus (-), dolar ($), spacja lub nawiasy wprowadzone w kodzie format będą wyświetlane jako znaki.

Aby wyświetlić znaki inne niż wymienione powyżej, należy poprzedzić je odwróconą kreską ukośną (\) lub umieścić w cudzysłowie (" ").

\ : ukośnik wsteczny wyświetla następny znak w kodzie format.

Znaki w kodzie format, które mają szczególne znaczenie, mogą być wyświetlane jako literalne znaki, jeśli są poprzedzone ukośnikiem wstecznym. Sam ukośnik wsteczny nie jest wyświetlany, chyba że wprowadzisz podwójny ukośnik wsteczny (\\) w kodzie formatu.

Znaki wymagające poprzedzenia ich odwróconą kreską ukośną w kodzie formatu to: literały znaków formatowania daty i godziny (a, c, d, h, m, n, p, q, s, t, w, y, /, :), znaki formatowania liczb (#, 0, %, E, e, przecinek, kropka) oraz znaki formatowania ciągów (@, &, <, >, !).

Możesz także użyć następujących predefiniowanych formatów liczb. Z wyjątkiem "General Number", wszystkie predefiniowane kody formatu zwracają liczbę jako liczbę dziesiętną z dwoma miejscami dziesiętnymi.

W przypadku korzystania ze wstępnie zdefiniowanych formatów nazwa formatu musi zostać ujęta w cudzysłów.

### Predefined Formats

General Number: Liczby są wyświetlane tak, jak zostały wprowadzone.

Waluta: Wstawia znak dolara przed liczbą i umieszcza liczby ujemne w nawiasach.

Fixed: Wyświetla co najmniej jedną cyfrę przed separatorem dziesiętnym.

Standardowy: Wyświetla liczby z separatorem tysięcy.

Percent: Mnoży liczbę razy 100 i dołącza do niej znak procenta.

Naukowy: Wyświetla liczby w formacie naukowym (na przykład liczba 1000 jest wyświetlana w postaci 1,00E+03).

Kod format można podzielić na trzy sekcje oddzielone średnikami. Pierwsza część określa format wartości dodatnich, druga część wartości ujemnych i trzecia część zera. Jeśli określisz tylko jeden kod format, dotyczy to wszystkich liczb.

Ustawienia regionalne dotyczące formatowania liczb, dat i walut w programie LibreOffice Basic można zmienić w następującej ścieżce: LibreOffice – PreferencjeNarzędzia – Opcje – Ustawienia językowe – Języki. W kodach formatowania Basic kropka dziesiętna (.) jest zawsze używana jako symbol zastępczy separatora dziesiętnego zdefiniowanego w ustawieniach regionalnych i będzie zastępowana przez odpowiadający jej znak.

To samo dotyczy regionalnych ustawień formatu daty, godziny i waluty. Kod formatowania Basic jest interpretowany i wyświetlany zgodnie z ustawieniami regionalnymi.

### Przykład:

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

## GetDefaultContext

Returns the default context of the process service factory, if existent, else returns a null reference.

GetDefaultContext is an alternative to the getComponentContext() method available from XSCRIPTCONTEXT global variable or from uno.py module.

### Składnia:

svc.GetDefaultContext(): uno

### Zwracana wartość:

The default component context is used, when instantiating services via XMultiServiceFactory. See the Professional UNO chapter in the Developer's Guide on api.libreoffice.org for more information.

### Przykład:

        ctx = bas.GetDefaultContext()

## GetGuiType

Returns a numerical value that specifies the graphical user interface. This function is only provided for backward compatibility with previous versions.

Refer to system() method from platform Python module to identify the operating system.

### Składnia:

svc.GetGuiType(): int

### Przykład:

        n = bas.GetGuiType()

## GetPathSeparator

Returns the operating system-dependent directory separator used to specify file paths.

Use os.pathsep from os Python module to identify the path separator.

### Składnia:

svc.GetPathSeparator(): str

### Przykład:

        sep = bas.GetPathSeparator()

## GetSystemTicks

Returns the number of system ticks provided by the operating system. You can use this function to optimize certain processes. Use this method to estimate time in milliseconds:

### Składnia:

svc.GetSystemTicks(): int

### Przykład:

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

## GlobalScope.BasicLibraries

Returns the UNO object containing all shared Basic libraries and modules.

This method is the Python equivalent to GlobalScope.BasicLibraries in Basic scripts.

### Składnia:

svc.GlobalScope.BasicLibraries(): uno

### Zwracana wartość:

com.sun.star.script.XLibraryContainer

### Przykład:

The following example loads the Gimmicks Basic library if it has not been loaded yet.

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

## GlobalScope.DialogLibraries

Returns the UNO object containing all shared dialog libraries.

This method is the Python equivalent to GlobalScope.DialogLibraries in Basic scripts.

### Składnia:

svc.GlobalScope.DialogLibraries(): uno

### Zwracana wartość:

com.sun.star.comp.sfx2.DialogLibraryContainer

### Przykład:

The following example shows a message box with the names of all available dialog libraries.

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

## InputBox

### Składnia:

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

### Parametry:

prompt: Wyrażenie w postaci ciągu wyświetlane jako komunikat w oknie dialogowym.

title: Wyrażenie w postaci ciągu wyświetlane na pasku tytułowym okna dialogowego.

default: Wyrażenie w postaci ciągu wyświetlane w polu tekstowym jako domyślne, jeśli nie podano innych danych wejściowych.

xpostwips: Wyrażenie całkowite określające poziome położenie okna dialogowego. Pozycja jest współrzędną bezwzględną i nie odnosi się do okna LibreOffice.

ypostwips: Wyrażenie całkowite określające pionową pozycję okna dialogowego. Pozycja jest współrzędną bezwzględną i nie odnosi się do okna LibreOffice.

Jeśli pominięto xpostwips i ypostwips, okno dialogowe jest wyśrodkowane na ekranie. Pozycja jest określona w twips.

### Zwracana wartość:

String

### Przykład:

        txt = s.InputBox('Please enter a phrase:', "Dear user")
        s.MsgBox(txt, s.MB_ICONINFORMATION, "Confirmation of phrase")

For in-depth information please refer to Input/Output to Screen with Python on the Wiki.

## MsgBox

Displays a dialog box containing a message and returns an optional value.
MB_xx constants help specify the dialog type, the number and type of buttons to display, plus the icon type. By adding their respective values they form bit patterns, that define the MsgBox dialog appearance.

### Składnia:

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

### Parametry:

prompt: Wyrażenie w postaci ciągu wyświetlane jako komunikat w oknie dialogowym. Podziały linii można wstawić za pomocą Chr$(13).

title: Wyrażenie w postaci ciągu wyświetlane na pasku tytułowym okna dialogowego. W przypadku pominięcia na pasku tytułu wyświetlana jest nazwa odpowiedniej aplikacji.

buttons: dowolne wyrażenie całkowite określające typ okna dialogowego, liczbę i typ wyświetlanych przycisków oraz typ ikony. buttons reprezentuje kombinację wzorców bitowych, czyli kombinację elementów można zdefiniować, dodając ich odpowiednie wartości:

### Zwracana wartość:

An optional integer as detailed in above IDxx properties.

### Przykład:

        txt = s.InputBox('Please enter a phrase:', "Dear user")
        s.MsgBox(txt, s.MB_ICONINFORMATION, "Confirmation of phrase")

For in-depth information please refer to Input/Output to Screen with Python on the Wiki.

## Now

Returns the current system date and time as a datetime.datetime Python native object.

### Składnia:

svc.Now(): datetime

### Przykład:

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

## RGB

Returns an integer color value consisting of red, green, and blue components.

### Składnia:

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

### Parametry:

red: dowolne wyrażenie całkowite, które reprezentuje składową czerwieni (0-255) koloru złożonego.

green: dowolne wyrażenie całkowite, które reprezentuje składową zieleni (0-255) koloru złożonego.

blue: dowolne wyrażenie całkowite, które reprezentuje składową niebieskiego (0-255) koloru złożonego.

Wynikowa wartość Long jest obliczana za pomocą następującego wzoru:
Wynik = red×65536 + green×256 + blue.

W trybie zgodności z VBA (Option VBASupport 1) wartość Long jest obliczana jako
Wynik = red + green×256 + blue×65536
Zobacz funkcję RGB [VBA]

Okno wyboru koloru pomaga obliczyć składowe czerwonego, zielonego i niebieskiego koloru złożonego. Zmiana koloru tekstu i wybranie koloru niestandardowego powoduje wyświetlenie okna wyboru koloru.

### Zwracana wartość:

Integer

### Przykład:

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

## Xray

Inspect Uno objects or variables.

### Składnia:

svc.Xray(obj: any)

### Parametry:

obj: A variable or UNO object.

### Przykład:

        bas.Xray(bas.StarDesktop)

Wszystkie podstawowe procedury lub identyfikatory ScriptForge poprzedzone znakiem podkreślenia „_” są zarezerwowane do użytku wewnętrznego. Nie należy ich używać w makrach Basic ani skryptach Pythona.

Tematy pokrewne

Specyfikator GlobalScope

Programowanie za pomocą skryptów Pythona

uno.fileUrlToSystemPath()

uno.systemPathToFileUrl()

Input/Output to Screen with Python on the wiki

XSCRIPTCONTEXT.getComponentContext()

uno.getComponentContext()

platform.system()

os.pathsep()