Fitur bekerja dengan antarmuka di Delphi. Solusi TI terbaik untuk bisnis Ukuran jendela tidak boleh melebihi ukuran layar

hanya untuk hasil

kepatuhan yang ketat terhadap tenggat waktu

Transparansi

implementasi proyek

dukungan teknis sebagai hadiah

Pemrograman, peningkatan, konsultasi tentang 1C

Bagaimana kami bekerja?

1. Kami mendiskusikan masalah melalui telepon. Di hadapan akses jarak jauh- tampilkan di layar komputer Anda.

2. Kami mengevaluasi pekerjaan dalam rubel jika proyeknya besar, jika tidak - perkiraan jumlah jam.

3. Kami menyelesaikan pekerjaan.

4. Anda menerima pekerjaan di program Anda, jika ada kekurangan, kami perbaiki.

5. Kami mengeluarkan faktur, Anda membayar.

Biaya pekerjaan

1. Semua pekerjaan dibagi menjadi 3 kategori: konsultasi, memperbarui konfigurasi tipikal, mengembangkan atau memprogram laporan baru, pemrosesan, tombol, dll.

3. Untuk pekerjaan di atas 10 jam, tugas teknis disiapkan terlebih dahulu dengan uraian dan biaya pekerjaan. Pekerjaan dimulai setelah persetujuan TOR dengan Anda.

Dukungan teknis

1. Jika Anda menemukan kesalahan dalam karya yang diterima sebelumnya, dalam waktu 3 bulan, kami memperbaikinya secara gratis.

2. Untuk pelanggan tetap, kami memperbaiki segala kekurangan dalam pekerjaan kami secara gratis dalam waktu satu tahun.

Program untuk mengelola bisnis Anda.

Beli 1C:Perusahaan

Kami adalah dealer resmi 1C, Anda dapat membeli dari kami berbagai produk perangkat lunak dan lisensi. Selain membeli "kotak", kami akan membantu Anda mengatur program, berkonsultasi dan membuat pengaturan dasar.

  • Akuntansi
  • Otomatisasi Toko
  • Grosir
  • Bantuan pemasangan dan pengaturan awal termasuk dalam paket!
  • Menyesuaikan konfigurasi dengan kebutuhan pelanggan, pengembangan modul baru tanpa adanya fungsi yang diperlukan dalam konfigurasi standar.
1c akuntansi 1C: Manajemen perdagangan 1C: Ritel 1C: Penggajian dan Manajemen Sumber Daya Manusia
Dari 3300 gosok. Dari 6700 gosok. Dari 3300 gosok. Dari 7400 gosok.

Menyediakan server.

Server pengaturan instan + 1C.

Tidak ada server? Tidak masalah, kami akan memilih dan dengan cepat menyiapkan server di "cloud". Dengan sedikit biaya, Anda mendapatkan solusi yang sangat andal.

  • Ketersediaan 24\7
  • Tak perlu simpan sendiri administrator sistem(penghematan akan menutupi biaya server Anda).
  • Pengaturan cepat dan pemasangan 1C di server, dalam 3 hari Anda sudah memiliki sistem yang berfungsi penuh.
  • Kapan saja Anda dapat pindah ke server lokal jika solusi tidak memuaskan.

SMS dari 1C Anda

Apakah Anda ingin pelanggan belajar tentang promosi dan diskon tepat waktu? Klien tidak kembali? Sesuaikan mengirim SMS langsung dari 1C!

Perusahaan kami akan dapat dengan cepat mengatur pengiriman SMS ke pelanggan Anda langsung dari 1C. Contoh peristiwa yang dapat diotomatisasi:

  • Terima kasih atas pembelian dan perolehan bonus segera setelah pembelian berikutnya.
  • Akrual bonus ke kartu sebagai hadiah untuk ulang tahun/hari penting atau hari libur lainnya.
  • Pemberitahuan gudang.
  • Kedaluwarsa voucher hadiah.
  • Pemberitahuan penerimaan pembayaran di muka dan pemesanan barang.
  • Alamat dengan petunjuk arah ke toko/kantor, nomor telepon.
  • Dll.

