MDI ÖZELLİKLİ FORMLAR

Visual Basic uygulamaları aynı anda birden fazla pencereyi açık tutma imkanı vardır. Gerektiğinde birden fazla pencereyi açık tutmaya imkan vermek için şimdiye kadar projelerde kullanılan formlardan farklı olarak MDI (Multi Document Interface) adı verilen çoklu formlar kullanılır. Üzerinde çalıştığınız projeye MDI özellikli form eklemek istiyorsanız Şekil 13.1' de görüldüğü gibi Project menüsünden Add MDI Form komutunu vermelisiniz.

Şekil 13.1 : Projeye MDI özellikli form eklenmesi

Project menüsünden Add MDI Form komutunu verirseniz, daha önce Form1 adında normal bir form içeren projeye MDIFrom1 adında yeni bir form eklenir. Şekil 13.2'deki ekran görüntüsünü projeye MDI özellikli bir form ekledikten sonra aldım.

MDI özellikli form, projede tek başına yer alabileceği gibi çok sayıda alt form (Child) da içerebilir. Diğer yandan bir projede yalnız bir tek MDI özellikli form bulunabilir. Üzerinde çalıştığınız projeye MDI özellikli bir form ekledikten sonra istediğiniz sayıda alt formu başka bir deyişle Child formu projeye dahil edebilirsiniz. Projedeki MDI özellikli forma alt formlar dahil etmek için Project menüsünden Add Form komutu ile yeni form dahil edilip bu formun child form olması sağlanır veya projedeki mevcut formlara Child özelliği verilir. Forma Child özelliği vermesi, properties penceresindeki MDIChild özelliğinin True yapılması ile sağlanır.

Şekil 13.2: Projeye eklenen MDI özellikli form

13.1.MDI Formların Özellikleri

MDI formlarla ilgili olarak bazı işlemleri yapmak için yeni bir proje başlatılacaktır. Bu projeye biri MDI özellikli olmak üzere 4 adet form eklenecektir. Ayrıca MDI özellikli formu, Project menüsündeki Properties komutu ile ekrana getirilen Project Properties diyalog kutusunda başlangıç formu olarak seçilecektir.

MDI özellikli form ve bu forma eklenen alt formların özellikleri ile normal formların özellikleri arasında bazı farklılıklar bulunmaktadır. Normal formların ekrandaki konumu ve büyüklüklerini programcı, tasarım veya çalışma anında belirleyebiliyordu. Örneğin programcı bir projedeki bir Formu tasarım anında ekranın orta yerine yerleştirmişse, söz konusu proje çalıştırıldığında Form tasarım anındaki yerini koruyordu.

Windows ve Windows uyumlu programların pencerelerine dahil edilen alt pencere veya bilgiler pencereye sığmıyorsa, otomatik olarak pencerenin sağ kenarına düşey ve yatay kaydırma çubukları eklenir. Benzer durum MDI özellikli pencereler içinde geçerlidir. MDI özellikli pencereye dahil edilen pencerelerin(Child Form) boyutları çalışma anında değiştirilip alt pencerelerden birinin pencereye sığmaması halinde, MDI pencereye düşey kaydırma çubuğu otomatik olarak eklenir. MDI özellikli pencerelere kaydırma çubuklarının gerektiğinde otomatik olarak eklenmesini istemiyorsanız, MDI özellikli Forma ait Properties penceresinde ScrollBars değişkenine False değerini aktarmalısınız.

Şimdi MDI özellikli başlangıç formuna ait Form_Load yordamına Şekil 13.3'deki gibi, alt (Child) formların yüklenmesini sağlayacak program satırlarını ekleyelim.

Şekil 13.3 : Child formların ekrana gelmesini

sağlayacak program satırları

Bu şekilde tasarlanan proje çalıştırılacak olunursa Şekil 13.4'de verilen ekran görüntüsü elde edilir.

Şekil 13.4 : Proje çalıştırıldıktan sonra alınan ekran görüntüsü

Eğer MDI özellikli forma ait ScrollBars değişkeninin içeriği daha önceden False yapılmış olsaydı, kaydırma çubukları MDI özellikli forma eklenmezdi.

Daha önceki konulardan bildiğiniz gibi Ekranı Kaplama ve Simge Durumuna Küçültme gibi düğmeleri normal formlardan istediğinizde kaldırabiliyordunuz. Ancak MDI özellikli formlarda bu mümkün değildir. MDI özellikli formlarda Windows uyumlu bir pencerenin bütün özellikleri bulunur. Bu özelliklerde tasarım veya çalışma anında değişiklik yapmanız mümkün değildir.

13.1.1.MDI Formlar İçin Araç Çubuğu Hazırlamak

MDI formlarla ilgili olarak belirtilmesi gereken en önemli özellik MDI formlara normal formlardaki gibi Nesne dahil edilemiyor olmasıdır. Yani MDI özellikli bir forma, normal formlardaki gibi bir düğme ve TextBox gibi nesneleri eklemek mümkün değildir. Bu özellik bütün Windows uygulamaları için de geçerlidir. Şekil 13.5'de verilen ekran görüntüsü Word 97’den alındı. Bu görüntü alındığı sırada Word penceresinde herhangi bir alt pencere veya Form yoktu. Başka bir deyişle açık durumda olan belge yoktu.

