4 Mayıs 2016 Çarşamba

MapInfo_Ders7

Harita için proje dosyası yani .wor uzantılı dosya oluşturmayı görmüştük. Bugün o proje dosyamızı seçim verilerine göre dizayn edelim. öncelikle mapinfoyu açın. Daha önce vermiş olduğum iller tablosunu da açın. Bu link üzerinde mapinfo_tablolar adlı klasörü bilgisayarınıza indirin. İçinde seçim sonuçlarını içeren tablolar bulunmakta. Mapinfoda iller tablosunu açtıysanız indirdiğiniz tabloları da açmayı görelim. Mapinfoda dosyaya tıklayıp aç deyin. İndirdiğiniz klasörü bulup oradan AKAM-İCİN, ANDY-AR-İCİN , METROPOLL-İCİN, Orc-İCİN ,karsilaştırma, Seçim-Kopya_2 isimli mapinfo  tablolarını açın. Bu isimler araştırma şirketlerinin isimleri ve verilerini içeren tablolar.Tabloların excel formatları da mevcut. Bu verileri excelde düzenleyip kendi tablo dosyanızı oluşturabilirsiniz. Bunu da mapinfoda dosya menusunün altında bulunan yeni tablo aç seçeneğiyle yapabilirsiniz. Dosyalarınızı açtıktan sonra harita penceresi en üst katmanda olacak şekilde proje dosyanızı kaydedin. Bunu yapmamızın sebebi Mapinfonun en üst katmandaki tabloyu gösteriyor olması. Eğer iller tablosunu değilde AKAM-İÇİN tablosu üst katmanda olursa c# programınızda harita yerine bir liste görürsünüz. Hatta iller tablosu dışındaki tabloları açtıktan sonra kapatın. Mapinfo bu tabloların dosya yolunu hafızasında tutacaktır. c# ta hata almamanız için önemli bir durum.  Bir diğer mesele tabloların iller haritasıyla eşleşmesi. Bunun için Callback adında bir sınıf oluşturacağız. Sınıf içeriği aşağıdaki gibi olacak.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
namespace Secim
{
    [ComVisible(true)]

    public class Callback
    {

        Form1 f1;
        delegate void mapinfo();//mapinfo değişken
        public Callback(Form1 _f1)
        {
            f1 = _f1;
        }