Setting di 1C dapat dilakukan oleh spesialis kami atau karyawan kami. Anda dapat berkenalan dengan tarif di halaman tarif SMS.

  • Menjamin pengiriman SMS, uang ditarik hanya untuk SMS yang dikirim.
  • Tagihan terpisah untuk setiap SMS.
  • Pengisian saldo dengan berbagai cara.
  • Lihat riwayat semua SMS yang dikirim kapan saja.
  • Nama pengirim alih-alih nomor numerik di telepon penerima.

Penciptaan antarmuka pengguna dikurangi untuk memilih dari palet komponen komponen Delphi yang diperlukan agar program bekerja, melayani antarmuka manajemen, serta antarmuka menampilkan informasi, dan mentransfernya ke Formulir dengan tata letak berikutnya.

Antarmuka pengguna yang Anda buat harus menggunakan elemen standar yang familiar bagi pengguna dan memberikan kenyamanan maksimal. Semua ini pada akhirnya ditentukan oleh kriteria seperti efektivitas antarmuka - hasil maksimal dengan sedikit usaha.
prinsip penciptaan antarmuka yang ramah pengguna diketahui. sebagai yang paling prinsip-prinsip umum sambil membuat antarmuka pengguna tiga poin utama yang dapat dipertimbangkan:

  1. Program harus membantu menyelesaikan tugas, bukan menjadi tugas.
  2. Saat bekerja dengan program, pengguna tidak boleh merasa bodoh.
  3. Program harus bekerja sedemikian rupa sehingga pengguna tidak menganggap komputer itu bodoh.
Prinsip pertama- inilah yang disebut "transparansi" antarmuka. Antarmuka pengguna harus intuitif, mudah dipelajari, dan tidak menimbulkan masalah bagi pengguna yang harus ia atasi dalam prosesnya. Gunakan standar, tanpa komponen embellishment berlebihan, gunakan familiar, bekas program serupa teknik manajemen, dan Anda akan mencapai kriteria kinerja prinsip pertama.

Prinsip kedua terletak pada kelalaian kemampuan intelektual pengguna. Dari pengalaman saya sendiri, saya tahu bahwa seringkali pengguna tidak hanya tidak tahu cara bekerja di depan komputer, tetapi juga takut melakukan apa pun sendiri. Oleh karena itu, antarmuka pengguna harus seramah mungkin.
Selain itu, ketakutan pengguna sering dibenarkan, karena biaya program, dan komputer itu sendiri, tidak dapat dibandingkan dengan biaya, misalnya, database yang dibuat dengan upaya bertahun-tahun. Itulah sebabnya programmer, saat membuat antarmuka pengguna, harus selalu membangun program "perlindungan bodoh" - dari tindakan yang salah dan input data yang salah oleh pengguna. Tetapi beberapa programmer terlalu terbawa oleh perlindungan seperti itu, membuatnya terlalu mengganggu, dan akibatnya, operasi program menyerupai "langkah kiri, langkah kanan dianggap sebagai pelarian" yang terkenal! Dan apa yang dibuat oleh seorang programmer sebagai solusi untuk suatu masalah, itu sendiri mulai menciptakan masalah.
Untuk memenuhi prinsip kedua tidak perlu mengizinkan program untuk "memperbaiki" tindakan pengguna dan menunjukkan apa yang harus dilakukan untuknya, mendorongnya ke kerangka kerja yang sempit. Juga, seseorang tidak boleh terlalu terbawa dengan tampilan pesan petunjuk informasi, terutama yang dialog, karena ini mengalihkan pengguna dari pekerjaan. Dan lebih baik untuk menyediakan kemungkinan menonaktifkan prompt sama sekali.

Prinsip ketiga adalah membuat program dengan kemampuan "mental" sebesar mungkin. Meskipun perkembangannya pesat teknologi komputer, bahkan program yang tersebar luas hanya dapat disebut memiliki kecerdasan buatan dengan sangat kondisional. Mereka mengganggu pengalaman pengguna dengan menampilkan kotak dialog dengan pertanyaan bodoh yang menyebabkan kebingungan bahkan dalam situasi yang paling sederhana. Alhasil, pengguna di dalam hati mereka berseru: "Wah, mobil ini bodoh!"
Secara pribadi, saya terganggu oleh pertanyaan terus-menerus dari hampir semua orang. editor teks tentang apakah akan menyimpan teks yang diubah, meskipun teks asli dan teks saat ini tidak berbeda satu karakter. Ya, saya mengetik sesuatu, tetapi kemudian saya mengembalikan semuanya, apakah benar-benar tidak mungkin untuk mengetahuinya! Saya harus memeriksa untuk melihat apakah saya mengacaukan sesuatu.

