Bagikan melalui


Tentang Kontrol Kalender Bulan

Kontrol kalender bulan mengimplementasikan antarmuka pengguna seperti kalender. Ini memberi pengguna metode yang sangat intuitif dan dapat dikenali untuk memasukkan atau memilih tanggal. Kontrol ini juga menyediakan aplikasi dengan sarana untuk mendapatkan dan mengatur informasi tanggal dalam kontrol menggunakan jenis data yang ada.

Fitur Kontrol Kalender Bulan

Cuplikan layar berikut menunjukkan kontrol kalender bulan yang telah berukuran untuk ditampilkan dua bulan.

screen shot of a dialog box with a month calendar control showing two months, side by side

Catatan

Tampilan dan perilaku kontrol kalender bulan sedikit berbeda di bawah versi pustaka run-time yang berbeda. Topik ini berfokus pada kontrol seperti yang muncul di Windows Vista dengan versi 6 Comctl32.dll.

 

Kontrol dalam ilustrasi memiliki fitur opsional berikut.

  • Tanggal saat ini ditampilkan pada baris terpisah di bagian bawah kontrol. Ini adalah gaya default.
  • "lingkaran hari ini" (sebenarnya persegi panjang dalam versi ini) muncul di sekitar hari ini, dan di samping baris "Hari Ini" sebagai istime integrasi visual. Ini adalah gaya default.
  • Angka minggu ditampilkan di sebelah kiri setiap baris hari. Gaya ini harus ditentukan.
  • Beberapa tanggal ditampilkan dalam huruf tebal, sesuai dengan status hari yang ditetapkan oleh aplikasi. Misalnya, tanggal yang memiliki rapat terjadwal mungkin ditampilkan dalam huruf tebal. Gaya ini harus ditentukan.

Catatan

Windows tidak mendukung tanggal sebelum 1601. Lihat FILETIME untuk detailnya.

Kontrol kalender bulan didasarkan pada kalender Gregorian, yang diperkenalkan pada tahun 1753. Ini tidak akan menghitung tanggal yang konsisten dengan kalender Julian yang digunakan sebelum 1753.

 

Memilih hari

Secara default, saat pengguna mengklik tombol panah di kiri atas atau kanan atas kontrol kalender bulan, kontrol memperbarui tampilannya untuk menampilkan bulan sebelumnya atau berikutnya. Pengguna juga dapat melakukan tindakan yang sama dengan mengklik bulan parsial yang ditampilkan sebelum bulan pertama dan setelah bulan lalu.

Perintah keyboard berikut juga dapat digunakan untuk memindahkan pilihan. Kalender selalu menggulir seperlunya untuk menampilkan hari yang dipilih. (kode kunci virtual ditampilkan dalam tabel.)

Perintah Deskripsi
Panah kiri (VK_LEFT) Pilih hari sebelumnya.
Panah kanan (VK_RIGHT) Pilih hari berikutnya.
Panah atas (VK_UP) Pilih hari yang sama di minggu sebelumnya.
Panah bawah (VK_DOWN) Pilih hari yang sama dalam minggu berikutnya.
PAGE UP (VK_PRIOR) Pilih hari yang sama di bulan sebelumnya. (Jika bulan tersebut tidak memiliki hari, hari terdekat dipilih; misalnya, pemilihan bergerak dari 31 Maret hingga 28 atau 29 Februari.)
PAGE DOWN (VK_NEXT) Pilih hari yang sama di bulan berikutnya.
BERANDA (VK_HOME) Pilih hari pertama bulan ini.
END (VK_END) Pilih hari terakhir bulan ini.
CTRL + BERANDA Gulir satu bulan ke belakang dan pilih hari di kolom paling kiri.
CTRL + END Gulir satu bulan ke depan dan pilih hari di kolom paling kanan.
CTRL + PAGE UP Pilih hari yang sama di bulan sebelumnya. Jumlah bulan yang dipindahkan oleh pemilihan adalah jumlah bulan yang ditampilkan dalam kontrol. Misalnya, jika dua bulan ditampilkan, pilihan akan berpindah dari 6 Juni ke 6 Mei.
CTRL + PAGE DOWN Pilih hari yang sama di bulan sebelumnya. Jumlah bulan yang dipindahkan oleh pemilihan adalah jumlah bulan yang ditampilkan dalam kontrol. Misalnya, jika dua bulan ditampilkan, pilihan akan berpindah dari 6 Juni hingga 6 Agustus.

 

