Dalam pelajaran sebelumnya, kami melihat cara menampilkan teks multi-baris menggunakan paragraf. Metode yang dijelaskan membutuhkan traversal manual dari array string keluaran. Dalam pelajaran ini, kita akan melihat cara alternatif tanpa kekurangan ini. Ini didasarkan pada antarmuka
ksTextParam dan metode
ksTextEx .

Isi seri pelajaran โBekerja dengan API KOMPAS-3Dโ
- Dasar-dasarnya
- Desain gambar
- Koneksi yang benar ke KOMPAS
- Prasasti utama
- Primitif grafis
- Menyimpan dokumen dalam berbagai format
- Mengenal pengaturan
- Metode penulisan yang lebih canggih di blok judul
- Membaca sel teks
- Karakter khusus termasuk string
- Label teks sederhana
- Senar majemuk
- Paragraf
- Teks multiline
Opsi Teks ( ksTextParam )
Antarmuka
ksTextParam adalah add-on untuk antarmuka
ksParagraphParam dan larik string keluaran. Untuk mendapatkannya, Anda perlu memanggil metode
GetParamStruct dari antarmuka
KompasObject dengan
ko_TextParam konstan.
Antarmuka
ksTextParam tidak memiliki
properti , jadi kami segera melanjutkan untuk mempertimbangkan metode-metodenya.
GetParagraphParam () - mengembalikan antarmuka parameter paragraf ksParagraphParam. Tidak memiliki parameter input.
GetTextLineArr () - mengembalikan larik dinamis ksDynamicArray dari garis keluaran. Tidak memiliki parameter input.
Init () - mengatur ulang parameter teks. Tidak memiliki parameter input. Jika berhasil, mengembalikan true.
SetParagraphParam - mengatur parameter paragraf. Sebagai satu-satunya parameter, ia menerima antarmuka
ksParagraphParam yang berisi parameter yang dapat
diatur . Jika berhasil, mengembalikan
true , dan jika terjadi kesalahan,
false .
SetTextLineArr - Menetapkan larik string keluaran. Sebagai satu-satunya parameter, dibutuhkan antarmuka
ksDynamicArray yang berisi garis output. Jika berhasil, mengembalikan
true , dan jika terjadi kesalahan,
false .
Array dinamis yang dikembalikan oleh metode
GetTextLineArr () dan ditetapkan oleh metode
SetTextLineArr adalah tipe
TEXT_LINE_ARR . Ini berarti bahwa elemen-elemen dari array adalah antarmuka
ksTextLineParam .
Metode KsTextEx
Untuk menampilkan teks multi-baris, gunakan metode
ksTextEx dari antarmuka
ksDocument2D . Di bawah ini adalah prototipe dari itu:
long ksTextEx ( LPDISPATCH txtParam, // ksTextParam long align // );
Tabel di bawah ini menunjukkan nilai parameter penyelarasan yang valid.

Jika berhasil, metode
ksTextEx mengembalikan pointer integer ke teks yang dihasilkan. Dan dalam hal terjadi kesalahan -
nol .
Contoh
Berikut ini adalah cuplikan dari program yang menunjukkan keluaran teks multiline menggunakan metode ksTextEx. // DynamicArrayPtr items; items = static_cast<DynamicArrayPtr>(kompas->GetDynamicArray(TEXT_ITEM_ARR)); items->ksClearArray(); DynamicArrayPtr lines; lines = static_cast<DynamicArrayPtr>(kompas->GetDynamicArray(TEXT_LINE_ARR)); lines->ksClearArray(); // TextLineParamPtr lineParam; lineParam = static_cast<TextLineParamPtr>(kompas->GetParamStruct(ko_TextLineParam)); lineParam->Init(); TextItemParamPtr itemParam; itemParam = static_cast<TextItemParamPtr>(kompas->GetParamStruct(ko_TextItemParam)); itemParam->Init(); TextItemFontPtr itemFont = static_cast<TextItemFontPtr>(itemParam->GetItemFont()); // BSTR str = SysAllocString(OLESTR(" ")); itemParam->set_s(str); items->ksAddArrayItem(-1, itemParam); lineParam->SetTextItemArr(items); lines->ksAddArrayItem(-1, lineParam); lineParam->Init(); SysFreeString(str); str = NULL; itemFont->set_bitVector(NEW_LINE | ITALIC_OFF); str = SysAllocString(OLESTR(" ")); itemParam->set_s(str); items->ksAddArrayItem(-1, itemParam); lineParam->SetTextItemArr(items); lines->ksAddArrayItem(-1, lineParam); lineParam->Init(); SysFreeString(str); str = NULL; itemFont->set_bitVector(NEW_LINE | ITALIC_ON | BOLD_ON); str = SysAllocString(OLESTR(" ")); itemParam->set_s(str); items->ksAddArrayItem(-1, itemParam); lineParam->SetTextItemArr(items); lines->ksAddArrayItem(-1, lineParam); lineParam->Init(); SysFreeString(str); str = NULL; itemFont->set_bitVector(NEW_LINE | BOLD_OFF | UNDERLINE_ON); str = SysAllocString(OLESTR(" ")); itemParam->set_s(str); items->ksAddArrayItem(-1, itemParam); lineParam->SetTextItemArr(items); lines->ksAddArrayItem(-1, lineParam); lineParam->Init(); SysFreeString(str); str = NULL; itemParam.Unbind(); lineParam.Unbind(); itemFont.Unbind(); items.Unbind(); // ParagraphParamPtr paragraphParam; paragraphParam= static_cast<ParagraphParamPtr>(kompas->GetParamStruct(ko_ParagraphParam)); paragraphParam->Init(); paragraphParam->set_x(100.0); paragraphParam->set_y(100.0); paragraphParam->set_width(60.0); paragraphParam->set_hFormat(2); // TextParamPtr textParam = static_cast<TextParamPtr>(kompas->GetParamStruct(ko_TextParam)); textParam->SetParagraphParam(paragraphParam); textParam->SetTextLineArr(lines); // Document2D->ksTextEx(textParam, 1); lines->ksDeleteArray(); lines.Unbind(); paragraphParam.Unbind(); textParam.Unbind(); // kompas->set_Visible(true); kompas.Unbind();
Dalam contoh ini, kita tidak mem-bypass array, tetapi memanggil metode yang diinginkan sekali. Dia menemukan bendera
NEW_LINE dan menafsirkannya dengan benar. Harap dicatat: setiap baris baru dengan flag ini dikeluarkan dalam antarmuka
ksTextLineParam terpisah. Jika Anda menempatkannya dalam satu
ksTextLineParam , maka COMPAS akan mengabaikan bendera
NEW_LINE . Gambar di bawah ini menunjukkan hasil dari program ini.
KesimpulanDalam pelajaran ini, kami melihat cara alternatif untuk menampilkan teks multi-baris. Ini agak lebih rumit daripada apa yang kita periksa sebelumnya, tetapi tidak memerlukan traversal manual dari serangkaian string. Yang mana yang harus digunakan terserah Anda.
Dalam pelajaran berikutnya, kita akan kembali ke subjek garis majemuk dan melihat cara yang terdokumentasi untuk membuatnya menggunakan paragraf.
Untuk dilanjutkan, ikuti berita blog.
Sergey Norseev, Ph.D., penulis buku "Pengembangan Aplikasi untuk COMPAS di Delphi."