Cobalah untuk mematuhi aturan berikut:

Elemen antarmuka standar
Gunakan standar untuk elemen yang diberikan antarmuka komponen. Setelah bertemu program Anda, pengguna tidak akan membuang waktu untuk mengenal satu sama lain, tetapi akan segera mulai bekerja - ini adalah salah satu tanda program yang dibuat secara profesional.
Palet alat kecil
Cobalah untuk tidak menggunakan terlalu banyak sejumlah besar berbagai komponen. Dan tentu saja, menggunakan satu komponen standar di suatu tempat di satu tempat, dalam kasus serupa juga menggunakannya.
Jarak yang sama antara kontrol
Atur elemen antarmuka pada jarak yang sama satu sama lain. Komponen yang tersebar secara acak menciptakan perasaan produk yang tidak profesional. Begitu pula sebaliknya, penempatan yang dikalibrasi dengan cermat pada Bentuk tombol, sakelar, kotak centang, dan komponen lain yang membentuk antarmuka adalah tanda kualitas kerja.
urutan tab. urutan "benar"
TabPesanan adalah urutan kursor layar bergerak di atas kontrol saat tombol ditekan tab. Dalam program yang ditulis dengan benar, kursor bergerak, mengikuti logika kerja pengguna dengan program tersebut. Saat membuat program, programmer sering mengubah komponen, menghapus beberapa, dan menambahkan yang lain sesuai kebutuhan. Akibatnya, dalam program yang telah selesai, kursor secara acak melompati Formulir. Setelah menyelesaikan program, jangan lupa untuk mengatur TabPesanan.
Pemilihan font
Biarkan font saja. Font default Delphi sendiri akan berfungsi untuk sistem apa pun yang mungkin dijalankan oleh program Anda. Gunakan font tebal hanya untuk menyorot elemen penting. Aplikasi kursif dan terutama garis bawah, yang mungkin disalahartikan pengguna sebagai hyperlink - formulir buruk.
Pilihan warna
Adapun warna elemen antarmuka, seperti halnya font, lebih baik membiarkannya standar, secara default. Delphi menggunakan palet sistem Windows, dan dengan mengubahnya, pengguna dapat dengan mudah menyesuaikan warna untuk diri mereka sendiri.
Manajemen alternatif
Program yang dibuat secara profesional harus dapat dikontrol tidak hanya dengan mouse, tetapi juga dengan keyboard. Seharusnya tidak ada fungsi yang tersedia untuk dieksekusi hanya dengan mouse (menggambar di editor grafis tidak dihitung!). Untuk fungsi yang paling sering digunakan, "tombol pintas" harus disediakan untuk akses cepatnya.
Blok bangunan antarmuka
Berkenaan dengan elemen tertentu dari antarmuka pengguna, kualitas interaksi pengguna dengan program tergantung pada:
  • kepatuhan elemen kontrol dengan tugasnya;
  • aturan di mana kontrol beroperasi.
    Halaman ini membahas aturan untuk membuat beberapa elemen antarmuka.
Dan sekarang saya ingin menunjukkan alat apa yang ditawarkan Delphi untuk mengelola komponen pada Formulir, posisi relatifnya, dan perilaku kursor saat tombol ditekan. tab.

Untuk mengatur komponen relatif satu sama lain dalam urutan yang benar, pertama perlu menyorotnya. Anda cukup menyeret mouse ke area pada Formulir yang berisi komponen yang dipilih. Atau dengan memegang Menggeser", tentukan dengan mouse yang sama setiap komponen yang akan dipilih. Klik mouse berulang kali pada komponen yang dipilih (sambil menekan " Menggeser") batal memilihnya.

Komponen yang dipilih dapat dikontrol secara keseluruhan - dipindahkan di sekitar Formulir, menetapkan nilai ke properti yang sama, disalin (untuk pemasangan, misalnya, pada Formulir lain), bahkan dihapus.

