Metode dasar penulisan kontrol di Delphi
Sebagai seorang programmer Delphi, jika Anda ingin lebih meningkatkan level pemrograman Anda, Anda harus menguasai cara menulis kontrol. Artikel ini akan menggunakan contoh sederhana untuk memperkenalkan beberapa metode dan pola dasar penulisan kontrol untuk pemula.
Contoh kontrol ini disebut TLeiLabel, dan menambahkan dua fungsi praktis berdasarkan TLabel: satu untuk membuat teks memiliki bentuk tiga dimensi, dan yang lainnya adalah membuat teks memiliki atribut hyperlink. Mari kita terapkan fungsi-fungsi ini langkah demi langkah.
1. Membuat teks berbentuk tiga dimensi
Pertama tentukan tipe T3DEffect dan atribut Style3D sebagai berikut:
T3DEffect=(Normal, Dinaikkan, Diturunkan, Dibayangi);
PROperty Style3D:T3Deffect baca FStyle3D tulis SetStyle3D default Normal;
Kemudian tentukan variabel secara pribadi: "FStyle3D:T3DEffect;" dan atur metode SetStyle3D() sebagai berikut.
prosedur TLeiLabel.SetStyle3D(Nilai: T3DEffect);
mulai
jika nilai FStyle3D <> maka
mulai
FStyle3D := nilai;
invalidate; //Menunjukkan bahwa kontrol akan digambar ulang
akhir;
akhir;
Selain itu, untuk teks dengan bayangan, offset bayangan, ShadeXOffSet dan ShadeYOffSet, harus ditentukan:
properti ShadowXOffSet: bilangan bulat baca FXOffSet tulis SetFXOffSet default 5;
properti ShadowYOffSet: bilangan bulat baca FYOffSet tulis SetFYOffSet default -5;
Metode penulisan SetFXOffSet() dan SetFYOffSet() mirip dengan SetStyle3D() di atas.
Untuk menggambar ulang kontrol, biasanya Anda perlu membebani metode Paint secara berlebihan. Di sini kita hanya menggambar ulang teksnya.
Deklarasi DoDrawText ditempatkan di Protected:
procedure DoDrawText(var Rect: TRect; Flags: Longint);
Di sini DoDrawText() menggambar teks yang berbeda menurut empat jenis (normal, timbul, tersembunyi, dan bayangan).
2. Jadikan teks memiliki atribut hyperlink
Tentukan URL atribut untuk mewakili URL atau alamat email yang akan ditautkan.
URL Properti: String baca FURL tulis SetURL;
Tulis metode SetURL sebagai berikut:
procedure TLeiLabel.SetURL(Nilai: String);
Mulai
jika FURL <> Nilai maka FURL := Nilai ;
jika BULU <> ' maka
Kursor := crHandPoint;
akhir;
Saat mengklik Label ini, Anda perlu membuka browser atau alat pengiriman dan penerimaan email, yang memerlukan metode Klik yang membebani.
Klik Prosedur;
prosedur TLeiLabel.Klik;
var s: tali;
Mulai
Klik yang Diwarisi;
jika FURL = 'lalu keluar;
jika Huruf Kecil(Salin(FURL,1,7)) = 'http://' maka
s := BULU
else if Pos('@',FURL) <> 0 Lalu
s := 'mailto:' + BULU
kalau tidak
s := 'http://' + BULU;
ShellExecute(application.Handle, 'open', PChar(s), NIL, NIL, SW_SHOWNORMAL);
akhir;
Untuk hyperlink umum, warna teks berubah ketika mouse digerakkan ke dalamnya. Untuk tujuan ini, tambahkan atribut HoverColor, yang menunjukkan warna teks saat mouse digerakkan.
Properti HoverColor : TColor Baca FHoverColor Tulis SetHoverColor default clRed;
Tentukan juga dua prosedur yang menerima pesan Windows CM_MOUSEENTER dan CM_MOUSELEAVE (mouse masuk dan keluar):
Prosedur CMMouseEnter(var Pesan: TMessage); pesan CM_MOUSEENTER;
Prosedur CMMouseLeave(var Pesan: TMessage); pesan CM_MOUSELEAVE;
Prosedur TLeiLabel.CMMouseEnter (Pesan Var: TMessage);
mulai
Jika Diaktifkan dan Terlihat dan getParentForm(Self).Active maka
mulai
FFontColor := Font.Warna;
//Simpan warna teks
Font.Warna := FHoverColor;
//Ubah warna teks
Akhir;
akhir;
Prosedur TLeiLabel.CMMouseLeave (Pesan Var: TMessage);
mulai
Font.Warna:=FFontColor;
//Kembalikan warna asli teks
akhir;
Untuk menetapkan nilai default atribut, kita juga perlu membebani konstruktor Create(). Perhatikan bahwa konstruktor kelas leluhur harus dipanggil terlebih dahulu saat membebani konstruktor. Program untuk membebani konstruk Create() adalah sebagai berikut:
konstruktor TLeiLabel.Create(Pemilik: TComponent);
mulai
Warisan Buat(Pemilik);
//Konstruktor kelas leluhur harus dipanggil terlebih dahulu
FStyle3D := Biasa;
FXOffSet := 5;
FYOffSet := -5;
FHoverColor := clMerah;
akhir;
Terakhir, sebuah ikon harus ditambahkan ke kontrol ini. Kita dapat menggunakan Image Editor di Delphi untuk membuat bitmap Bitmap 24×24 dan menyimpannya sebagai file DCR. Nama file harus sama dengan nama file Pas kontrolnya nama dan huruf besar semua.