Isi
Indeks 🔎︎

# Tambahan bagi Pemrograman LibreOffice Calc

Metode memperluas Calc oleh Add-Ins yang dijelaskan di bawah ini sudah usang. Antarmuka masih valid dan didukung, untuk memastikan kompatibilitas dengan Add-in yang ada, tetapi untuk pemrograman Add-in baru Anda harus menggunakan yang baruFungsi API.

LibreOffice Calc can be expanded by Add-Ins, which are external programming modules providing additional functions for working with spreadsheets. These are listed in the Function Wizard in the Add-In category. If you would like to program an Add-In yourself, you can learn here which functions must be exported by the shared library external DLL so that the Add-In can be successfully attached.

LibreOffice searches the Add-in folder defined in the configuration for a suitable shared library DLL. To be recognized by LibreOffice, the shared library DLL must have certain properties, as explained in the following. This information allows you to program your own Add-In for Function Wizard of LibreOffice Calc.

## Konsep Tambahan

Setiap Tambah-di perpustakaan menyediakan beberapa fungsi. Beberapa fungsi digunakan untuk keperluan administrasi. Anda dapat memilih hampir semua nama untuk fungsi Anda sendiri. Namun, mereka juga harus mengikuti aturan-aturan tertentu tentang pemindahan parameter. Konvensi penamaan dan panggilan yang berbeda bervariasi untuk platform yang berbeda.

### Functions of Shared Library AddIn DLL

Minimal, fungsi administrasiGetFunctionCount dan GetFunctionData harus ada. Dengan menggunakan ini, fungsi serta tipe parameter dan nilai pengembalian dapat ditentukan. Sebagai nilai pengembalian, tipe Double dan String didukung. Sebagai parameter, tambahan area sel Double Array, String Array, danCell Array didukung.

Parameter dilewatkan menggunakan referensi. Oleh karena itu, perubahan nilai-nilai ini pada dasarnya memungkinkan. Namun, ini tidak didukung dalam LibreOffice Calc karena tidak masuk akal dalam lembar kerja.

Perpustakaan dapat dimuat ulang selama runtime dan isinya dapat dianalisis dengan fungsi administrasi. Untuk setiap fungsi, tersedia informasi tentang jumlah dan jenis parameter, nama fungsi internal dan eksternal dan nomor administrasi.

Fungsi-fungsi tersebut disebut secara sinkron dan segera mengembalikan hasilnya. Fungsi waktu yang nyata (fungsi asinkron) juga dimungkinkan; Namun, mereka tidak dijelaskan secara rinci karena kerumitannya.

## Informasi umum tentang antarmuka

Jumlah maksimum parameter dalam fungsi Add-In yang terlampir pada LibreOffice Calc adalah 16: satu nilai balik dan maksimum 15 parameter input fungsi.

Jenis data ditentukan sebagai berikut:

Jenis data | Definisi
CALLTYPE | Di bawah Windows: FAR PASCAL (_far _pascal) Lainnya: default (standar khusus sistem operasi)
USHORT | Tipe partisi sebagai bilangan bulat tak bertanda 8-bit
DOUBLE | Format tergantung platform 8 byte
Paramtype | Tergantung platform seperti int Trackpad;Pointer;Klik;Sentuh;Ganda;Tombol;Trackball; PTR_STRING = 1 pointer ke string yang diakhiri nol PTR_DOUBLE_ARR = 2 pointer ke array ganda PTR_STRING_ARR = 3 pointer ke array string PTR_CELL_ARR = 4 pointer ke array sel NONE =5

## Shared Library DLL functions

Following you will find a description of those functions, which are called at the Shared Library external DLL.

For all Shared Library DLL functions, the following applies:

void CALLTYPE fn(out, in1, in2, ...)

Output: Resulting value

Input: Any number of types (double&, char*, double*, char**, Cell area), where the Cell area is an array of types double array, string array, or cell array.

### GetFunctionCount()

Mengembalikan jumlah fungsi tanpa fungsi manajemen dari parameter referensi. Setiap fungsi memiliki angka unik antara 0 dan nCount-1. Nomor ini akan diperlukan untuk GetFunctionData dan GetParameterDescription berfungsi nanti.