Sekarang klik kanan pada salah satu komponen, dan dari menu "pop-up" pilih Posisi -> Sejajarkan... Kotak dialog akan muncul yang memungkinkan Anda untuk menyesuaikan posisi komponen dalam grup secara horizontal dan vertikal. Misalnya, kita perlu menyelaraskan empat tombol kita ke kiri dan memastikan bahwa di antara mereka ada jarak yang sama Tegak lurus. Untuk melakukan ini, pilih tombol radio Horisontal: sisi kiri dan Vertikal: Spasi sama rata.

Memilih item Tengah, kami akan mengatur komponen sehingga pusatnya akan terletak pada garis yang sama secara horizontal atau vertikal, dan titik Pusat di jendela memindahkan komponen ke tengah jendela, baik secara horizontal maupun vertikal.

Di menu yang sama, baris tab HAI memesan... menyebabkan munculnya kotak dialog yang mengontrol pergerakan kursor melalui elemen antarmuka saat tombol ditekan tab. Ketika Formulir muncul di layar, kursor secara alami akan berada di komponen yang terletak di baris pertama kotak dialog. Dan kemudian itu akan bergerak ke bawah daftar. Pada kotak dialog, dua panah biru "atas" dan "bawah" mengontrol posisi komponen yang dipilih. Menyorot komponen yang dibutuhkan, gunakan panah untuk berpindah ke baris yang diinginkan dalam daftar, dan seterusnya.

Saat memilih item menu Kontrol -> Sebuah submenu muncul dengan dua item:

  • Bawa ke depan
  • kirim ke belakang
Ini adalah metode komponen yang juga tersedia secara terprogram. Tombol1.KirimKeKembali memindahkan tombol ke "latar belakang", dan Tombol1.Bawa Ke Depan- bawa ke depan". Artinya, jika satu komponen ditempatkan di atas yang lain, metode ini menukarnya. Kasus-kasus di mana hal ini dapat diterapkan cukup jelas.

Pemrograman berorientasi objek (OOP), selain konsep kelas, juga menyediakan konsep dasar antarmuka.

Apa itu antarmuka dan apa fitur bekerja dengannya dalam bahasa pemrograman Delphi?

Antarmuka adalah konstruksi semantik dan sintaksis dalam kode program yang digunakan untuk menentukan layanan yang disediakan oleh kelas atau komponen (Wikipedia).

Faktanya, sebuah antarmuka mendefinisikan daftar properti dan metode yang harus digunakan saat bekerja dengan kelas yang mengimplementasikan antarmuka ini, serta tanda tangannya (nama, tipe data, parameter yang diterima (untuk prosedur dan fungsi), dll.). Dengan demikian, kelas yang mengimplementasikan antarmuka harus mengimplementasikan semua komponennya. Apalagi sangat sesuai dengan cara mereka dideskripsikan di dalamnya.

Sangat sering, antarmuka dibandingkan dengan kelas abstrak, tetapi untuk semua kesamaan, perbandingan ini tidak sepenuhnya benar. Di kelas abstrak, minimal, kontrol atas visibilitas anggota tersedia. Pada saat yang sama, cakupan tidak ditentukan untuk antarmuka.

Antarmuka memungkinkan Anda untuk membuat arsitektur lebih fleksibel, karena mereka menyatukan akses ke fungsi tertentu, dan juga memungkinkan Anda untuk menghindari sejumlah masalah yang terkait dengan pewarisan kelas (antarmuka juga dapat diwarisi dari satu sama lain).

Delphi menggunakan kata kunci interface untuk mendeklarasikan sebuah interface. Ini adalah kata kunci yang sama yang mendefinisikan bagian modul yang dapat diakses dari luar (antara kata kunci antarmuka dan implementasi). Namun, ketika mendeklarasikan antarmuka, sintaks yang berbeda digunakan, mirip dengan mendeklarasikan kelas.

Delphi/Pascal

IMyNewInterface = prosedur antarmuka InterfaceProc; akhir;

IMyNewInterface = antarmuka

prosedur InterfaceProc ;

akhir ;