Jika kontrol kalender bulan tidak menggunakan gaya MCS_NOTODAY , pengguna dapat kembali ke hari ini dengan mengklik teks "Hari Ini" di bagian bawah kontrol. Jika hari ini tidak terlihat, kontrol akan memperbarui tampilannya untuk menampilkannya.

Aplikasi dapat mengubah jumlah bulan di mana kontrol memperbarui tampilannya dengan menggunakan pesan MCM_SETMONTHDELTA atau makro yang sesuai, MonthCal_SetMonthDelta. Namun, tombol PAGE UP dan PAGE DOWN mengubah bulan yang dipilih satu per satu, terlepas dari jumlah bulan yang ditampilkan atau nilai yang ditetapkan oleh MCM_SETMONTHDELTA.

Memilih bulan yang tidak berdekatan

Saat pengguna mengklik nama bulan yang ditampilkan, semua bulan dalam setahun dicantumkan (dalam versi sebelumnya, ini adalah menu pop-up). Pengguna dapat memilih sebulan dalam daftar. Jika pilihan pengguna tidak terlihat, kontrol kalender bulan akan menggulir tampilannya untuk menampilkan bulan yang dipilih. Dalam cuplikan layar berikut, kontrol kalender bulan menunjukkan bulan dua tahun yang berdekatan.

screen shot of a dialog box with a month calendar control showing all the months of 2007 and 2008

Memilih tahun yang berbeda

Jika pengguna mengklik tahun, sekelompok tahun tercantum, dan pengguna dapat memilih yang berbeda, seperti yang ditunjukkan pada cuplikan layar berikut.

screen shot of a month calendar control showing all years from 1999 to 2020

Pelokalan

Kontrol kalender bulan mendapatkan formatnya dan semua string dari LOCALE_USER_DEFAULT.

Waktu dalam Kontrol Kalender Bulan

Kontrol kalender bulan tidak menampilkan waktu. Namun, struktur SYSTEMTIME yang digunakan untuk mengatur dan mengambil tanggal yang dipilih atau tanggal hari ini berisi bidang waktu. Ketika tanggal diatur secara terprogram, kontrol menyalin bidang waktu apa adanya atau memvalidasinya terlebih dahulu lalu, jika tidak valid, menyimpan waktu default saat ini. Berikut ini adalah daftar pesan yang mengatur tanggal dan deskripsi tentang bagaimana bidang waktu diperlakukan.

Pesan Deskripsi
MCM_SETCURSEL Kontrol menyalin bidang waktu apa adanya, tanpa validasi atau modifikasi.
MCM_SETRANGE Bidang waktu struktur yang diteruskan divalidasi. Jika valid, bidang waktu disalin tanpa modifikasi. Jika tidak valid, kontrol menyalin bidang waktu dari data saat ini.
MCM_SETSELRANGE Bidang waktu struktur yang diteruskan divalidasi. Jika valid, bidang waktu disalin tanpa modifikasi. Jika tidak valid, kontrol mempertahankan bidang waktu dari rentang pilihan saat ini.
MCM_SETTODAY Kontrol menyalin bidang waktu apa adanya, tanpa validasi atau modifikasi.

 

Ketika tanggal diambil dari kontrol, bidang waktu akan disalin dari waktu tersimpan tanpa modifikasi. Penanganan bidang waktu oleh kontrol disediakan sebagai kenyamanan untuk programmer. Kontrol tidak memeriksa atau memodifikasi bidang waktu sebagai hasil dari operasi apa pun selain yang tercantum di atas.