Modul
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 dapat diperluas dengan Add-Ins, yang merupakan modul pemrograman eksternal yang menyediakan fungsi tambahan untuk bekerja dengan spreadsheet. Ini tercantum dalamFungsi Wisaya dalamAdd-Inkategori. Jika Anda ingin memprogram Add-in sendiri, Anda dapat mempelajari di sini fungsi mana yang harus diekspor oleh perpustakaan bersama eksternal DLL sehingga Add-In dapat berhasil dilampirkan.

LibreOffice mencari folder Add-in yang ditentukan dalam konfigurasi untuk yang sesuai perpustakaan berbagi DLL. Untuk dikenali oleh LibreOffice, itu perpustakaan berbagi DLL harus memiliki properti tertentu, seperti yang dijelaskan berikut ini. Informasi ini memungkinkan Anda untuk memprogram Add-In Anda sendiri Fungsi Wisaya dari 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.

### Fungsi dariPerpustakaan Bersama 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

## Perpustakaan Bersama DLL fungsi

Setelah Anda akan menemukan deskripsi fungsi-fungsi tersebut, yang dipanggil diPerpustakaan Bersama eksternal DLL

Untuk semua Perpustakaan Bersama DLL fungsi, yang berikut ini berlaku:

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

(keluaran)

Input: Sejumlah jenis (dobel &, char *, dobel *, char **, area sel), di mana Sel area adalah larik tipe larik ganda, larik string, atau larik sel.

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

batal TIPE PANGGILAN GetFunctionCount (USHORT & nCount)

Parameter

USHORT &nCount:

Keluaran: Referensi ke variabel, yang seharusnya berisi jumlah fungsi Add-In. Sebagai contoh: Jika Add-In menyediakan 5 fungsi untuk LibreOffice Calc, maka nCount = 5.

### DapatkanDataFungsi()

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: Nomor fungsi antara 0 dan n Hitung-1, secara inklusif.

char* pFuncName:

Keluaran: Nama fungsi seperti yang terlihat oleh pemrogram, seperti namanya dalam Shared Library DLL. Nama ini tidak menentukan nama yang digunakan dalam Fungsi Wisaya.

USHORT& nParamCount:

Output: Jumlah parameter dalam fungsi AddIn. Angka ini harus lebih besar dari 0, karena selalu ada nilai hasil; nilai maksimum adalah 16.

Paramtype* peType:

Output: Pointer ke array dengan tepat 16 variabel tipe Paramtype. Entri nParamCount pertama diisi dengan jenis parameter yang sesuai.

char* pInternalName:

Keluaran: Nama fungsi seperti yang terlihat oleh pengguna, seperti yang muncul di Fungsi Wisaya. Mungkin mengandung umlaut.

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: Jumlah fungsi di perpustakaan; antara 0 dan nCount-1.

USHORT& nParam:

Input: Menunjukkan, untuk parameter yang mana uraian diberikan; parameter mulai dari 1. Jika nParam adalah 0, deskripsi itu sendiri seharusnya disediakan di pDesc; dalam hal ini, pName tidak memiliki arti.

char* pName:

Keluaran: Mengambil nama atau tipe parameter, misalnya, kata "Number" atau "String" atau "Date", dan sebagainya. Diimplementasikan dalam LibreOffice Calc as char[256].

char* pDesc:

Keluaran: Mengambil deskripsi parameter, misalnya, "Nilai, di mana semua akan dihitung." Diimplementasikan dalam 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:

Efek | Nama | Deskripsi
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:

Efek | Nama | Deskripsi
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
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:

Efek | Nama | Deskripsi
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