Cocok untuk pemula di Delphi, orang-orang dengan pengetahuan dan pengalaman yang berorientasi objek dalam pemrograman Java atau VC.
Kami sering melihat kode seperti ini di kelas Delphi: Properti Properti Properti Jenis Jenis Nama Baca String 1 Tulis String 2
Nama -nama atribut di sini mungkin berbeda. Semua ada dalam format ini: Nama properti Properti Baca String 1 Tulis String 2
Saya mengambil properti yang tersisa: Integer membaca setleft menulis fleft; Kiri adalah properti integer. Baca menyatakan variabel atau metode untuk mengakses variabel, dan menulis menyatakan variabel atau metode untuk mengakses saat memodifikasi variabel. Catatan: Ini bisa menjadi variabel atau metode. Ini variabel yang disebut Fleft. Untuk tujuan enkapsulasi, kami biasanya menempatkan variabel seperti itu di tengah -tengah pribadi.
FLEFT: Kode Integer (untuk kebiasaan penamaan, kami menyebutkan variabel seperti modal F sebelum nama atribut). Dengan cara ini, ketika Anda membaca properti, Anda sebenarnya mengakses nilai Fleft. Jadi, Anda dapat menulis beberapa metode untuk memodifikasi Flex dan secara tidak langsung memodifikasi nilai kiri. Lalu mari kita lihat setleft lagi penyataan:
Prosedur setleft (nilai: integer);
dan implementasi kode berikut:
Prosedur tconstrol.setleft (nilai: integer);
Mulai
SetBounds (nilai, ftop, fwidth, fheight);
Termasuk (fscalingflags, sfleft);
akhir;
Jika Anda menulis kode berikut untuk mengubah kiri: control1. Left: = 23, maka program memanggil fungsi setleft (23), setBounds adalah fungsi yang mengubah wilayah di sini Anda memahami manfaat dari enkapsulasi. Kiri, itu akan mengubah ukuran area menurut kiri baru, dan fungsi ini juga mengubah ukuran FLEFT.
Prosedur tconstrol.setbounds (aleft, atop, Awidth, Aheight: Integer);
Mulai
Jika checknewsize (Awidth, aheight) dan
((Aleft <> fleft) atau (di atas <> ftop) atau
(Awidth <> fwidth) atau (aheight <> fheight)) kemudian
Mulai
InvalidateControl (terlihat, salah);
Fleft: = aleft;
Ftop: = atop;
Fwidth: = awidth;
Fheight: = aheight;
UpdateAnchorules;
Membatalkan;
Lakukan (wm_windowposchanged, 0, 0);
Requestalign;
Jika tidak (csloading di ComponentState) maka ubah ukurannya;
akhir;
akhir;
Dengan cara ini bagian luar terlihat seperti nilai atribut hanya diubah melalui operasi penugasan. Baca dan tulis dapat berupa variabel, atau fungsi, tergantung pada desain Anda. Tentu saja Anda dapat menulis ini: Properti Properti Properti Jenis Nama Baca Variabel 1 Tulis Variabel 2. Variabel 1 dan variabel 2 bisa sama. Anda juga dapat melakukan Properti Properti Properti Properti Jenis Nama Baca Metode 1 Metode Tulis 2. Kombinasi apa pun untuk Anda. Tapi ada dua hal yang perlu diperhatikan:
1. Aturan penamaan paling baik didasarkan pada kebiasaan dan mudah dibaca.
2. Jika itu adalah variabel, jenisnya harus sama dengan jenis atribut.
Kami sering menggunakan atribut acara komponen, seperti peristiwa klik, tetapi sulit bagi kami untuk melihat dari permukaan bagaimana itu disebut dan bagaimana itu dipicu. Saya akan menjawab Anda di bawah.
Dalam Inspektur Objek Manajer Properti, kami melihat bahwa nama suatu metode sesuai dengan hak Halaman Acara OnClick. Bahkan, kita dapat memberikan acara komponen yang sesuai dengan metode sebelumnya. Ambil formulir sebagai contoh form1. Perhatikan bahwa parameter entri dari metode ini sangat penting, berikut adalah (pengirim: Tobject)
Mari kita gunakan TConstrol sebagai contoh, dan kami menemukan kode ini:
Properti Onmousedown: TmouseEvent membaca fonmousedown menulis fonmousedown;
TmouseEvent = Prosedur (pengirim: TOBJEKS; Tombol: TMousebutton; Shift: TshiftState; x, y: integer) objek;
Seperti yang Anda lihat, itu sebenarnya adalah fungsi, tetapi bagian biru membatasi parameter entri. Kemudian kami menetapkan Form1. Kemudian kami hanya menulis fungsi yang mencegat pesan mouse dan secara langsung atau tidak langsung memanggil fonmousedown, dan kemudian kami akan sesuai dengan pesan dan fungsi pemrosesan. Di sini, ada banyak lapisan yang secara tidak langsung disebut, yang memakan waktu dan melibatkan jenis pesan.
Berikut ini adalah proses panggilan tidak langsung.
Prosedur WMRBUTTONDBLCLK (Pesan VAR: TWMRBUTTONDBLCLK);
Prosedur tconstrol.wmrbuttondblclk (pesan var: twmrbuttondblclk);
Mulai
diwariskan;
Domousedown (pesan, mbright, [ssdouble]);
akhir;
Prosedur DomousEdown (VAR Pesan: Twmmouse; Tombol: Tmousebutton;
Shift: TshiftState);
Prosedur tconstrol.domousedown (pesan var: twmmouse; tombol: tmousebutton;
Shift: TshiftState);
Mulai
Jika tidak (csnostdevents in controlstyle) maka
dengan pesan lakukan
if (lebar> 32768) atau (tinggi> 32768)
dengan calccursorpos lakukan
Mousedown (tombol, keystoshiftstate (tombol) + shift, x, y)
kalau tidak
Mousedown (tombol, keystoshiftState (tombol) + shift, message.xpos, message.ypos);
akhir;
Prosedur mousedown (tombol: tmousebutton; shift: tshiftstate;
X, Y: Integer);
Prosedur tconstrol.mousedown (tombol: tmousebutton;
Shift: tshiftate; x, y: integer);
Mulai
jika ditugaskan (fonmousedown) maka fonmousedown (self, button, shift, x, y);
akhir;
Jika Anda menulis lebih banyak kelas Anda sendiri, Anda akan menemukan betapa nyamannya melakukan ini, tanpa menulis getleft, setleft seperti Java, dan kemudian menempatkan teks secara pribadi. dari mereka hanya memanggil control1.text untuk mengakses, control1.text: = 'string tertentu' untuk memodifikasi nilainya.
Dalam hal memproses pesan, kelas dasar menyatakan properti seperti onClick dan onmousedown sebagai dilindungi. tidak dapat mengungkapkannya.
Penelitian saya tidak dalam, harap perbaiki saya jika Anda tidak pantas :). Selamat datang di [email protected]