Sintaksis

void CALLTYPE GetFunctionCount(USHORT& nCount)

Parameter

USHORT &nCount:

Output: Reference to a variable, which is supposed to contain the number of Add-In functions. For example: If the Add-In provides 5 functions for LibreOffice Calc, then nCount=5.

### GetFunctionData()

Menentukan semua informasi penting tentang fungsi Add-In.

Sintaksis

void CALLTYPE GetFunctionData(USHORT& nNo, char* pFuncName, USHORT& nParamCount, Paramtype* peType, char* pInternalName)

Parameter

USHORT& nNo:

Input: Function number between 0 and nCount-1, inclusively.

char* pFuncName:

Output: Function name as seen by the programmer, as it is named in the Shared Library DLL. This name does not determine the name used in the Function Wizard.

USHORT& nParamCount:

Output: Number of parameters in AddIn function. This number must be greater than 0, because there is always a result value; the maximum value is 16.

Paramtype* peType:

Output: Pointer to an array of exactly 16 variables of type Paramtype. The first nParamCount entries are filled with the suitable type of parameter.

char* pInternalName:

Output: Function name as seen by the user, as it appears in the Function Wizard. May contain umlauts.

Parameter pFuncName dan pInternalName adalah array char, yang diimplementasikan dengan ukuran 256 dalam LibreOffice Calc.

### GetParameterDescription()

Memberikan deskripsi singkat tentang fungsi Add-In dan parameternya. Sebagai opsi, fungsi ini dapat digunakan untuk menampilkan deskripsi fungsi dan parameter di Fungsi Wisaya.

Sintaksis

void CALLTYPE GetParameterDescription(USHORT& nNo, USHORT& nParam, char* pName, char* pDesc)

Parameter

USHORT& nNo:

Input: Number of the function in the library; between 0 and nCount-1.

USHORT& nParam:

Input: Indicates, for which parameter the description is provided; parameters start at 1. If nParam is 0, the description itself is supposed to be provided in pDesc; in this case, pName does not have any meaning.

char* pName:

Output: Takes up the parameter name or type, for example, the word "Number" or "String" or "Date", and so on. Implemented in LibreOffice Calc as char[256].

char* pDesc:

Output: Takes up the description of the parameter, for example, "Value, at which the universe is to be calculated." Implemented in LibreOffice Calc as char[256].

pName dan pDesc adalah array char; diimplementasikan dalam LibreOffice Calc dengan ukuran 256. Harap perhatikan bahwa ruang yang tersedia di Fungsi Wisaya terbatas dan bahwa 256 karakter tidak dapat sepenuhnya digunakan.

## Wilayah sel

Tabel berikut berisi informasi tentang struktur data mana yang harus disediakan oleh modul program eksternal untuk melewati area sel. LibreOffice Calc membedakan antara tiga array yang berbeda, tergantung pada tipe datanya.

### Susunan Ganda

Sebagai parameter, area sel dengan nilai-nilai tipe Number / Double dapat dilewati. Array ganda dalam LibreOffice Calc didefinisikan sebagai berikut:

Offset | Name | Description
0 | Kol1 | Nomor kolom di sudut kiri atas area sel. Penomoran dimulai pada 0.
2 | Baris1 | Nomor baris di sudut kiri atas area sel; penomoran dimulai pada 0.
4 | Tab1 | Nomor tabel di sudut kiri atas area sel; penomoran dimulai pada 0.
6 | Kol2 | Nomor kolom di sudut kanan bawah area sel. Penomoran dimulai pada 0.
8 | Baris2 | Nomor baris di sudut kanan bawah area sel; penomoran dimulai pada 0.
10 | Tab2 | Nomor tabel di sudut kanan bawah area sel; penomoran dimulai pada 0.
12 | Cacah | Jumlah elemen berikut. Sel kosong tidak dihitung atau dilewatkan.
14 | Kol | Nomor kolom elemen. Penomoran dimulai pada 0.
16 | Baris | Jumlah baris elemen; penomoran dimulai pada 0.
18 | Tab | Nomor tabel elemen; penomoran dimulai pada 0.
20 | Kesalahan | Nomor kesalahan, di mana nilai 0 didefinisikan sebagai "tidak ada kesalahan." Jika elemen berasal dari sel rumus, nilai kesalahan ditentukan oleh rumus.
22 | Nilai | 8 byte variabel IEEE tipe double / floating point
30 | ... | Elemen berikutnya