Dengan demikian, sintaks deklarasi antarmuka sendiri tidak memiliki perbedaan mendasar dari bahasa pemrograman lain (fitur sintaks berdasarkan Pascal tidak dihitung). Pada saat yang sama, implementasi antarmuka memiliki sejumlah fitur karakteristik.

Faktanya adalah bahwa antarmuka Delphi awalnya diperkenalkan untuk mendukung teknologi COM. Oleh karena itu, antarmuka IInterface, yang di Delphi adalah nenek moyang dari semua antarmuka lainnya (semacam analog dari TObject), sudah berisi tiga metode dasar untuk bekerja dengan teknologi ini: QueryInterface, _AddRef, _Release. Akibatnya, jika suatu kelas mengimplementasikan antarmuka apa pun, maka kelas itu juga harus mengimplementasikan metode tersebut. Bahkan jika kelas ini tidak dirancang untuk bekerja dengan COM.

Karena fitur antarmuka IInterface ini, di Delphi penggunaan antarmuka, dalam banyak kasus, mengarah pada penambahan fitur yang jelas tidak digunakan ke kelas.

Ada kelas perpustakaan TInterfaceObject, yang sudah berisi implementasi metode ini dan, saat mewarisinya, tidak perlu mengimplementasikannya sendiri. Tetapi karena Delphi tidak mendukung pewarisan kelas ganda, penggunaannya seringkali hanya menyebabkan kompleksitas tambahan dalam desain dan implementasi fungsionalitas yang sudah diperlukan.

Semua ini mengarah pada fakta bahwa, terlepas dari semua kemungkinan yang disediakan oleh antarmuka, penggunaan praktisnya di Delphi hampir tidak melampaui bekerja dengan COM.

Dioptimalkan untuk bekerja terutama dengan teknologi ini, antarmuka, atau lebih tepatnya fungsionalitas dan batasan arsitektur yang mereka tambahkan tanpa gagal, tidak membenarkan diri mereka sendiri saat memecahkan masalah lain.

Oleh karena itu, banyak pemrogram Delphi pada kenyataannya masih kekurangan alat yang kuat dan fleksibel untuk mengembangkan arsitektur aplikasi.

Artikel ini didasarkan pada pertanyaan di forum: "Bagaimana cara mengembalikan string dari DLL?", "Bagaimana cara meneruskan dan mengembalikan array rekaman?", "Bagaimana cara mengirimkan formulir ke DLL?".

Agar Anda tidak menghabiskan separuh hidup Anda untuk mencari tahu - dalam artikel ini saya akan membawa semuanya di piring perak.

Topik artikel ini, dalam berbagai tingkatan, telah disinggung lebih dari satu kali di blog ini, tetapi dalam artikel ini dikumpulkan secara bertumpuk, pembenaran diberikan. Singkatnya, tautan ke artikel ini dapat diberikan kepada mereka yang mengembangkan DLL.

Catatan penting: artikel harus dibaca berturut-turut. Contoh kode disediakan hanya sebagai contoh, di setiap langkah (titik) artikel, kode contoh ditambahkan dengan detail baru. Misalnya, di awal artikel tidak ada penanganan kesalahan, metode "klasik" ditunjukkan (seperti menggunakan GetLastError , konvensi sdtcall, dll.), yang diganti dengan yang lebih memadai di sepanjang artikel. Ini dilakukan dengan alasan bahwa desain "baru" ("tidak biasa") tidak menimbulkan pertanyaan. Jika tidak, dengan setiap contoh, seseorang harus memasukkan catatan dalam formulir: "ini dibahas dalam paragraf di bawah ini, tetapi itu - yang ini di sini." Bagaimanapun, di akhir artikel ada tautan ke kode yang sudah jadi yang ditulis dengan mempertimbangkan semua yang dikatakan dalam artikel. Anda tinggal mengambil dan menggunakannya. Dan artikel tersebut menjelaskan mengapa dan mengapa. Jika Anda tidak tertarik dengan "mengapa dan mengapa" - gulir ke akhir ke kesimpulan dan tautan untuk mengunduh contoh.

