Referanslardan mapinfo ole automation type library seçeniğini işaretleyip tamama tıklayın.
Şimdi Mapinfo projemizi ekleyebiliriz. Ama öncesinde haritanın gösterileceği bir panel ve harita üzerinde işlem yapabilmemizi sağlayacak butonlar koyalım. Bunun için forma bir adet panel ve bir kaç adet buton koyalım. Butonlar haritada yakınlaştır uzaklaştır ve haritayı tut seçenekleri için kullanılacak.
Şimdi form ekranını kodlamaya geçelim. Form'a çift tıklayarak kodları açabilirsiniz. İlk olarak kütüphanemizi ekleyelim. using MapInfo; diyerek kütüüphaneyi ekleyin. Daha sonra Mapinfo değişkenlerine erişebilmek için bir adet nesne tanımlayalım.
public static MapInfo.MapInfoApplication mi;
classımızın içinde mi adlı bir mapinfo nesnesi oluşturduk. haritamıza bu nesne ile ulaşacağız.
Şimdi de form1_load fonksiyonumuzun içine aşağıdaki kodları yazın.
mi = new MapInfo.MapInfoApplication();
mi = Activator.CreateInstance(Type.GetTypeFromProgID("MapInfo.Application")) as MapInfo.MapInfoApplication;
int p = panel1.Handle.ToInt32();
mi.Do("set next document parent " + p.ToString() + " style 1");
mi.Do("set application window " + p.ToString());
mi.Do("run application \"" + "C:/Users/user/Desktop/deneme.wor" + "\"");
mi nesnesini tanımladıktan sonra program id'sini belirttik. mapinfoda komutlar ve pencereler id ile kimliklendirilmiştir. bunları daha sonra açıklayacağım. panelimizi tanımladık. mi.Do komutu mapinfoya komut göndermek için kullanılır. eval komutunu ise mapinfodan veri çekmek istediğimiz zaman kullanırız. set next document parent mapinfo komutudur. bu komutları mapbasic ile görebilirsiniz. set application window haritanın panel içerisinde gösterileceğini belirtir. Son olarak da run application ile mapinfo projesi başlatılır. Buradaki path'e dikkat edin. mapinfo projenizi kaydettiğiniz yolu yazmanız gerekmektedir. Kod düzenine aşağıdaki resimden bakabilirsiniz.
Şimdi programımızı bir çalıştırıp haritayı görelim. Not eğer programı çalıştırdınız ancak hata alıp kapattıysanız bir sonraki çalıştırmanızda mapinfo hata verecektir. Kodları düzeltmiş olsanız bile. Bunun sebebi arka planda açık kalan mapinfo programlarıdır. Bu sebeple görev yöneticisinden mapinfoları kapatıp yeniden programı çalıştırırsanız hatanız giderilecektir.
Evet arkadaşlar mapinfo haritamızı c# programı ile açmış olduk. Gördüğünüz üzere harita panelle orantılı değil. bir sonraki dersimizde panele sığdırma yapalım ve butonlarımızın görevlerini tanımlayalım. Bir sonraki dersimizde görüşmek üzere.
Hiç yorum yok:
Yorum Gönder