Cara Berkomunikasi Antara Bentuk

Bentuk modal menawarkan fitur spesifik yang tidak dapat kita miliki saat menampilkan non-modally. Paling umum, kami akan menampilkan formulir untuk mengisolasi prosesnya dari apa pun yang mungkin terjadi pada formulir utama. Setelah proses ini selesai, Anda mungkin ingin tahu apakah pengguna menekan tombol Simpan atau Batal untuk menutup formulir modal. Anda dapat menulis beberapa kode yang menarik untuk mencapai ini, tetapi tidak harus sulit. Delphi memasok formulir modal dengan properti ModalResult, yang bisa kita baca untuk mengetahui bagaimana pengguna keluar dari formulir.

Kode berikut mengembalikan hasil, tetapi rutinitas panggilan mengabaikannya:

var
F: TForm2; mulai
F: = TForm2.Create (nol); F.ShowModal; F. Lepaskan; ...

Contoh yang ditunjukkan di atas hanya menunjukkan formulir, memungkinkan pengguna melakukan sesuatu dengannya, lalu melepaskannya. Untuk memeriksa bagaimana formulir dihentikan, kita perlu memanfaatkan fakta bahwa metode ShowModal adalah fungsi yang mengembalikan salah satu dari beberapa nilai ModalResult. Ubah jalurnya

instagram viewer

F.ShowModal

untuk

jika F.ShowModal = mrOk kemudian

Kami membutuhkan beberapa kode dalam bentuk modal untuk mengatur apa pun yang ingin kami ambil. Ada lebih dari satu cara untuk mendapatkan ModalResult karena TForm bukan satu-satunya komponen yang memiliki properti ModalResult - TButton juga memilikinya.

Mari kita lihat ModalResult TButton terlebih dahulu. Mulai proyek baru, dan tambahkan satu formulir tambahan (menu Utama Delphi IDE: File -> New -> Form). Formulir baru ini akan memiliki nama 'Form2'. Selanjutnya tambahkan TButton (Nama: 'Button1') ke form utama (Form1), klik dua kali tombol baru dan masukkan kode berikut:

prosedur TForm1.Button1Click (Pengirim: TObject); var f: TForm2; mulai
f: = TForm2.Create (nol); mencobajika f. ShowModal = mrOk kemudian
Keterangan: = 'Ya'
lain
Keterangan: = 'Tidak'; akhirnya
f. Melepaskan; akhir; akhir;

Sekarang pilih formulir tambahan. Berikan dua TButtons, beri label 'Simpan' (Nama: 'btnSave'; Keterangan: 'Simpan') dan yang lainnya 'Batal' (Nama: 'btnCancel'; Keterangan: 'Batal'). Pilih tombol Simpan dan tekan F4 untuk membuka Object Inspector, gulir ke atas / bawah sampai Anda menemukan ModalResult properti dan atur ke mrOk. Kembali ke formulir dan pilih tombol Batal, tekan F4, pilih ModalResult properti, dan atur ke mrCancel.

Sesederhana itu. Sekarang tekan F9 untuk menjalankan proyek. (Tergantung pada pengaturan lingkungan Anda, Delphi mungkin meminta untuk menyimpan file.) Setelah formulir utama muncul, tekan Button1 yang Anda tambahkan sebelumnya, untuk menampilkan formulir anak. Ketika formulir anak muncul, tekan tombol Simpan dan formulir ditutup, setelah kembali ke catatan formulir utama bahwa keterangannya mengatakan "Ya". Tekan tombol form utama untuk memunculkan form anak lagi tapi kali ini tekan tombol Batal (atau menu Sistem Tutup item atau tombol [x] di area teks). Judul form utama akan bertuliskan "Tidak".

Bagaimana cara kerjanya? Untuk mengetahuinya, lihat acara Click for TButton (dari StdCtrls.pas):

prosedur TButton. Klik; var Formulir: TCustomForm; mulai
Formulir: = GetParentForm (Mandiri); jika Formulir nihil kemudian
Bentuk. ModalResult: = ModalResult; mewarisi Klik; akhir;

Yang terjadi adalah bahwa Pemilik (dalam hal ini bentuk sekunder) dari TButton mendapatkan ModalResult yang ditetapkan sesuai dengan nilai ModalResult TButton. Jika Anda tidak mengatur TButton. ModalResult, maka nilainya mrNone (secara default). Bahkan jika TButton ditempatkan pada kontrol lain, formulir induk masih digunakan untuk mengatur hasilnya. Baris terakhir kemudian memanggil acara Click yang diwarisi dari kelas leluhurnya.

Untuk memahami apa yang terjadi dengan Forms ModalResult, ada baiknya meninjau kode di Forms.pas, yang harus Anda temukan di.. \ DelphiN \ Source (di mana N mewakili nomor versi).

Dalam fungsi ShowModal TForm, langsung setelah formulir ditampilkan, Ulangi-Sampai loop dimulai, yang terus memeriksa variabel ModalResult untuk menjadi nilai yang lebih besar dari nol. Ketika ini terjadi, kode terakhir menutup formulir.

Anda bisa mengatur ModalResult saat desain, seperti yang dijelaskan di atas, tetapi Anda juga bisa mengatur properti ModalResult formulir secara langsung dalam kode saat run-time.

instagram story viewer