### Susunan String

Area sel, yang berisi nilai tipe data Teks dan diteruskan sebagai string array. Array string dalam LibreOffice Calc didefinisikan sebagai berikut:

Offset | Name | Description
0 | Kol1 | Nomor kolom di sudut kiri atas area sel. Penomoran dimulai pada 0.
2 | Baris1 | Nomor baris di sudut kiri atas area sel; penomoran dimulai pada 0.
4 | Tab1 | Nomor tabel di sudut kiri atas area sel; penomoran dimulai pada 0.
6 | Kol2 | Nomor kolom di sudut kanan bawah area sel. Penomoran dimulai pada 0.
8 | Baris2 | Nomor baris di sudut kanan bawah area sel; penomoran dimulai pada 0.
10 | Tab2 | Nomor tabel di sudut kanan bawah area sel; penomoran dimulai pada 0.
12 | Cacah | Jumlah elemen berikut. Sel kosong tidak dihitung atau dilewatkan.
14 | Kol | Nomor kolom elemen. Penomoran dimulai pada 0.
16 | Baris | Jumlah baris elemen; penomoran dimulai pada 0.
18 | Tab | Nomor tabel elemen; penomoran dimulai pada 0.
20 | Kesalahan | Nomor kesalahan, di mana nilai 0 didefinisikan sebagai "tidak ada kesalahan." Jika elemen berasal dari sel rumus, nilai kesalahan ditentukan oleh rumus.
22 | Len | Panjang dari string berikut, termasuk menutup byte nol. Jika panjang termasuk penutupan byte nol sama dengan nilai ganjil, byte nol kedua ditambahkan ke string sehingga nilai genap tercapai. Oleh karena itu, Len dihitung menggunakan ((StrLen+2)&~1).
24 | String | String dengan menutup byte nol
24+Len | ... | Elemen berikutnya

### Susunan Sel

Array sel digunakan untuk memanggil area sel yang berisi teks dan juga angka. Array sel dalam LibreOffice Calc didefinisikan sebagai berikut:

Offset | Name | Description
0 | Kol1 | Nomor kolom di sudut kiri atas area sel. Penomoran dimulai pada 0.
2 | Baris1 | Nomor baris di sudut kiri atas area sel; penomoran dimulai pada 0.
4 | Tab1 | Nomor tabel di sudut kiri atas area sel; penomoran dimulai pada 0.
6 | Kol2 | Nomor kolom di sudut kanan bawah area sel. Penomoran dimulai pada 0.
8 | Baris2 | Nomor baris di sudut kanan bawah area sel; penomoran dimulai pada 0.
10 | Tab2 | Nomor tabel di sudut kanan bawah area sel; penomoran dimulai pada 0.
12 | Cacah | Jumlah elemen berikut. Sel kosong tidak dihitung atau dilewatkan.
14 | Kol | Nomor kolom elemen. Penomoran dimulai pada 0.
16 | Baris | Jumlah baris elemen; penomoran dimulai pada 0.
18 | Tab | Nomor tabel elemen; penomoran dimulai pada 0.
20 | Kesalahan | Nomor kesalahan, di mana nilai 0 didefinisikan sebagai "tidak ada kesalahan." Jika elemen berasal dari sel rumus, nilai kesalahan ditentukan oleh rumus.
22 | Jenis | Jenis konten sel, 0 == Double, 1 == String
24 | Nilai atau Panjang | Jika tipe == 0: 8 byte variabel IEEE tipe double / floating point Jika tipe == 1: Panjang dari string berikut, termasuk menutup byte nol. Jika panjang termasuk penutupan byte nol sama dengan nilai ganjil, byte nol kedua ditambahkan ke string sehingga nilai genap tercapai. Oleh karena itu, Len dihitung menggunakan ((StrLen+2)&~1).
26 jika tipe==1 | String | Jika tipe == 1: String dengan menutup byte nol
LEN | ... | Elemen berikutnya