"Programmer pintar menggunakan Delphi!" Namun, bagaimanapun juga, ada beberapa ahli, dan pemula seperti saya ada di mana -mana, haha. Karena saya seorang pemula, saya secara alami memiliki banyak pertanyaan yang sangat bagus, seperti cara mengatur ini dan bagaimana menulisnya ... jadi, di bawah ini, saya akan membuat pidato ringkasan berdasarkan pengalaman kecil yang telah saya kumpulkan dan Pertanyaan kecil umum di forum.
== Aplikasi Sistem ==
A. Delphi telah mengganti sejumlah besar kontrol yang umum digunakan, seperti Delphi5, dan Delphi6 yang dirilis tahun ini adalah 1,5 kali lipat dari Delphi5. Dengan begitu banyak kontrol, bahkan pada resolusi 1024*768, mereka tidak dapat menampilkan semua panel komponen mereka, dan benar -benar tidak nyaman untuk menekan dua tombol kecil untuk menampilkan lebih banyak panel setiap kali! Namun, dengan menambahkan nilai kunci registri berikut, panel komponen dapat diperluas secara otomatis:
[Hkey_current_user/software/borland/delphi/x.0/ekstra]
"Autopaletteselect" = "1"
(Catatan: x.0 menunjukkan nomor versi delphi Anda; jika tidak ada kunci primer ekstra, cukup buat yang baru, sama di bawah)
B. Setiap kali saya membuat formulir baru dan kemudian mengatur font dan ukurannya ... itu benar -benar merepotkan! Kemudian tambahkan nilai kunci berikut dan biarkan sistem secara otomatis mengaturnya:
[Hkey_current_user/software/borland/delphi/x.0/formdesign]
"DefaultFont" = "宋体, 9, _"
(Catatan: _ mewakili ruang, dan juga dapat diganti dengan tebal (tebal) dll.)
C. Kustomisasi lingkungan kerja agar lebih cocok untuk Anda.
• Toolbar Pengaturan. Klik kanan pada bilah alat Delphi, pilih Kustomisasi, lalu pilih tombol yang diperlukan dan seret alat, dan seret yang tidak diinginkan. Apa yang sering saya gunakan adalah: terbuka, proyek terbuka, simpan, simpan semua, hapus, ulangi di bawah toolbar standar; Toolbar Palet Komponen.
• Atur tata letak jendela. Agar dapat menulis program secara efisien, penting untuk mengatur setiap jendela secara wajar. Windows yang biasa saya gunakan adalah: Inspektur Objek, Manajer Proyek (Lihat | Manajer Proyek), Daftar Tontonan (Jalankan | Tambahkan Watch ...).
Setelah menyiapkan setiap formulir, tekan tombol Simpan saat ini desktop pada toolbar desktop untuk disimpan.
• Atur warna tampilan. Buat warna kode lebih sesuai dengan kebiasaan Anda, yang kondusif untuk membersihkan pemikiran saat menulis. Alat | Opsi Editor Properti editor Buka, pilih tab Warna, dan atur warna kode. Berikut adalah beberapa yang umum digunakan:
Whitespace: Ruang kosong, yaitu latar belakang;
Komentar: Komentar;
Kata yang dicadangkan: kata -kata yang dicadangkan;
String: String;
Nomor: nomor;
Titik Eksekusi: Baris saat ini dieksekusi (yaitu, garis yang tiba ketika F7 masuk ke);
Istirahat yang diaktifkan: breakpoint;
Baris kesalahan: Terjadi garis kesalahan;
D. Menguasai beberapa tombol pintas dalam pemrograman Delphi dapat sangat meningkatkan efisiensi dan tidak akan membuat Anda bosan dengan terlalu banyak pengaturan membosankan. Berikut adalah beberapa kunci pintasan yang sering saya gunakan:
ESC: Pilih wadah komponen yang saat ini dipilih (biasanya panel, groupbox, formulir, dll.);
Kunci Ctrl+Panah: Memindahkan komponen yang dipilih dengan satu piksel;
Ctrl+shift+tombol panah: Pindahkan komponen yang dipilih dengan kisi besar (mirip dengan efek memegang pergeseran kembang api dan kemudian bergerak dengan tombol panah);
Shift+Dragon Keys: Sesuaikan ukuran komponen yang dipilih, satu piksel pada satu waktu;
Shift+Pilih Komponen: Tahan tombol Shift dan klik pada komponen dengan mouse.
Tombol Ctrl+Left Mouse: Gunakan fungsi lain dalam prosedur (seperti proses khusus). langsung pergi ke bagian implementasi dari fungsi ini yang disebut. Saya paling banyak menggunakan fungsi ini, membuatnya sangat nyaman bagi saya untuk menemukan modul!
Ctrl+Shift+C: Deklarasikan metode dalam suatu objek, lalu letakkan kursor di atasnya, tekan Ctrl+Shift+C untuk membangun kerangka dasar untuk implementasinya, seperti:
Tform1 = class (tform)
Pribadi
{Deklarasi Pribadi}
publik
{Deklarasi Publik}
Prosedur Tambang;
akhir;
Letakkan kursor pada baris ranjau prosedur, tekan Ctrl+Shift+C, dan kode berikut akan secara otomatis dimasukkan ke dalam unit:
Prosedur tform1.mine;
Mulai
akhir;
== Formulir Operasi ==
Dalam program dengan berbagai bentuk, Delphi default untuk membuat semuanya ketika program dimulai (hanya tersembunyi, hanya satu bentuk utama yang ditampilkan), sehingga bentuk -bentuk yang sementara tidak perlu untuk mulai menempati banyak ruang memori. Jadi kita perlu mentransfer formulir yang tidak dimulai untuk saat ini dari "Formulir Pembuatan Otomatis" ke "Formulir yang Tersedia" di bawah tab Formulir Proyek Menu | Opsi ... Dengan cara ini, pembuatan dan rilis formulir ini memerlukan kode untuk diimplementasikan.
A. Perbandingan dua cara untuk membuat formulir. Untuk formulir yang tidak dibuat secara otomatis ini, kita harus membuatnya sebelum tampilkan (self) atau buat (aplikasi). Misalnya, form2.creat (self) dan form2.create (aplikasi), tetapi apa perbedaan di antara mereka? Sebenarnya, tidak ada banyak perbedaan di antara keduanya.
Tetapi jika pemiliknya milik jendela atau kontrol lain, ketika pemiliknya dirilis, apa yang pemiliknya akan dirilis. Perbedaan utama adalah siapa yang mengelola sumber daya formulir. Dibuat dalam metode pertama, sumber daya formulir dikelola oleh programmer;
B. Beberapa cara untuk melepaskan formulir. Karena itu untuk menyimpan memori, formulir yang digunakan harus "memindahkan" memori. Di sini saya akan mencantumkan beberapa metode serupa:
(1)
Prosedur TFORM1.BUTTON1CLICK (Pengirim: Tobject);
Mulai
......
Jika form2 = nil lalu
Form2: = tform2.create (aplikasi);
Form2.showmodal;
......
akhir;
Prosedur tform2.close (pengirim: tobject; var action: tcloseaction);
Mulai
ModalResult: = mrnone;
Tindakan: = cafree;
Form2: = nil;
akhir;
(2)
Prosedur TFORM1.BUTTON1CLICK (Pengirim: Tobject);
Mulai
Jika tidak ditugaskan (form2) maka
Mulai
Application.createForm (tform2, form2);
mencoba
Form2.showmodal;
Akhirnya
Form2. Gelombang;
Form2: = nil;
akhir;
akhir
kalau tidak
Form2.showmodal;
akhir;
(3)
Prosedur tform22.button1click (pengirim: tobject);
Mulai
Form2.close;
Form2.release;
akhir;
== Penggunaan Kontrol
A. Paket kontrol RXLIB yang terkenal ditulis oleh tiga pakar Rusia dan sangat luar biasa! Namun, ada terlalu banyak konten, dan tidak mudah untuk menggunakannya dengan baik. Saya hanya akan mengatakan beberapa poin di sini ke rxrichedit.
• Banyak orang bertanya cara menginstal RXLIB, tampaknya agak rumit, haha, jadi saya juga akan mengatakannya:
Jalankan rxInst.exe untuk menginstal rxlib ke/file program/borland/delphi5 (atau 6)/rx folder, lalu buka delphi, pilih file/buka ..., dan putar rxctl5.dpk, rxdb5.dpk, rxbde5.dpk Setelah membuka , tekan kompilasi, lanjutkan untuk membuka: dclrx5.dpk, dclrxdb5.dpk dan dclrxbd5.dpk.
• mengizinkan properti. Pengaturan default Win98 adalah benar. Tetapi ketika salah, itu akan ditampilkan secara normal. Oleh karena itu, untuk kompatibilitas sistem, perlu untuk menentukan versi OS saat ini:
Prosedur tFormMain.FormCreate (pengirim: TOBJEKS);
var
OSVI: Osversioninfo;
......
Mulai
Osvi.dwosversioninfosize: = sizeof (osversionInfo);
GetVersionex (OSVI);
kasus osvi.dwplatformid dari
1: rxrichedit1.allowObjects: = true;
2: rxrichedit1.allowObjects: = false;
akhir;
.........
akhir;
Tapi saya tidak tahu mengapa atribut ini memiliki masalah seperti itu, jadi saya harap ahli akan memberi saya beberapa saran.
• Acara OnurlClick. RXRICHEDIT secara otomatis mengonversi alamat web halaman ke format hyperlink, tetapi perilaku spesifik masih membutuhkan kode penulisan dengan sendirinya, jika tidak alamat ini akan menjadi cangkang kosong:
Prosedur tFormMain.rxrichedit1UrlClick (pengirim: tobject; const urltext: string; tombol: tmousebutton);
Mulai
jika tombol = mbleft lalu
Shellexecute (pegangan, nil, pchar (urltext), nil, nil, sw_show);
akhir;
B. Untuk menyimpan memori dan mengoptimalkan operasi, kami selalu membuat komponen secara dinamis. Tetapi setelah menggunakannya, jika tidak dihapus dari memori dalam waktu, itu akan bertentangan dengan niat asli kami. Tapi bagaimana "membunuh" komponen yang dibuat? Ini hanya membebaskan ruang memori yang ditunjukkan oleh edit, tetapi pointer tidak diatur ke nihil. dihasilkan ... .mistake. Oleh karena itu, kita perlu nil pointer setelah edit gratis: = nil atau freeandnil (hanya valid di bawah delphi5) untuk memastikan operasi normal di masa depan.
C. Menampilkan teks cepat dari setiap kontrol pada baris status. Acara OnHint aplikasi ini dapat digunakan, tetapi karena aplikasi adalah objek yang tidak kompatibel, metode berikut dapat digunakan:
......
publik
Prosedur DisplayHint (Pengirim: Tobject); // Deklarasikan metode untuk menampilkan teks prompt
akhir;
......
Prosedur tform1.displayhint (pengirim: tobject); // bagian implementasi
Mulai
Statusbar1.simpletext: = getLongHint (application.hint);
akhir;
Prosedur TFORM1.FORMCREATE (Pengirim: Tobject);
Mulai
Application.onhint: = displayHint;
akhir;
Dengan cara ini teks yang ditampilkan di bilah status sama dengan kotak prompt (kotak kuning kecil yang secara otomatis muncul). Bagaimana jika Anda ingin teks prompt di bilah status lebih rinci? Faktanya, selama properti petunjuk dari kontrol ditulis seperti ini: myHint | Ini hanya myHint!, Konten sebelum "| "ditampilkan di bilah status. Sekarang.
D. Beberapa poin utama dalam penggunaan ListView. Berikut ini adalah ListView dua kolom sebagai contoh.
→ Tambahkan baris:
dengan ListView1 do
Mulai
ListItem: = items.add;
ListItem.Caption: = 'Konten Kolom Pertama';
Listitem.subitems.add ('konten kolom kedua');
akhir;
→ Clear ListView1:
ListView1.items.clear;
→ Dapatkan nomor baris baris yang saat ini dipilih dan hapus baris saat ini:
Untuk i: = 0 ke listView1.items.count-1 do
Jika ListView1.Items [i] .SPESTED LIKA LIK
Mulai
ListView1.items.delete (i); // hapus baris yang saat ini dipilih
akhir;
Tentu saja, ListView memiliki acara OnSelectItem, yang dapat menentukan baris mana yang Anda pilih dan tetapkan ke variabel global.
→ Pengoperasian membaca baris dan kolom:
Edit1.text: = listView1.items [i] .caption;
EDIT2.TEXT: = ListView1.Items [i] .subitems.strings [0];
Edit3.text: = listView1.Items [i] .subitems.strings [1];
Dengan analogi, seluruh kolom dapat dibaca menggunakan loop.
→ Pindahkan fokus ke atas satu baris:
Untuk i: = 0 ke listView1.items.count-1 do
If (listView1.items [i] .poelected) dan (i> 0) lalu
Mulai
ListView1.setFocus;
ListView1.items.item [i-1] .PoSTED: = true;
akhir;
Namun, di delphi6, ListView memiliki atribut itemIndex, jadi adil
ListView1.setFocus;
ListView1.ItemIndex: = 3;
Anda dapat mengatur fokus.
== Lainnya ==
• Untuk mengoptimalkan perangkat lunak dan membuatnya lebih sempurna, array dinamis sering digunakan saat menggunakan array. Saat menyatakan, seperti: a: array string, dan kemudian sebelum menggunakan array, setLength (a, 3) mengatur panjang array ke 3, yaitu, [0], a [1], a [2], Jadi itu saja. Ketika perlu untuk memperluas panjang array, lagi: Seclength (a, 5), lalu A [3] dan [4] ditambahkan, dan pada A [0], A [1], A [2] sebelumnya [2] Nilai, tidak akan dihapus; 2] secara otomatis dihapus dari memori. Catatan: Array dinamis dimulai dengan "0", jadi setelah setLength (a, 1) tinggi (a) = 0! Lai
Akhirnya, ketika array dinamis ini tidak lagi digunakan dan program belum keluar, untuk menghemat memori, menggunakan: A: = nil untuk melepaskan array ini, dan sekarang benar -benar mencapai "perlindungan hijau dan lingkungan" :)
• Pertanyaan "Bagaimana cara mendapatkan jalur ke program saat ini yang berjalan" sering dapat dilihat di forum. Memang, fungsi ini digunakan dari waktu ke waktu dalam pemrograman. Sebenarnya ada beberapa fungsi yang dapat mencapai efek ini:
→ getCurrentDirectory (): fungsi Winapi, penggunaan spesifik adalah sebagai berikut:
var
MyCurrentDir: Array [0..144] dari Char;
Mulai
GetCurrentDirectory (sizeof (MyCurrentDir), MyCurrentDir);
MyCurrentDir: = MyCurrentDir+'/mysoftname.exe';
akhir;
→ getCurrentDir (): Fungsi yang dienkapsulasi oleh getCurrentDirectory oleh Delphi, penggunaannya sederhana: mycurrentdir: = getCurrentDir. Format terakhir adalah: c:/windows/sistem
Ada juga fungsi yang dapat secara langsung mendapatkan jalur: ExtractFilePath (paramstr (0)), ExtractFilePath (Application.Exename), dll.
• Pesan shutdown sistem, restart, dll. Ini juga pertanyaan yang ditanyakan orang, dan saya akan menyebutkannya di sini:
Shutdown: exitwindowsex (ewx_shutdown, 32);
Restart: ExitWindowsex (EWX_ROBOT, 32);
Logout: exitwindowsex (ewx_logoff, 32);
Power off: ExitWindowsex (EWX_POWEROFF, 32);
• Di Delphi, selain menggunakan #39, bagaimana menangani "kutipan tunggal" dalam suatu program (seperti showmessage)? Baik '' 'dan' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'Yang yang ”yang” ”yang”' '' ' '' '' '' '' '' '' '' '' '' '' '' '' '' Faktanya, empat kutipan tunggal mewakili satu kutipan, yaitu, '' '', yang kedua dan ketiga menunjukkan bahwa ini adalah "'", dan yang pertama dan keempat menunjukkan bahwa ini adalah tipe karakter. Haha, sangat menarik :)
• Masalah -masalah Cina di Showmessage. Tombol-tombol di Showmessage semuanya ada dalam e-teks, yang membuat orang merasa tidak nyaman. Bahkan, setelah DIY kita, kita bisa membuat semuanya menjadi Cina.
Pertama, simpan proyek saat ini, dan kemudian pilih Project | Bahasa | Tambah ... Kotak Dialog Tambah Bahasa, pilih proyek yang Anda inginkan untuk orang Cina (Anda juga dapat menyesuaikan folder), selanjutnya; China), selanjutnya; Temukan item "const_smsgdlgok" dalam daftar, ubah pola "Cina (diterjemahkan)" menjadi "ok" (asli)), dan keluar setelah disimpan. Sekarang, jalankan program lagi, haha, apakah hanya tombol Cina?
Namun, kotak dialog pesan dari Showmessage sangat sederhana dan dapat ditampilkan kepada pengembang selama debugging sistem. Tetapi karena terlalu sederhana, saya sarankan untuk tidak menggunakan kotak dialog tersebut dalam versi resmi perangkat lunak. Selain itu, yang terbaik adalah menggunakan kotak pesan daripada showmessage untuk mengurangi ukuran perangkat lunak. Lai