http://www.netgocn.com Asli
Semua tombol tidak memiliki warna dalam program Windows standar. Oleh karena itu, semua komponen tombol yang disediakan oleh Delphi juga tidak memiliki atribut warna.
Di sini saya menyediakan metode untuk membuat tombol amonium dengan atribut warna menggunakan komponen khusus. Ubah warna sesuka hati selama tahap desain, sama seperti komponen yang disediakan oleh Delphi sendiri (kode dalam artikel ini dilakukan di bawah Delphi 4.0).
Langkah pertama
Buka Delphi, pilih opsi komponen/komponen baru dari menu, dan isi secara manual atau drop-down di kotak drop-down jenis leluhur dari kotak dialog pop-up akan menyelesaikannya berdasarkan ini. Sisa konten penulisan dalam kotak dialog akan diisi sesuka Anda, tetapi Anda harus mencatat bahwa nama kelas tidak dapat sama dengan nama kelas yang ada (termasuk Anda yang disesuaikan), dan Anda juga harus ingat bahwa itu ditentukan Lokasi instalasi komponen (konten di kotak drop-down halaman palet) dan lokasi penyimpanan file unit pada disk (konten kotak edit nama file unit), jika tidak di mana Anda akan menemukannya di masa mendatang Artikel ini mengambil nilai default Delphi tbutton1 sebagai nama kelas.
Langkah 2
Setelah menyelesaikan pekerjaan di atas, tekan tombol OK di bawah ini dan Delphi akan secara otomatis menghasilkan kode komponen dasar untuk Anda. (Artikel ini hanya dihapus. Semua komentar yang dihasilkan secara otomatis) harus disimpan.
Langkah 3
Tambahkan kode kami dalam kerangka kode di atas, tentu saja ini adalah pekerjaan utama yang ingin kami lakukan.
1. Ubah bagian Definisi Jenis Data dari file unit yang dihasilkan secara otomatis oleh Delphi ke:
jenis
Tbutton1 = kelas (tbutton)
Pribadi
Fcolor: tcolor;
Fcanvas: tcanvas;
Isfocused: boolean;
prosedur setColor (nilai: tcolor);
Prosedur Cndrawitem (Pesan Var: Twmdrawitem);
terlindung
Prosedur CreateParams (Var Params: TCreateParams);
Prosedur setButtonStyle (Adefault: Boolean);
publik
Constructor Create (Aowner: TComponent);
Destructor menghancurkan;
diterbitkan
Warna Properti: Tcolor Baca fcolor tulis setColor default clwhite;
akhir;
menjelaskan:
A.
b.
c. Baca domain data pribadi dari atribut dan metode tulis setColor dari atribut harus ditempatkan di segmen pribadi (pribadi). Buat kelas mereka tidak dapat diakses di luar.
2. Daftar proses otomatis Delphi dapat mengabaikannya. Setelah badan prosesnya, kami secara manual menambahkan kode berikut sebelum akhir.
// *** Konstruktor ************************************** ** **********
konstruktor tbutton1.create (Aowner: tComponent);
Mulai
warisan create (aowner);
Fcanvas: = tcanvas.create;
Fcolor: = clwhite; // warna default
akhir;
// *** Destructor **************************************** ********
Destructor tbutton1.destroy;
Mulai
Fcanvas.free;
warisan warisan;
akhir;
// *** Untuk menentukan gaya tombol, tombol harus didefinisikan ulang sebagai tombol yang ditarik sendiri ***********************
Prosedur tbutton1.createParams (var params: tcreateParams);
Mulai
warisan createParams (params);
dengan params do style: = style atau bs_ownerdraw;
akhir;
// *** Metode Penulisan Atribut ************************************ ********* *******
Prosedur tbutton1.setColor (nilai: tcolor);
Mulai
Fcolor: = nilai;
Membatalkan;
akhir;
// *** Set Status Tombol ************************************** ****** ****
Prosedur tbutton1.setButtonStyle (adefault: boolean);
Mulai
Jika adefault <> terfokus pada saat itu
Mulai
Isfocused: = adefault;
Menyegarkan;
akhir;
akhir;
// *** Tombol gambar ************************************* ******
Prosedur tbutton1.cndrawitem (pesan var: twmdrawitem);
var
IsDown, isDefault: boolean;
Arect: Trect;
Bendera: Longint;
DrawItemstruct: tdrawitemstruct;
wh: tsize;
Mulai
DrawItemstruct: = message.drawitemstruct^;
Fcanvas.handle: = drawitemstruct.hdc;
Arect: = clientrect;
dengan drawItemstruct do
Mulai
ISDOWN: = ItemState dan ODS_SELECTED <> 0;
IsDefault: = ItemState dan ODS_FOCUS <> 0;
akhir;
Bendera: = dfcs_buttonpush atau dfcs_adjustrect;
jika isdown maka bendera: = flags atau dfcs_pushed;
Jika drawItemstruct.ItemState dan ODS_DISABLED <> 0 lalu
Bendera: = Flags atau dfcs_inactive;
Jika teriakan atau ISDefault maka
Mulai
// Gambarlah status saat tombol mendapat fokus
Fcanvas.pen.color: = clwindowframe;
Fcanvas.pen.width: = 1;
Fcanvas.brush.style: = bsclear;
Fcanvas.rectangle (arect.left, arect.top, arect.right, arect.bottom);
Inflaterect (arect, -1, -1);
akhir;
Fcanvas.pen.color: = clbtnshadow;
Fcanvas.pen.width: = 1;
Fcanvas.brush.color: = fcolor;
Jika ISdown maka mulailah
// Gambar status saat tombol ditekan
Fcanvas.rectangle (arect.left, arect.top, arect.right, arect.bottom);
Inflaterect (arect, -1, -1);
akhir yang lain
// Gambarlah tombol yang tidak tertekan
DrawframeControl (drawItemsTruct.hdc, arect, dfc_button, bendera);
Fcanvas.fillrect (arect);
// Gambar konten teks teks
Fcanvas.font: = self.font;
Arect: = clientrect;
wh: = fcanvas.textextent (caption);
Fcanvas.pen.width: = 1;
Fcanvas.brush.style: = bsclear;
Jika tidak diaktifkan maka
Mulai // Saat tombol gagal, Anda harus menggambar teks teks sekali lagi
Fcanvas.font.color: = clbtnhighlight;
Fcanvas.textout ((lebar div 2)-(wh.cx div 2) +1,
(Tinggi Div 2)-(wh.cy div 2) +1,
Keterangan);
Fcanvas.font.color: = clbtnshadow;
akhir;
Fcanvas.textout ((lebar div 2)-(wh.cx div 2), (tinggi div 2)-(wh.cy div 2), keterangan);
// Gambar garis putus -putus dari bingkai dalam saat Anda mendapatkan fokus
Jika terfokus dan isDefault maka
Mulai
Arect: = clientrect;
Inflaterect (arect, -4, -4);
Fcanvas.pen.color: = clwindowframe;
Fcanvas.brush.color: = fcolor;
Drawfocusrect (fcanvas.handle, arect);
akhir;
Fcanvas.handle: = 0;
akhir;
// ** akhirnya **************************************** ****************
akhir.
Langkah 4: Setelah memeriksa, mengonfirmasi bahwa kesalahannya benar, pilih opsi komponen/instalasi menu Delphi. komponen.
Jika Anda mengikuti artikel ini sepenuhnya, setelah menyusun dan menginstal dengan benar, Anda dapat menemukan tombol dengan ikon yang sama seperti Tbutton di tab Sampel dari label komponen Delphi. Buat proyek baru dan tempatkan tombol ini yang kami gunakan pada formulir. Bagaimana dengan itu? Melalui properti warnanya, Anda mengatur warnanya sesuka hati.
Akhirnya, metode menggambar tombol dalam artikel ini mengadopsi metode menggambar yang sama seperti Delphi's Tbutton untuk mencapai penampilan tindakan yang sama dengan tombol Delphi. Namun, jika Anda ingin bermain, Anda dapat menggambar teks dan grafik apa pun di kanvas fcanvas yang ingin Anda ungkapkan kepribadian Anda.
Jika Anda memiliki pertanyaan, silakan kirim surat atau tinggalkan pesan.
Selamat datang untuk mencoba perangkat lunak situs ini: Netgocn (jaringan)