Kontrol

Kontrol adalah turunan dari kelas TControl atau asal sub kelasnya. Kontrol adalah komponen yang didefinisikan sebagai tambahan pada antarmuka pengguna. Kelas basis TControl mendefinisikan hubungan leluhur-anak diantara kontrol yang mencerminkan pengurungan hubungan diantara elemen antarmuka pengguna.

Susunan Kontrol

Kontrol dikaitkan satu sama lain melalui hubungan leluhur-anak. Setiap kontrol leluhur dapat memiliki beberapa kontrol anak. Kontrol leluhur bertugas terhadap transisi keadaan dari kontrol anaknya. Hasil dari kontrol anak biasanya dipakai untuk mengatur penampilan kontrol leluhur. Hubungan leluhur-anak membawa kontrol bersama ke dalam susunan kontrol. Halaman ada di akar dari susunan yang penampilannya di berikan kepada pengguna-akhir.

Hubungan leluhur-anak biasanya dilakukan oleh kerangka kerja melalui template. Dalam kode, Anda dapat menetapkan kontrol secara eksplisit sebagai anak dari yang lainnya menggunakan salah satu metode berikut, $parent->Controls->add($child); $parent->Controls[]=$child; di mana properti Controls merujuk ke koleksi kontrol anak dari leluhur.

Identifikasi Kontrol

Setiap kontrol mempunyai properti ID yang dapat secara unik dapat mengidentifikasi dirinya sendiri diantara kontrol keluarganya. Sebagai tambahan, setiap kontrol mempunyai UniqueID dan ClientID yang dapat dipakai untuk mengidentifikasi kontrol secara global dalam susunan di mana kontrol berada. UniqueID dan ClientID sangat mirip. Pembentuk dipakai oleh kerangka kerja guna menentukan lokasi dari kontrol terkait dalam susunan, sementara yang kedua sebagian besar dipakai pada sisi klien sebagai ID tag HTML. Secara umum, Anda tidak boleh bergantung pada bentuk eksplisit UniqueID atau ClientID.

Wadah Penamaan

Setiap kontrol mempunyai wadah penamaan yang mana kontrol membuat ruang nama (namespace) unik untuk membedakan antara kontrol dengan ID yang sama. Sebagai contoh, kontrol TRepeater membuat multipel item masing-masing mempunyai kontrol anak dengan ID yang sama. Untuk membedakan kontrol anak ini, setiap item bertindak sebagai wadah penamaan. Oleh karena itu, kontrol anak dapat diidentifikasi secara unik menggunakan wadah penamaan ID bersama dengan ID-nya sendiri. Seperti yang mungkin sudah Anda mengerti, UniqueID dan ClientID bergantung pada wadah penamaan.

Kontrol dapat bertindak sebagai wadah penamaan jika ia menerapkan antarmuka INamingContainer.

ViewState dan ControlState

HTTP adalah protokol tidak berkondisi, berarti ia tidak menyediakan fungsionalitas untuk mendukung interaksi berlanjut antara pengguna dan server. Setiap permintaan dianggap sebagai diskrit dan berdiri sendiri dari yang lainnya. Aplikasi Web, sering perlu untuk mengetahui apa yang telah dilakukan pengguna dalam permintaan sebelumnya. Selanjutnya orang memperkenalkan sesi guna membantu mengingat informasi kondisi seperti itu.

PRADO meminjam konsep viewstate dan controlstate dari Microsoft ASP.NET guna menyediakan tambahan mekanisme pemrograman berkondisi. Penyimpanan nilai dalam viewstate atau controlstate mungkin tersedia untuk permintaan berikutnya jika permintaan baru dari submisi (disebut postback) ke halamanyang sama oleh pengguna yang sama. Perbedaan antara viewstate dan controlstate adalah bahwa pembentuk dapat dimatikan saat yang kemudian tidak bisa.

Viewstate dan controlstate diterapkan dalam TControl. Biasanya dipakai untuk mendefinisikan berbagai properti kontrol. Untuk menyimpan dan mengambil nilai dari viewstate atau controlstate, gunakan metode berikut, $this->getViewState('Name',$defaultValue); $this->setViewState('Name',$value,$defaultValue); $this->getControlState('Name',$defaultValue); $this->setControlState('Name',$value,$defaultValue); di mana $this merujuk ke turunan kontrol, Name merujuk ke kunci yang mengidentifikasi nilai pasti, $defaultValue adalah opsional. Ketika mengambil nilai dari viewstate atau controlstate, jika kunci terkait tidak ada, nilai standar akan diberikan.