Şekil 13.5 : Word 97 ekranı

Şimdi bu Word penceresini dikkatli bir şekilde incelemelisiniz. Bu Word penceresinde şimdiye kadar ekran görüntüsü verilen Visual Basic formlarından farklı olarak bir menü ve birde araç çubuğu var. Demek ki MDI özellikli Formlara menü ve araç çubukları eklenebilmektedir. MDI formlara ToolBox penceresinden yararlanarak menü, resim kutusu ve araç çubukları dışında başka nesne eklenemez.

ToolBox penceresinde MDI formlara araç çubuğu eklerken kullanılan bir düğme veya denetim yoktur. MDI özellikli Formlara araç çubuğu eklemek için ToolBox penceresindeki PictureBox kontrolünden yararlanılır.

Tasarım anında MDI özellikli bir Form aktif form durumda iken PictureBox kontrolünün işlevinde değişiklik olur. Picture Box kontrolünü temsil eden düğme seçili durumda iken mouse ile formun her hangi bir yerinde sürükleme işlemi yapacak olursanız Formun üzerine henüz düğme veya ikon içermeyen Şekil 13.6'daki gibi bir araç çubuğu eklenir.

Şekil 13.6 : Üzerine araç çubuğu yerleştirilmiş MDI form

Buna göre programcının Araç Çubuğunun genişliğini seçme şansı yoktur. Ancak programcı Araç Çubuğunun yüksekliğini istediği gibi ayarlayabilir. Üzerinde çalıştığınız MDI özellikli formda bir araç çubuğu varken ikinci bir araç çubuğunu ekleyebilirsiniz.

MDI özellikli formun PictureBox nesnesi eklenen kısımlarına, normal formlarda olduğu gibi istediğiniz nesne veya kontrolleri dahil edebilirsiniz. Buna göre MDI formunun Araç çubuğu olarak sınırlanan kısımları normal form alanı gibi kullanılabilir. Word ve Excel gibi programlarda olduğu gibi araç çubuğu hazırlamak, MDI Formunun araç çubuğu alanı olarak belirlenen kısmına düğme veya ikon yerleştirmekten ibarettir. Düğme yerleştirmek demek, araç çubuğunun üzerine ikinci bir PictureBox nesnesi yerleştirmek demektir. Şekil 13.7'de verilen ekran görüntüsü araç çubuğuna iki düğme eklendikten sonra alınmıştır.

Şekil 13.7 : ğme yerleştirilmiş araç çubuğu

Ayrıca bu ekran görüntüsü alınmadan önce bütün alt formlar simge durumuna getirilmiştir. Bu araç çubuğuna dahil edilen ikonlar normal formlara eklenmiş olan düğmelerden farklı değildir. Araç çubuğunda bulunan her ikon veya düğme birer nesnedir. Bu nesnelerden birinin üzerinde tıklama yapılması halinde söz konusu nesneye ait Click olayını temsil eden yordam işletilir. Bu nedenle kullanıcının ikon da tıklama yaptığı zaman yapılması istenen işlemler için söz konusu nesnenin ilgili yordamına program kodu yazılmalıdır. Tasarım anında araç çubuğundaki ilk düğmenin üzerinde çift tıkladığımda Şekil 13.8'de verilen kod penceresi gelmiştir.

Şekil 13.8 : Picture2 düğmesine ait kod penceresi

Ancak Word gibi programlarda araç çubukları yerleştirilen düğmelerin işlevini kullanıcıya anımsatmak için düğmelerin üzerine küçük resimler yerleştirilmektedir. Normal düğme veya Command Button nesnelerinin üzerine resim yerleştirme imkanı yoktu. Araç çubuğuna düğme yerleştirdikten sonra bu düğmeye küçük resim yerleştirmek için properties penceresindeki Picture özelliğini kullanmalıyız. Düğme seçili iken Picture özelliğinden Load Picture diyalog kutusuna ulaşırız. Buradan İCO uzantılı herhangi bir resim dosyası seçerek OK butonunu tıklamalıyız. Böylece seçtiğimiz ikonu düğmeye yerleştirmiş oluruz.

13.1.2. Çalışma Anında Projeye Yeni Child Form Eklemek

Çalışma anında projeye yeni bir alt (Child) form hazırlamak için işe Form için kullanılmak üzere bir değişken tanımlamak ile başlamak gerekir. Hazırlayacağımız örnek projede, biri MDI özellikli, diğeri normal form olan iki form bulunmaktadır. Şekil 13.9'da verilen program kodları ile önce tasarım anında projeye dahil edilen form1 ile aynı özelliğe sahip 'YeniForm' adında yeni bir form nesnesi tanımlanmaktadır. Sonra oluşturulan yeni formun Caption özelliğine 'Child Form' değeri atanmakta ve daha sonra Form1 adlı form ile YeniForm adlı form show metodu ile ekrana getirilmektedir.

Şekil 13.9 : Projeye yeni form ekleme

Projeyi çalıştırdığımızda Şekil 13.10'da gördüğünüz ekran görüntüsünü elde ederiz.

Şekil 13.10 : Proje çalıştırıldıktan sonra elde edilen ekran görüntüsü