Bahasa komputer telah berkembang dari bahasa mesin menjadi bahasa tingkat tinggi, dari kompleks menjadi sederhana (sebenarnya tidak sederhana), yang mencerminkan perkembangan ilmu dan teknologi komputer. Semakin maju bahasa komputer, semakin abstrak dan manusiawi, semakin sedikit hubungannya dengan perangkat keras tingkat rendah, dan semakin nyaman digunakan. Namun betapapun canggihnya bahasa komputer, itu merupakan abstraksi dari lapisan sistem operasi, sehingga kita selalu dapat mengetahui kaidah dibalik pemahaman bahasa tingkat tinggi, yaitu: kode-kode yang ditulis dalam bahasa tingkat tinggi hanyalah untuk menggambarkan kebutuhan masyarakat, dan kode-kode tersebut harus melalui " Penerjemah " yang menerjemahkannya ke dalam bentuk bahasa mesin agar dapat dikenali dan dieksekusi oleh komputer. Ada dua yang disebut metode penerjemahan: satu adalah metode kompilasi, di mana kode dibuat terlebih dahulu dalam bahasa mesin oleh kompiler, dan kemudian dijadwalkan dan dieksekusi oleh sistem operasi, seperti bahasa Delphi, bahasa C++, dll. ; yang lainnya adalah metode interpretasi, yang merupakan keunggulan dalam perhitungan. Interpretasi dan eksekusi tidak mempengaruhi program target, seperti bahasa dasar, bahasa scripting, dll. Ciri-ciri metode interpretasi adalah kecepatan lari yang lambat dan kebutuhan perangkat keras komputer yang relatif tinggi.
Bahasa komputer mendefinisikan aturan yang menggambarkan kebutuhan masyarakat. Di belakang bahasa terdapat compiler atau interpreter. Tugas utama seorang compiler atau interpreter adalah menerjemahkan kode dan menjadi saluran utama komunikasi antara manusia dan komputer. Dengan cara ini, ketika sistem operasi tetap tidak berubah, berbagai alat pengembangan menunjukkan kemampuan uniknya, namun pada akhirnya mereka harus menghasilkan kode yang dapat dieksekusi komputer. Oleh karena itu, tidak peduli bahasa komputer apa yang digunakan untuk menulis suatu program, baik atau buruknya sangat bergantung pada compiler atau interpreter bahasa tersebut. Kompiler Delphi masih merupakan kompiler tercanggih, terbaik dan paling efisien di dunia.
Dilihat dari karakteristik bahasa tingkat tinggi, mereka pada dasarnya merangkum antarmuka layanan yang disediakan oleh sistem operasi, dan menambahkan fitur bahasa mereka sendiri atas dasar ini, seperti OOP, pointer, mode manajemen memori, dll.
Dari keseluruhan arsitektur bahasa Delphi, saat kita menulis program, kita menggunakan VCL secara langsung, memanggil API yang disediakan oleh sistem operasi, menggunakan layanan Com, atau langsung menggunakan bahasa assembly untuk menyelesaikan pekerjaan kita.
Inti dan hal terhebat tentang Delphi adalah Perpustakaan Komponen Visual (VCL - Visual Component Library) dan perpustakaan komponen lintas platform (CLX - aComponent Library for Cross-Platform), yang mirip dengan Microsoft MFC, namun arsitekturnya setidaknya dua hingga tiga tahun lebih maju dari MFC Tiga generasi. Saat memprogram di Delphi, Anda dapat memilih VCL atau tidak memulai dari awal. Misalkan Anda menulis sebuah program yang membuat jendela dan menampilkan "Halo dunia". Jika Anda tidak menggunakan VCL, maka Anda harus memulai dengan memanggil CreateWindow dari API. Ini adalah hal yang merepotkan, tetapi itu tergantung pada kebutuhan Anda. Hal ini hanya menunjukkan bahwa bukan tidak mungkin menggunakan pemrograman Delphi tanpa VCL, seperti program konsol.
VCL adalah perpustakaan kelas yang kuat, yang merupakan esensi dan kristalisasi fitur berorientasi objek bahasa Delphi. Struktur diagram kelasnya adalah sebagai berikut:
Ini adalah struktur diagram kelas yang disingkat, tetapi sangat representatif. Dari diagram kelas, kita dapat melihat bahwa VCL hanya memiliki satu root - TObjct, dan setiap kelas turunannya hanya memiliki satu leluhur. Ini adalah fitur berorientasi objek dari bahasa Delphi. Nenek moyang paling asli dari semua kelas adalah TObjcet, dan metode pewarisannya adalah pewarisan tunggal. Yang perlu dijelaskan adalah:
l Meskipun desain VCL klasik dan besar, jangan terintimidasi oleh hal ini. Terus terang, ini adalah perpustakaan kelas. Ini adalah perpustakaan kelas di mana banyak kelas terkait disatukan untuk menyelesaikan fungsi tertentu. Kelas-kelas ini merangkum API Windows, memanggil layanan Windows COM, atau menggunakan perakitan untuk beroperasi secara langsung. Seperti disebutkan sebelumnya, kita dapat menulis program dengan atau tanpa VCL, yang berarti VCL tidak diperlukan. Jika perlu, kita dapat mewarisi dan memperluas kelas mana pun untuk menjadikannya kelas yang memenuhi kebutuhan kita. Misalnya, jika kita ingin memperluas kelas TPanal, peristiwa terkait (OnMouseEnter/OnMouseLeave) dapat dipicu saat mouse masuk dan keluar, seperti fungsi panel QQ.
u Buat unit baru dari [File]->[Baru]->[Unit].
u Tulis kode sebagai berikut, lalu simpan unit sebagai MyPanelUnit.
unit Unit Panel Saya;
antarmuka
menggunakan Kelas, ExtCtrls, Pesan, Kontrol;
jenis
TMouseActionEvent = Prosedur(Pengirim: TObject) objek;
TMyPanel = kelas(TPanel)
pribadi
FOnMouseEnter, FOnMouseLeave:
Acara Aksi Fouse;
//Mencegat pesan entri mouse
prosedur WMMouseEnter (var Pesan:
Pesan); pesan CM_MOUSEENTER;
//Mencegat pesan gerakan mouse
prosedur WMMouseLeave (var Pesan:
Pesan); pesan CM_MOUSELEAVE;
diterbitkan
properti OnMouseEnter: TMouseActionEvent dibaca
FOnMouseEnter tulis FOnMouseEnter;
properti OnMouseLeave: TMouseActionEvent dibaca
FOnMouseLeave tulis FOnMouseLeave;
akhir;
//Perhatikan bahwa "R" pada "Register" harus menggunakan huruf kapital. Ini adalah satu-satunya tempat dalam bahasa Delphi yang memerlukan perhatian pada ukurannya.
prosedur Daftar;
pelaksanaan
{TMyPanel}
prosedur Daftar;
mulai
//Daftarkan komponen di IDE Delphi dan tampilkan di panel "MyControl"
RegisterComponents('Kontrol Saya', [TMyPanel]);
akhir;
procedure TMyPanel.WMMouseEnter(var Pesan: TMessage);
mulai
//Tentukan apakah ada kode saat mouse masuk, dan apakah dieksekusi
jika Ditugaskan(FOnMouseEnter) lalu
FOnMouseEnter(Mandiri);
akhir;
procedure TMyPanel.WMMouseLeave(var Pesan: TMessage);
mulai
//Tentukan apakah ada kode saat mouse masuk, dan apakah dieksekusi
jika Ditugaskan(FOnMouseLeave) lalu
FOnMouseLeave(Diri);
akhir;
akhir.
u Lalu klik [Komponen]->[Instal Komponen…], seperti yang ditunjukkan di bawah ini:
Pilih unit yang baru kita buat, MyPanelUnit.pas, di "Nama file unit" dan biarkan opsi lain sebagai default. Kemudian klik "OK", pilih "Ya" di "Paket dclusr.bpk akan dibuat lalu diinstal, Lanjutkan?" dan simpan setelah kompilasi dan instalasi. Gulir panel kontrol Delphi sampai akhir, dan Anda akan melihat halaman kontrol MyControl seperti gambar di bawah ini:
u Kemudian buat proyek baru, klik [File]->[New]->[application], seret MyPanel dari halaman MyControl ke Form, tekan tombol F11, dan beralih ke halaman Events, sebagai berikut:
Bandingkan dengan TPanel untuk melihat apakah ada lebih banyak acara OnMouseEnter dan OnMouseLeave. Klik dua kali OnMouseEnter dan tulis kode seperti berikut:
prosedur TForm1.MyPanel1MouseEnter(Pengirim: TObject);
mulai
ShowMessage('Mouse masuk ke MyPanel1');
akhir;
Lalu tekan F9 untuk menjalankan, gerakkan mouse ke MyPanel1, dan lihat hasilnya.
Sesederhana itu. Kami memperluas TPanel agar memiliki kemampuan untuk menangani peristiwa masuk dan penghapusan mouse, sehingga VCL tidak misterius. Siapa pun dapat menulis ulang komponen (kelas) di dalamnya untuk menjadikannya sesuai keinginan mereka.
l Delphi mendukung pewarisan antarmuka, yang dalam arti tertentu mengimplementasikan pewarisan berganda. Misalnya, TComponent didefinisikan sebagai berikut:
TComponent = kelas(TPersisten, IInterface,
Referensi Komponen Antarmuka)
l Jangan membuat instance kelas abstrak. Selama salah satu metode dalam suatu kelas adalah metode abstrak, maka kelas tersebut adalah kelas abstrak. Misalnya, TStrings didefinisikan sebagai berikut:
TSstream = kelas(TObjek)
pribadi
…
terlindung
…
publik
fungsi Baca(var Buffer; Hitung: Longint): virtual;
fungsi Tulis(const Buffer; Hitung: Longint): Longint;
…
akhir;
Selama ada kata kunci abstrak dalam definisi suatu metode, maka itu adalah metode abstrak. Tidak ada gunanya menggunakan kelas abstrak untuk membuat sebuah instance, karena Baca dan Tulis tidak diimplementasikan, dan sebuah contoh akan muncul jika dipanggil.
(Belum selesai, silakan merujuk ke Di Balik Layar Delphi---Referensi Pemula Bagian 2 (2))
(Jika Anda perlu mencetak ulang, harap sebutkan sumber dan penulisnya http://haitian.myrice.com)