Satu dan yang paling kekuatan Lingkungan pemrograman Delphi adalah arsitektur terbuka, berkat Delphi yang memungkinkan semacam metaprogramming, memungkinkan Anda untuk "memprogram lingkungan pemrograman." Pendekatan ini membawa Delphi ke tingkat yang baru secara kualitatif dalam sistem pengembangan aplikasi dan memungkinkan Anda untuk menyematkan tambahan peralatan yang mendukung hampir semua tahapan pembuatan sistem aplikasi. Berbagai kemungkinan seperti itu terbuka berkat konsep yang disebut antarmuka terbuka yang diimplementasikan di Delphi, yang merupakan penghubung antara IDE (Integrated Development Environment) dan alat eksternal.

Artikel ini berfokus pada antarmuka terbuka Delphi dan memberikan gambaran umum tentang fitur yang mereka sediakan. Delphi mendefinisikan enam antarmuka publik: Antarmuka Alat, Antarmuka Desain, Antarmuka Ahli, Antarmuka File, Antarmuka Edit, dan Antarmuka Kontrol Versi. Tidak mungkin bahwa dalam kerangka artikel ini kami akan dapat membahas secara rinci dan menggambarkan kemungkinan masing-masing. Teks sumber Delphi akan membantu Anda untuk memahami masalah yang sedang dipertimbangkan secara lebih menyeluruh, karena pengembang telah memberi mereka komentar terperinci. Deklarasi kelas yang mewakili antarmuka publik terdapat dalam modul terkait di direktori ...\Delphi\Source\ToolsAPI. Antarmuka Desain (modul DsgnIntf.pas) menyediakan sarana untuk membuat editor properti dan editor komponen.

Editor properti dan komponen adalah topik yang layak untuk diskusi terpisah, jadi kami hanya ingat bahwa editor properti mengontrol perilaku Object Inspector saat Anda mencoba mengubah nilai properti terkait, dan editor komponen diaktifkan saat klik dua kali tombol kiri mouse pada gambar komponen ditempatkan pada formulir. Antarmuka Kontrol Versi (modul VCSIntf.pas) dirancang untuk membuat sistem kontrol versi. Dimulai dengan versi 2.0, Delphi mendukung sistem kontrol versi terintegrasi Intersolv PVCS, jadi dalam banyak kasus tidak perlu mengembangkan sistem Anda sendiri. Untuk alasan ini, kami juga akan menghilangkan pertimbangan Antarmuka Kontrol Versi. Antarmuka File (modul FileIntf.pas) memungkinkan Anda untuk mendefinisikan ulang sistem file kerja IDE, yang memungkinkan Anda memilih cara Anda sendiri untuk menyimpan file (dalam bidang Memo di server database, misalnya). Antarmuka Edit (modul EditIntf.pas) menyediakan akses ke buffer teks sumber, yang memungkinkan Anda untuk menganalisis dan menghasilkan kode, menentukan dan mengubah posisi kursor di jendela editor kode, dan mengontrol penyorotan sintaks teks sumber.

Kelas khusus menyediakan antarmuka ke komponen yang ditempatkan pada formulir (mendefinisikan jenis komponen, mendapatkan referensi ke komponen induk dan anak, mengakses properti, meneruskan fokus, menghapus, dll.), ke formulir itu sendiri, dan ke file sumber daya proyek. Antarmuka Edit juga memungkinkan Anda untuk mengidentifikasi apa yang disebut pemberi tahu modul yang menentukan reaksi terhadap peristiwa seperti mengubah kode sumber modul, memodifikasi formulir, mengganti nama komponen, menyimpan, mengganti nama atau menghapus modul, mengubah sumber daya proyek file, dll. Antarmuka Alat (modul ToolIntf. pas) memberi pengembang sarana untuk mendapatkan informasi Umum tentang keadaan IDE dan melakukan tindakan seperti membuka, menyimpan, dan menutup proyek, dan file individu, membuat modul, mendapatkan informasi tentang proyek saat ini (jumlah modul dan formulir, namanya, dll.), mendaftar berkas sistem, organisasi antarmuka ke modul individual, dll. Selain pemberi tahu modul, Antarmuka Alat mendefinisikan pemberi tahu tambahan yang memberi tahu tentang peristiwa seperti membuka/menutup file dan proyek, memuat dan menyimpan file desktop proyek, menambahkan/mengecualikan modul proyek, menginstal/menghapus paket, mengkompilasi proyek, dan di Tidak seperti pemberi tahu modular, pemberi tahu tambahan memungkinkan Anda untuk membatalkan eksekusi beberapa acara.

