Komponen visual sebenarnya adalah kelas. Tetapi untuk menulis kontrol, Anda harus menggunakan paket. Pilih baru dari menu file dan buat paket baru. Ini adalah paket yang digunakan untuk menyimpan dan menginstal kontrol. Kemudian klik tombol Tambah di jendela paket untuk menambahkan komponen (unit).
Pilih komponen baru di bagian atas kotak dialog pop-up. Karena semua atribut, metode, dan peristiwa kontrol tidak dapat disusun dengan sendirinya, Anda perlu memilih kelas leluhur (atau "kelas induk" atau "kelas dasar") dan kemudian menambahkan atribut, metode, dan peristiwa Anda sendiri. . Pilih kelas leluhur yang diinginkan di kotak drop-down setelah jenis leluhur. Karena Anda harus menggambar dengan menulis kontrol visual, TgraphicControl dipilih sebagai kelas leluhur. Kemudian masukkan nama kontrol baru (kelas) di kotak nama kelas, yang biasanya dimulai dengan "T". Halaman palet digunakan untuk memilih nama halaman kontrol dari kontrol baru di jendela Delphi, seperti "standar", yang dapat diambil sendiri. Tambahkan jalur dan nama file file kontrol baru di nama file unit dan klik tombol OK. Kontrol baru ditambahkan. Sekarang Anda dapat menulis kode untuk kontrol ini.
Berikut ini adalah contoh penulisan bilah gulir yang dapat menyesuaikan gambar untuk menggambarkan cara menulis kontrol visual.
Ikuti metode di atas, pilih TgraphicControl sebagai kelas leluhur, dan nama kontrol baru adalah TpighorizontalsCroller (scrollbar babi horizontal). Setelah memilih jalur file dan nama file, klik tombol OK untuk mulai menulis kode.
Setiap kontrol akan dibuat dan dihapus, jadi Anda harus terlebih dahulu menulis dua proses ini. Untuk setiap proses dalam kontrol, itu harus didefinisikan terlebih dahulu dan kemudian ditulis nanti. Ada tiga jenis proses atau atribut yang didefinisikan:
1. Yang didefinisikan setelah pribadi digunakan secara internal untuk kontrol, dan orang yang menggunakan kontrol tidak dapat melihatnya;
2. Apa yang didefinisikan setelah dilindungi umumnya tidak terlihat, dan hanya dapat dilihat ketika orang lain menggunakan kontrol sebagai kelas leluhur untuk menulis kontrol lain;
3. Hanya orang lain yang dapat dipanggil dalam program setelah publik;
4. Yang ditentukan setelah penerbitan dapat dilihat di jendela properti (Inspektur Objek). Karena proses penciptaan dan penghapusan tidak hanya dieksekusi secara otomatis ketika kontrol dibuat selama proses pemrograman, itu juga dapat dipanggil ketika kontrol dibuat secara dinamis selama program berjalan, sehingga didefinisikan setelah publik⑴. (Nomor urutan ini menunjukkan lokasi kode dalam program sumber terlampir, yang sama di bawah) sekarang, mungkin saya tidak tahu apa yang harus ditulis dalam dua proses ini dan cara mengeditnya. Kami akan membicarakannya di bawah ini.
Pertama -tama mari kita tambahkan beberapa properti ke kontrol ini. Kami mendefinisikan properti maks untuk mengatur atau membaca nilai maksimum scrollbar. Karena atribut tidak digunakan secara langsung dalam program, Anda perlu mendefinisikan variabel yang sesuai dengan atribut, saat memodifikasi atau membaca nilainya. Karena hanya digunakan di dalam kontrol, kami mendefinisikannya setelah pribadi ⑵. (Secara umum, variabel yang terkait dengan atribut dimulai dengan "F", seperti Fmax) setelah mendefinisikan variabel, tentukan atribut. Properti ini perlu terlihat di jendela Inspektur Objek, jadi tentukan dan publikasikan setelah ⑶. Sintaks yang ditentukan adalah:
Properti <Properti Nama Properti>: <eype> baca <variabel responsif saat membaca properti ini> Tulis <variabel responsif atau proses saat menulis properti ini>
Variabel dan atribut lain juga didefinisikan secara serupa (seperti nilai minimum min, nilai arus saat ini, dll.). Di bawah ini kami mendefinisikan beberapa atribut dan variabel untuk mengatur gambar scrollbar (karena variabel gambar itu istimewa, saya akan membicarakannya secara terpisah). Kami mendefinisikan LeftButtonEpture (gambar tombol kiri), LeftButtondownPicture (gambar tekan tombol kiri) dan sebagainya sebagai tipe TBITMAP (harus menentukan variabel yang sesuai).
Setiap orang harus memperhatikan bahwa dalam program sumber terlampir, ketika mendefinisikan properti ini, variabel yang sesuai saat membaca properti yang ditentukan setelah membaca adalah f ..., dan variabel yang sesuai saat menulis properti yang ditentukan setelah menulis bukan variabel, tetapi sesuatu seperti Setel…, ini proses khusus. Proses sebagai fungsi ini didefinisikan sebagai:
Prosedur <Name Proses> (Nilai: <Jenis Nilai Properti Set>)
Karena hal -hal lain perlu dilakukan saat menulis atribut kelas ini, itu tidak dapat diproses hanya dengan satu variabel, tetapi harus diproses dengan suatu proses. Proses ini umumnya didefinisikan setelah dilindungi. Dalam proses kelas ini, pernyataan seperti ini di ⑷ digunakan untuk menetapkan nilai ke variabel tipe tbitmap, yang diadopsi karena variabel jenis ini tidak dapat ditetapkan secara langsung.
Setelah mendefinisikan sifat -sifat variabel tipe TbitMap ini, kode perlu ditulis dalam proses CREATE dan Hancurkan yang disebutkan di atas. Karena tbitmap juga merupakan kelas, itu harus dibuat dalam proses create ⑸, dan gratis harus dirilis selama proses destro. Pernyataan warisan yang dimaksud di sini digunakan untuk menunjukkan bahwa proses ini diwarisi dari kelas leluhur. (Ini tidak boleh dijatuhkan).
Karena kami menulis kontrol visual, kami harus menggambar pada kontrol. Kelas leluhur dari kontrol kami, tgraphiccontrol, merangkum objek kanvas, yang dapat kami gunakan langsung untuk menggambar. Jika Anda tidak terbiasa dengan penggunaan kanvas, yang terbaik adalah menemukan buku untuk membacanya.
Pekerjaan berikut adalah menggambar. Bagaimana cara menggambar pada kontrol? Ada peristiwa cat di kelas leluhur TgraphicControl, yang secara otomatis akan memicu ketika kontrol perlu dicat ulang. Yang harus kita lakukan sekarang adalah menulis program untuk acara ini. Pertama, tentukan objek kanvas setelah dilindungi. Karena sudah ada di kelas leluhur, tidak perlu menambahkan penjelasan⑻. Kami akan menggunakan objek ini untuk menggambar. Selanjutnya, Anda perlu mendefinisikan proses cat dan menulis kode untuk menarik kontrol. Pertama -tama tentukan proses cat di depan umum. Karena dipicu oleh kelas leluhur, bukan oleh pengguna, override harus ditambahkan setelah itu, jika tidak kontrol tidak akan menjadi kontrol visual karena prosedur cat tidak akan pernah dipanggil. Mari kita tulis kode untuk proses cat⑽.
Variabel seperti T_HEIGHT dalam proses cat dari program sumber yang terlampir pada artikel ini digunakan untuk menyimpan ukuran tombol, slider, dll. Di bilah gulir. , yang sebagian besar benar, saya percaya semua orang akan memahami pengoperasian kanvas sekilas. Perlu dicatat bahwa penilaian berikut pada variabel yang di fautisasi⑾
Fautosize adalah variabel boolean yang terkait dengan properti yang diandalkan kontrol. Perhatikan bahwa dalam kode kontrol, atribut tidak dipanggil secara langsung, tetapi variabel yang sesuai digunakan.
Setelah program disusun di sini, bahkan jika saya akhirnya mencari kontrol baru saya, itu tidak dapat menggulir. Sekarang mari kita tulis acara mouse sehingga kita dapat memanipulasinya. Definisi proses acara mouse sangat mirip dengan proses cat, kecuali bahwa deskripsi parameter harus ditambahkan nanti.
Peristiwa tikus dibagi menjadi mousedown, mousemove dan mouseup, dan override harus ditambahkan setelah definisi. Selanjutnya tulis kodenya nanti. Catatan: Acara mouse di sini adalah mouse ..., bukan onmouse yang biasa .... Tapi untuk apa definisi dalam ⒀? Definisi acara di sini adalah semua yang digunakan pengguna, yaitu, saat menggunakan kontrol ini, mereka akan ditampilkan di halaman acara di Inspektur Objek.
Kode untuk acara mouse ini juga sangat sederhana. Perlu dicatat bahwa ketika memanggil acara khusus, Anda harus terlebih dahulu menggunakan pernyataan seperti itu di ⒁ untuk menentukan apakah pengguna memiliki kode tertulis untuk acara tersebut. Ini sangat penting, jika tidak kesalahan akan terjadi dalam panggilan.
Setiap orang telah memperhatikan bahwa peristiwa yang disebut sekarang semuanya disesuaikan, dan metode definisi sangat sederhana, yang mirip dengan atribut definisi, tetapi tnotifyevent saat diketik.
TnotifyEvent adalah acara default, yang didefinisikan sebagai:
TnotifyEvent = Prosedur (pengirim: Tobject)
Jika Anda ingin mendefinisikan bentuk acara lain, Anda harus melakukan ini: pertama -tama tuliskan dalam jenis dan kemudian
<Event type name> = Prosedur (<marameter>: <ype>)
Misalnya:
Tcustomevent = prosedur (a: integer; b: string);
Kemudian setelah definisi publik:
<Event name>: <event type name>
Misalnya:
Anevent: tcustomevent;
Setelah membaca ini, Anda harus memahami seluruh program. Jika ada kesalahan dalam kompilasi atau operasi, silakan periksa poin -poin berikut:
1. Apakah ada pernyataan yang diwariskan dalam proses Create and Destroy;
2. apakah variabel tipe tbitmap membuat dan gratis dibuat atau gratis;
3. Apakah ada nama kontrol sebelum proses, misalnya: tpighorizontalscroller.mosemove
Bagaimana menentukan apakah mouse masuk atau meninggalkan kontrol:
Tentukan proses berikut:
Prosedur MouseEnter (Var MSG: TMessage);
Prosedur mouseleave (var msg: tmessage);
Cukup tulis kode di bawah ini!
Metode ini sangat berguna untuk menulis tombol tiga negara!