        public void info(string a)
        {
            int k = Convert.ToInt32(Form1.mi.Eval("searchpoint(frontwindow(),commandinfo(1),commandinfo(2))"));
            string tabloadi = "";
            for (int i = 1; i <= k; i++)
            {
                tabloadi = Form1.mi.Eval("SearchInfo(" + i.ToString() + ",1)");
                String row_id = Form1.mi.Eval("SearchInfo(" + i.ToString() + ",2)");
                Form1.mi.Do("Fetch rec " + row_id + " From " + tabloadi);
                if ((tabloadi == "Iller"))
               {
                    f1.Invoke(new mapinfo(f1.f3.fill_form));
                }
            }
        }


    }
}
Burada il isimleri tek tek tablolar arasında eşleştiriliyor. f1, form1  türertilmiş bir nesne. Bir de f3 görüyorsunuz. bir adet form3 adında form oluşturun ve form1 clasının içinde form3 için f3 isimli nesne oluşturun. Form3 ün tasarımı aşagıdaki gibi labellerden oluşsun.
Bilgi butonun clickeventine  mi.Do("run menu command id 2001"); komutunu yazın. Artık bu butona tıkladığınızda form3 açılacak. Lakin form3'te verilerimizi doldurmadık. Bunun için form 3 aşağıdaki şekilde kodlayın.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Secim
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
        }
        public void fill_form()
        {
            label8.Text = Form1.mi.Eval("iller.il_adi");
            //AKAM
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " (CHP Float)From AKAM_ICIN Set To CHP Where COL1 = COL2"); }
            catch { }
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " (HDP Float)From AKAM_ICIN Set To HDP Where  COL1 = COL2"); }
            catch { }
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " (MHP Float)From AKAM_ICIN  Set To MHP Where COL1 = COL2"); }
            catch { }
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " (AKP Float)From AKAM_ICIN  Set To AKP Where COL1 = COL2"); }
            catch { }
            //AKAM
            label14.Text = Form1.mi.Eval("iller.akp");
            label10.Text = Form1.mi.Eval("iller.chp");
            label11.Text = Form1.mi.Eval("iller.HDP");
            label12.Text = Form1.mi.Eval("iller.MHP");
            //ORC
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " (CHP_2 Float)From ORC_ICIN Set To CHP Where COL1 = COL2"); }
            catch { }
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " (HDP_2 Float)From ORC_ICIN Set To HDP Where  COL1 = COL2"); }
            catch { }
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " (MHP_2 Float)From ORC_ICIN  Set To MHP Where COL1 = COL2"); }
            catch { }
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " (AKP_2 Float)From ORC_ICIN  Set To AKP Where COL1 = COL2"); }
            catch { }
            //ORC
            label15.Text = Form1.mi.Eval("iller.akp_2");
            label16.Text = Form1.mi.Eval("iller.chp_2");
            label17.Text = Form1.mi.Eval("iller.hdp_2");
            label18.Text = Form1.mi.Eval("iller.mhp_2");
            //ANDY_AR
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " (CHP_3 Float)From ANDY_AR_ICIN Set To CHP Where COL1 = COL2"); }
            catch { }
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " (HDP_3 Float)From ANDY_AR_ICIN Set To HDP Where  COL1 = COL2"); }
            catch { }
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " (MHP_3 Float)From ANDY_AR_ICIN  Set To MHP Where COL1 = COL2"); }
            catch { }
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " (AKP_3 Float)From ANDY_AR_ICIN  Set To AKP Where COL1 = COL2"); }
            catch { }
            //ANDY_AR
            label19.Text = Form1.mi.Eval("iller.akp_3");
            label20.Text = Form1.mi.Eval("iller.chp_3");
            label21.Text = Form1.mi.Eval("iller.hdp_3");
            label22.Text = Form1.mi.Eval("iller.mhp_3");
            //METROPOLL
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " (CHP_4 Float)From METROPOLL_ICIN Set To CHP Where COL1 = COL2"); }
            catch { }
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " (HDP_4 Float)From METROPOLL_ICIN Set To HDP Where  COL1 = COL2"); }
            catch { }
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " (MHP_4 Float)From METROPOLL_ICIN  Set To MHP Where COL1 = COL2"); }
            catch { }
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " (AKP_4 Float)From METROPOLL_ICIN  Set To AKP Where COL1 = COL2"); }
            catch { }
            //METROPOLL
            label23.Text = Form1.mi.Eval("iller.akp_4");
            label24.Text = Form1.mi.Eval("iller.chp_4");
            label25.Text = Form1.mi.Eval("iller.hdp_4");
            label26.Text = Form1.mi.Eval("iller.mhp_4");
            //GERÇEK
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " (AK_PARTİ%  Float)From Secim_Kopya_2 Set To AK_PARTİ%  Where COL1 = COL2"); }
            catch { }
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " (CHP% Float)From Secim_Kopya_2 Set To CHP% Where  COL1 = COL2"); }
            catch { }
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " ( HDP%  Float)From Secim_Kopya_2  Set To HDP% Where COL1 = COL2"); }
            catch { }
            try { Form1.mi.Do("Add Column " + "\"Iller\"" + " ( MHP% Float)From Secim_Kopya_2  Set To MHP% Where COL1 = COL2"); }
            catch { }

            label28.Text = Form1.mi.Eval("iller.AK_PARTİ% ");
            label29.Text = Form1.mi.Eval("iller.CHP%");
            label30.Text = Form1.mi.Eval("iller. HDP% ");
            label31.Text = Form1.mi.Eval("iller. MHP%");
            this.ShowDialog();

        }
fillform fonksiyonu Callback'te çağırdığımız bir fonksiyon. add column stringi araştırma şirketlerinin araştırma şirketinin chp, mhp, hdp ve akp için bulduğu sonuçları getirecek. Bu sonuçlar Fromtablo isminden önceki tanımlanmış olan sütunlara atılacak. Örn: Akp_2 Float. Bu değerleri labellerde göstermek kaldı. labeltext kısımlarına da eval komutuyla mapinfo içerisinden veri çekip yazdıracağız. artık bilgi butonumuzun işlevi tamam. Aşağıdaki resimde işleyişini görebilirsiniz.

Ankara için araştırma şirketlerinin  sonuçları ve gerçek seçim sonucu karşılaştırması.

Hiç yorum yok:

Yorum Gönder