Selain itu, Antarmuka Alat menyediakan sarana untuk mengakses menu utama Delphi IDE, memungkinkan Anda untuk menyematkan item tambahan di dalamnya. Antarmuka Pakar (modul ExptIntf.pas) adalah dasar untuk membuat Expert Advisors - modul perangkat lunak, tertanam dalam IDE untuk memperluas fungsinya. Contoh ahli adalah Delphi Database Form Wizard, yang menghasilkan formulir untuk melihat dan memodifikasi isi tabel database. Setelah mendefinisikan kelas pakar, kita perlu memastikan bahwa Delphi “belajar” tentang pakar kita. Untuk melakukan ini, itu harus didaftarkan dengan memanggil prosedur RegisterLibraryExpert, meneruskannya sebagai turunan dari kelas ahli sebagai parameter. Sebagai ilustrasi, mari kita buat pakar sederhana dalam gaya esStandard, yang, ketika item menu Delphi yang sesuai dipilih, menampilkan pesan bahwa itu sedang berjalan. Seperti yang Anda lihat dari tabel di atas, gaya esStandard memerlukan enam metode untuk diganti:

Agar pakar "diaktifkan", Anda harus memilih item menu Component/Install Component ... , pilih modul yang berisi pakar (dalam kasus kami exmpl_01.pas) dalam dialog Browse, klik OK, dan setelah kompilasi paket dclusr30.dpk di menu utama Delphi di bagian Bantuan, item Ahli Sederhana 1 akan muncul, ketika dipilih, pesan informasi "Pakar Standar dimulai!" muncul. Mengapa Delphi menempatkan item menu ahli di bagian Bantuan tetap menjadi misteri. Jika Anda tidak menyukai fakta bahwa item menu muncul di mana saja di Delphi, dan bukan di tempat yang Anda inginkan, opsi berikut dimungkinkan: buat pakar gaya add-in, yang menghilangkan pembuatan otomatis item menu, dan tambahkan item menu "secara manual" menggunakan Antarmuka Alat. Ini akan memungkinkan Anda untuk mengatur lokasi item baru di menu utama dengan cara yang sewenang-wenang.

Untuk menambahkan item menu, kelas TIToolServices digunakan - dasar dari Antarmuka Alat - dan kelas TIMainMenuIntf, TIMenuItemIntf yang mengimplementasikan antarmuka ke menu utama IDE dan itemnya. Instance ToolServices dari kelas TIToolServices dibuat oleh IDE itu sendiri ketika diinisialisasi. Perhatikan bahwa pengembang bertanggung jawab untuk merilis antarmuka ke menu utama Delphi dan itemnya. Sepanjang jalan, mari kita sedikit memperumit beban fungsional Expert Advisor: ketika item menunya diaktifkan, itu akan mengeluarkan sertifikat tentang nama proyek yang dibuka di saat ini di lingkungan: Dalam contoh ini, tempat sentral ditempati oleh fungsi AddIDEMenuItem, yang menambahkan item menu ke menu utama IDE Delphi. Sebagai parameter, teks item menu baru dilewatkan, pengidentifikasinya, pengidentifikasi item sebelum item baru dimasukkan, representasi simbolis dari kunci, yang, bersama-sama dengan tombol Ctrl dapat digunakan untuk akses cepat ke item baru, dan event handler yang sesuai dengan pemilihan item baru. Kami telah menambahkan item menu baru ke bagian View sebelum item Watches.

