Windows dapat memetakan beberapa monitor ke dalam desktop virtual, memungkinkan kami menggunakan ini untuk merancang aplikasi yang mudah dipekerjakan. Misalnya, PowerPoint sepenuhnya memanfaatkan keunggulan monitor ganda (sebagian besar laptop mendukungnya). . Jadi bagaimana kita mengembangkan aplikasi seperti itu? Artikel ini akan menunjukkan kepada Anda jika Anda menerapkan aplikasi menggunakan beberapa monitor menggunakan Delphi.
Windows juga mendukung metode tampilan kloning, dan setiap monitor menghasilkan konten yang sama, yang masuk akal untuk beberapa aplikasi. Meskipun beberapa kartu grafis juga mendukung dua monitor, mereka tidak benar-benar multi-display, tetapi mode tampilan resolusi tinggi virtual (seperti 2048 × 768 atau 1024 × 1536), yang menampilkan layar menjadi dua monitor melalui kartu grafis. Tak satu pun dari dua mode tampilan ini yang diperkenalkan Zhongdian dalam artikel ini, dan mereka juga sangat sederhana, jadi kami tidak akan mengulanginya lagi.
Windows mendukung hingga 10 monitor, dan peta Windows semua monitor menjadi desktop virtual yang besar. Layar dapat dipahami sebagai tampilan sebagian desktop. Layar ini dapat disusun secara sewenang -wenang di properti tampilan sesuai dengan lokasi fisik layar. Jika monitor diatur secara tidak teratur, beberapa bagian desktop virtual mungkin tidak ditampilkan pada kedua monitor. Agar tidak membuat formulir muncul di antara dua monitor, Windows menggunakan tampilan sebagai monitor utama. Ketika komputer dimulai, kotak dialog login ditampilkan di monitor utama. Sebagian besar tampilan startup program akan ditampilkan di monitor utama.
Menurut pengantar di atas, tidak sulit untuk menemukan beberapa konsep penting: desktop, monitor, monitor utama, dll. Pertama, pertama -tama kita harus mencari tahu konsep -konsep ini dan hubungan mereka sebelumnya. Ini adalah kunci untuk menguasai metode pengembangan aplikasi multi-display. Setelah Anda memahami konsep -konsep ini, bagian -bagian lain akan sangat mudah dimengerti.
Desktop sebenarnya mengacu pada area logis yang dapat ditampilkan Windows. Bahkan, suatu formulir dapat ditampilkan di luar desktop. Namun, ini tidak berarti bahwa semua bagian desktop akan ditampilkan pada monitor tertentu (alasannya seperti yang disebutkan sebelumnya); tetapi sebaliknya, konten yang ditampilkan oleh monitor apa pun harus menjadi bagian dari desktop.
Desktop adalah area persegi panjang yang menggambarkan ukuran desktop dengan koordinat verteksnya (atas, kiri) dan lebar dan tinggi. Mengapa Anda masih membutuhkan koordinat vertex? Karena koordinat titik tidak diterima begitu saja (0,0). Jadi dimana (0,0)? Ini cerita yang panjang, jadi mari kita tinjau konsep yang disebutkan sekarang - monitor utama. Windows ingin program umum ditampilkan pada monitor utama di awal, karena orang terbiasa memperhatikan monitor yang paling dekat dengan mereka. Windows tidak dapat memaksa pengguna untuk menggunakan monitor paling kiri sebagai monitor utama, sehingga aplikasi perlu khawatir tentang perhitungan untuk menampilkan diri pada monitor utama. Namun, sebagian besar pengguna hanya memiliki satu monitor (dua monitor mengambil terlalu banyak ruang), dan aplikasi biasa tidak ingin menghabiskan banyak upaya untuk menghitung di mana monitor utama berada dan di mana mereka harus ditampilkan. Jadi Windows mengusulkan solusi yang masuk akal: Gunakan koordinat titik tampilan utama sebagai asal sistem koordinat. Dengan cara ini, program biasa perlu mempertimbangkan masalah dalam satu lingkungan monitor.
Monitor adalah pandangan sebagian dari desktop. Ini seperti melihat pemandangan di luar jendela melalui jendela, berdiri di depan jendela yang berbeda, Anda dapat melihat gambar yang berbeda. Demikian pula, layar juga merupakan area persegi panjang, dan dimensinya juga dapat dijelaskan oleh koordinat verteks (atas, kiri) dan lebar dan tinggi. Koordinat verteks relatif terhadap asal sistem koordinat desktop, yaitu, ke simpul tampilan utama.
Konsep ruang kerja relatif sederhana.
Windows menyediakan satu set API untuk pengembangan aplikasi multi-display. VCL merangkum API ini dan mengintegrasikannya ke dalam seluruh kerangka kerja secara alami, membuatnya sangat mudah untuk mengembangkan aplikasi multi-display. Berikut ini adalah konten terkait.
VCL yang paling akrab mungkin adalah Tcustomform, yang merupakan kelas dasar dari semua bentuk. Properti Posisi Tcustomform digunakan untuk mengatur posisi aktual dari formulir. dari tampilan utama; Jika properti ini diatur ke Podesktopcenter dan program berjalan pada sistem dengan beberapa monitor, maka jendela ini akan ditampilkan di antara kedua monitor, menyebabkan masalah yang tidak perlu bagi pengguna. Oleh karena itu, bahkan jika program kami tidak dirancang untuk multi-display, nilai ini harus ditangani dengan cermat. Properti lain adalah DefaultMonitor, yang memiliki fungsi yang mirip dengan posisi, yang menentukan mana yang memantau jendela pada awalnya ditampilkan. Ini memiliki empat nilai alternatif: dmdesktop, dmprimary, dmMAintForm, dan dmactiveForm. Makna mereka adalah sebagai berikut:
Nilai | Arti |
dmdesktop | Tidak ada perlakuan khusus |
dmprimary | Tampilkan formulir pada monitor pertama. Ini adalah jebakan lain, secara harfiah monitor utama, dan pada kenyataannya mengacu pada layar. Monitor [0] Monitor. |
DMMAINFORM | Tampilkan formulir ke monitor tempat formulir utama berada |
DMactiveForm | Tunjukkan formulir ke monitor di mana bentuk aktif terletak di desktop |
TCUSTOMFORM juga memiliki monitor Properti Umum Read-only (tanpa dipublikasikan), yang menyediakan referensi untuk mengakses contoh di mana formulir berada.
Jadi, bagaimana Anda memindahkan formulir di antara tampilan yang berbeda? Ini tidak sulit, mungkin Anda juga memikirkannya. Berikut dua metode:
Pertama, Anda dapat mengatur bagian atas dan kiri TcustomForm untuk menampilkan formulir di mana saja di desktop. Seperti yang disebutkan sebelumnya, desktop terdiri dari semua monitor. Mereka memiliki sistem koordinat yang umum, sehingga posisi formulir dapat ditentukan berdasarkan posisi logis tampilan. Pertanyaannya sekarang adalah bagaimana mendapatkan posisi logis dan ukuran masing -masing monitor, yang akan diperkenalkan nanti.
Kedua, Anda dapat memanggil metode tcustomForm yang dapat dipenuhi untuk menampilkan formulir sepenuhnya ke tampilan yang ditentukan. Metode ini dapat digunakan untuk mencegah jendela menampilkan bagian dari masing -masing dua monitor.
Kami hanya mengajukan pertanyaan: Bagaimana cara mendapatkan posisi logis dan ukuran setiap monitor. Untuk menjawab pertanyaan ini, kita perlu memperkenalkan kategori lain: tscreen dan tmonitor.
Tscreen menjelaskan beberapa informasi yang terkait dengan perangkat tampilan, dan kami terutama peduli dengan informasi yang terkait dengan posisi logis dan ukuran tampilan. Aspek lain dapat ditemukan dalam dokumentasi Delphi. Saat program berjalan, VCL secara otomatis membuat instance TScreen - variabel global, jadi biasanya program tidak perlu membuat instantiate TScreen.
Tscreen memiliki satu set properti yang berbentuk seperti desktop*, yang menggambarkan ukuran seluruh desktop dan koordinat setiap simpul. Ada juga sejumlah properti yang sangat penting untuk pengembangan aplikasi multi-monitor: monitorcount dan monitor. Melalui dua properti ini, kita dapat menyebutkan semua contoh monitor (tmonitor) dalam sistem.
Di antara banyak sifat TScreen, kami akan menemukan dua sifat: tinggi dan lebar. Berhati -hatilah karena tidak mengacu pada ukuran seluruh desktop, tetapi ketinggian dan lebar tampilan utama. Ini sangat mudah untuk membuat orang merasa ilusi bahwa mereka tidak dapat memikirkan ukuran seluruh desktop. Demikian pula, ada satu set properti yang berbentuk seperti workarea*, yang menggambarkan ukuran area kerja tampilan utama dan koordinat setiap titik. Apakah menurut Anda ada sesuatu yang hilang? Mengapa sifat -sifat posisi relatif dari monitor utama tidak didapat? Alasannya seperti yang disebutkan sebelumnya: Windows menggunakan sudut kiri atas monitor utama sebagai asal sistem koordinat, sehingga posisi relatif monitor utama harus (0, 0).
Selain sifat -sifat ini, kami juga akan memperkenalkan tiga fungsi anggota TSCREEN: MonitorFrompoint, MonitorFromrect dan MonitorFromWindow. Seperti namanya, itu adalah contoh tampilan di mana koordinat, area tertentu, dan jendela tertentu berada. Ini juga dapat digunakan dalam pengembangan aktual.
Terbaik, mari kita lihat kelas TMonitor. Ini merangkum sifat yang relevan dari tampilan fisik-semua hanya baca. Tabel berikut secara singkat menjelaskan arti dari sifat-sifat ini, yang sangat berguna untuk menulis aplikasi multi-display:
milik | menjelaskan |
Menangani | Dapatkan pegangan jendela dari monitor ini |
Monitornum | Dapatkan Nomor Monitor |
Utama | Mendapat apakah monitor adalah monitor utama. Dan yang utama dengan hanya satu monitor adalah benar. |
Atas | Dapatkan batas atas monitor |
Kiri | Dapatkan perbatasan kiri monitor |
Tinggi | Dapatkan ketinggian monitor |
Lebar | Dapatkan lebar monitor |
BoundSrect | Dapatkan area desktop yang sesuai dari monitor, yang setara dengan empat properti di atas |
Workarearect | Dapatkan area yang sesuai dengan desktop ruang kerja monitor. |
Setelah pemahaman yang jelas tentang TScreen dan TMonitor, masalah sebelumnya secara alami akan diselesaikan. Pada titik ini, artikel ini telah membahas semua pengetahuan yang diperlukan untuk mengembangkan aplikasi multi-display. Saya yakin Anda dapat menggunakan pengetahuan ini untuk mengembangkan produk perangkat lunak yang sangat praktis.
Lampiran: Anda dapat mengunduh demo untuk membantu memahami artikel ini.