Sekarang mari kita berkenalan dengan pemberi tahu. Mari kita tentukan pemberi tahu tambahan yang melacak momen penutupan/pembukaan proyek dan menyesuaikan bidang yang menyimpan nama yang sesuai proyek aktif(Saya akan menghilangkan implementasi metode yang tidak berubah dibandingkan dengan contoh sebelumnya untuk singkatnya): Untuk mengimplementasikan notifier, kami mendefinisikan kelas TAddInNotifier, yang merupakan turunan dari TIAddInNotifier, dan mengganti metode FileNotification. IDE akan memanggil metode ini setiap kali terjadi peristiwa yang dapat ditanggapi oleh pemberi tahu tambahan (setiap peristiwa tersebut dilambangkan dengan konstanta tipe TFileNotification yang sesuai). Bidang Pakar di kelas TAddInNotifier digunakan untuk masukan dengan ahli (metode TAddInNotifier.FileNotification). Dalam destruktor ahli, pendaftaran pemberi notifikasi tidak terdaftar dan pemberi notifikasi dimusnahkan. Sekarang mari kita ilustrasikan penggunaan pemberitahuan modular. Mari buat pakar add-in yang menghasilkan pesan tentang setiap tindakan menyimpan file proyek (untuk singkatnya, kami tidak menyediakan penerapan metode yang sudah akrab bagi kami): Dalam contoh ini, pakar add-in memantau peristiwa yang terkait dengan pembukaan/penutupan proyek.

Setiap kali proyek dibuka, pemberi tahu modul yang sesuai dengan file proyek didaftarkan. Dalam hal implementasi, pemberi tahu modular mirip dengan pemberi tahu tambahan: kami mendefinisikan kelas TModuleNotifier yang merupakan turunan dari TIModuleNotifier dan mengganti metode Notify dan ComponentRenamed-nya. IDE memanggil metode Notify ketika peristiwa tertentu yang terkait dengan modul ini terjadi; di dalam metode ini, reaksi terhadap peristiwa tertentu ditentukan. Metode ComponentRenamed dipanggil ketika nama komponen yang ada di formulir modul berubah. Harap dicatat bahwa kami tidak menggunakan metode ini, tetapi kami harus menimpanya, jika tidak, ketika nama komponen berubah, metode abstrak dari kelas dasar akan dipanggil, yang mengarah pada konsekuensi yang tidak terduga.

Mendaftarkan pemberi notifikasi modul agak lebih rumit daripada mendaftarkan add-in pemberi notifikasi: pertama kita mendapatkan antarmuka modul (TIModuleInterface) dan kemudian mendaftarkan pemberi notifikasi menggunakan antarmuka modul. Ketika proyek ditutup, pemberi tahu modul tidak terdaftar (sekali lagi menggunakan TIModuleInterface) dan pemberi tahu dihancurkan. Sebagai kesimpulan, kami akan menunjukkan bagaimana Anda dapat menentukan posisi kursor di jendela editor kode. Mari kita buat Expert Advisor yang, ketika item menu yang sesuai dipilih, akan menampilkan pesan yang berisi nama file aktif dan posisi kursor di dalamnya (diberikan implementasi hanya metode yang penting untuk contoh ini): Untuk menentukan posisi kursor, kita harus menerima urutan antarmuka berikut: antarmuka modul (TIModuleInterface); antarmuka editor kode (TIEditorInterface); antarmuka tampilan modul di jendela editor (TIEditView).

Jika file aktif dengan teks sumber (*.pas) aktif saat memilih item menu ahli, maka akan ditampilkan pesan yang berisi nama file aktif dan posisi kursor saat ini di dalamnya. Jika file aktif bukan file pas, tidak ada pesan yang dikeluarkan. Metode GetCurrentFile dari kelas TIToolServices digunakan untuk mendapatkan nama file yang aktif. Ini menyimpulkan diskusi kami tentang cara menggunakan antarmuka publik. CD-ROM berisi kode sumber untuk semua contoh yang diberikan. CD-ROM juga berisi contoh yang lebih kompleks dan diperluas yang berisi ahli tambahan yang memungkinkan pengguna untuk menandai kode sumber modul Delphi. Panduan cepat untuk menginstal dan menggunakan Ahli Bookmark terdapat dalam file bkmrks97.htm. Jadi, dalam artikel ini, antarmuka publik dibahas secara umum dan contoh penggunaannya diberikan. Sekali lagi, berkat ketersediaan kode sumber antarmuka terbuka, Anda dapat dengan mudah memahami detail yang menarik bagi Anda. Kami berharap berbagai kesempatan yang diberikan antarmuka terbuka, akan memberi Anda lebih dari satu ide yang berani dan berguna.