Makale Özeti

Son yıllarda hızla gelişen yazılım ve iletişim teknolojileri sayesinde “farklı ortamların bilgi paylaşabilmesi “ mantalitesi , XML Web Servislerinin getirdiği kolaylıklarla altın çağını yaşıyor..Herhangi bir yerden herhangi bir cihazdan ve en önemlisi herhangi bir platformdan istenilen bilgiye en güvenli şekilde erişmek bu sayede mümkün..Bugun hemen bir çok alanda boy gösteren servisler (SOA – Service Oriented Architectue (Servis Yönelimli Mimari)) ciddi anlamda ülkemizde de kullanılmaya başlamıştır. İşte bu konuda bir güzellikte nufüs idaresinden geldi ve bilgilerini tüm dünyaya açtı..Bu makalemde hem web servislerinin nasıl kullanıldığını hep beraber örneklendirecek hemde bu tarz bir rich client bir uygulamanın nasıl olabileceğine dair beraber fikir yürütme imkanı elde edeceğiz..

Makale

Mobile Device üzerinden Tc Kimlik Sorgulama..

 

Son yıllarda hızla gelişen yazılım ve iletişim teknolojileri sayesinde “farklı ortamların bilgi paylaşabilmesi “          mantalitesi , XML Web Servislerinin getirdiği kolaylıklarla altın çağını yaşıyor..Herhangi bir yerden herhangi bir cihazdan ve en önemlisi herhangi bir platformdan istenilen bilgiye en güvenli şekilde erişmek bu sayede mümkün..Bugun hemen bir çok alanda boy gösteren servisler (SOA – Service Oriented Architectue (Servis Yönelimli Mimari)) ciddi anlamda ülkemizde de kullanılmaya başlamıştır.Bu sadece özel sektörde var olan  girişimcilerinin geliştirdikleri çözümler olarak anlaşılmasın..En basitinden 2005 yılında sağlık bakanlığı geliştirdikleri web servisleri ile hasta bilgilerini HBYS (Hastane Bilgi Yönetim Sistemi) geliştiren ve dolayısıyla bunu kullanan hastanelere bilgilerini online olarak açması bu konuda ki belkide en güzel örneklerden biridir.Kendim de bu tarz bir sistem geliştirdiğim için yıllar boyunca ; bunun benim için ne kadar da onemli bir nimet olduğunu tarif  etmeye kelimeler yetmez.. (Daha önce benzeri veri iletişim protokolleri yokmuydu (RPC..) vardı tabiki ama en nihayetinde firewall ve dolayısıyle güvenlik sorunları bu sürecin gelişimine negatif etkide bulunmuştur.)

 

İşte bu konuda bir güzellikte nufüs idaresinden geldi ve bilgilerini tüm dünyaya açtı..Bu makalemde  hem web servislerinin nasıl kullanıldığını hep beraber örneklendirecek hemde bu tarz bir rich client bir uygulamanın nasıl olabileceğine dair beraber fikir yürütme imkanı elde edeceğiz..

 

Öncelikle geliştirme süresince ihtiyacımız  olan malzemeleri belirtelim..1 Adet Visual Studio (yemek tarifi gibi oldu affedin.. J),internet bağlantısı ve biraz da başarma inancı…

 

Öncelikle new project sekmesin den Visual C# ı seçip ordan da smart device ı tıklıyoruz..Açılan seçeneklerden ister Pocket PC 2003 isterseniz Windows Mobile 5.0 ı seçerek aşağıda ki gibi bir ekran görüntüsü hazırlıyoruz..(Yazdığımız kodda işletim sistemine has spesifik bir şey kullanmadığımızdan hangi tip proje seçtiğimizin şu anda çok bir önemi yok..)

                                          

 

Daha sonra gerekli olan XML Web servisi uygulamamızda kullanabilmek için Solution Explorer pencesinden Web References kısmını sağ tıklayıp Add Web Reference diyoruz..Karşımıza çıkan ekran da yer alan URL kısmına

 

http://tckimlik.nvi.gov.tr/kpspublic.asmx

adresiniz yazıp enterladığımızda bize o ilgili sunucuda ki bütün metodları listeyecektir..(Şayet T.C. İÇİŞLERİ BAKANLIĞI Nüfus ve Vatandaşlık İşleri Genel Müdürlüğü’ ne ait olan sunucularda bir sorun yoksa veya sizin internet bağlantınızda.. ) biz bu ekrandan web servisini uygulamamıza eklemeden önce yukarıda belirttiğimiz URL bilgisinin hemen sonuna  ?WSDL yazıp tekrar enterlarsak bu web servisi ile ilgili  daha detaylı bilgi edinebilmemiz mümkündür..Daha sonra sağ tarafta yer alan Add Reference butonunu tıklayarak bu web servisini mobile projemize kullanım için hazır hale getiriyoruz..Gördüğünüz gibi buraya kadar oldukca basit..

 

Kodla anlatmak ve aralarda açıklama satırları  koymak her zaman en sevdiğim yöntemdir.Tabi yazılım evlerinde ticari amaçlı olarak geliştirilen bir çok projede birden fazla programcının çalıştığı düşünülürse dediğim yöntem elbette yetersiz kalacaktır..Bu konuyla ilgili http://turkish.joelonsoftware.com/Articles/TheJoelTest.html adresinde ki makaleyi incelemenizi kesinlikle öneriyorum..

 

Hemen  kodlara geçelim ..

 

            

string general="";                                                

             bool xout = false;                                                

             tr.gov.nvi.tckimlik.KPSPublicWebService mysrv;                    

             tr.gov.nvi.tckimlik.KimlikBilgisi mykimlik;                              

             public enum CinsiyetTipi{Bilinmiyor,Erkek,Kadin}                         

             System.Drawing.Color[] mycolors;                                  

             Random myrnd;                                                     

             /// <summary>                                                     

             //uygulamanın kodlarını vereceğim ek olarak ama uyarı mahiyetinde burdada

 1-2   şey belirtmek istedim..                                                 

             //VS da uygulamayi calıstırabilmek için en az Microsoft Pocket PC 2003   

SDK.msi  in kurulu olmasi gerek..msdn den indirebilirsiniz ücretsizdir.. ~60 mbyte    

             //Uygulamayı windows mobile 2003 ve 5.0 da emulator de test ettim sorun   goremedim..                                                                   

             //Eger calismazsa uygulamayı actiginiz emulator un internet ayarlarinin  

doğru olup olmadığını mutlaka kontrol edin.                                           

             //emulator un connection ayarlarini WORK olacak sekilde degistirin..     

             //emulator un içinden internet explorer i acip ordan www.yazgelistir.com  girin.                                                                               

             //sayfayi goruntulediginiz anda ok sorun yok demektir..                  

             // Gerisi sizin uygulamayı calistirmaniza bakar J                        

             /// </summary>                                             

 

 

Yukarıda yazdığımız kodlar da yer alan değişkenler formumuzun private elemanlarıdır..Gereksiz yere kalabalık yapmamak için kodları özet olarak verip kritik noktaları açıklayacağım..

 

 

             private void frmMain_Load(object sender, System.EventArgs e)

             {

                    xout = false

                    myrnd = new Random(1);

                    tmrGeneral.Enabled = false; // burda ekran daki Rock C# yazan label nesnesinin rengini değiştirecek timer nesnesinin ayarı yapılıyor.

                    mycolors = new System.Drawing.Color[10];  // Random olarak verilecek renk seçimleri için gereken dizi olusturuluyor..

                    mycolors[0] = System.Drawing.Color.Red;

                    mycolors[1] = System.Drawing.Color.DarkRed ;

                    mycolors[2] = System.Drawing.Color.Green ;

                    mycolors[3] = System.Drawing.Color.DarkGreen ;

                    mycolors[4] = System.Drawing.Color.Blue ;

                    mycolors[5] = System.Drawing.Color.DarkSlateBlue ;

                    mycolors[6] = System.Drawing.Color.Black ;

                    mycolors[7] = System.Drawing.Color.Gray ;

                    mycolors[8] = System.Drawing.Color.DarkGray ;

                    mycolors[9] = System.Drawing.Color.Brown ;

                    general = lblBanner.Text.Trim()+" ";

                    tmrGeneral.Enabled = true;

                    pBar1.Visible = false; // web servisinden veri çekilirken bekleme esnasında kullanıcıya progressbar ile bilgi veriliyor.

                    pBar1.Value = 0;

                    try

                    {

                           mysrv = new TcKimlikforMobile.tr.gov.nvi.tckimlik.KPSPublicWebService(); // işte ana unsur!Daha önce tanımladığımız web servisimize ait değişken için bir nesne örneği alınıyor..

                    }

                    catch  // şayet emulator ayarlarını duzgun yapmadıysan internet bağlantısı için bu hatayı almanız olası..

                    {

                           MessageBox.Show("Hata!Lütfen Internet Baglantinizin olup olmadigini, default ayarlarinizin English olup olmadigini ya da Tc Kimlik Bilgileri sorgulama servislerinin çalisip çalismadigini kontrol ediniz!Uygulama Sonlanacak!",

                                                   "Uyari!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);

                           Application.Exit();

                    }

                    tr.gov.nvi.tckimlik.IlBilgisi[] myillist = mysrv.IlListesiGetir(); // il listesi alınıyor..!

                    cmbILList.Items.Clear();

                    pBar1.Minimum =0;

                    pBar1.Value =0;

                    pBar1.Maximum = myillist.Length;

                    pBar1.Visible = true ;

                    int i = 0;

                    general = "TC il bilgileri bulunuyor!   ";

                    while (i<myillist.Length-1)

                    {

                           cmbILList.Items.Add(myillist[i].Ad);

                           pBar1.Value +=1;

                           i+=1;

                           Application.DoEvents();

                    } // il listesi combobox nesnesine dolduruldu...

                    pBar1.Visible = false;

                    cmbILList.SelectedIndex = 0;  // ilk il seçili pozisyona getirildi ve ilgili ilceler alınıyor..!

                    tr.gov.nvi.tckimlik.IlceBilgisi[] myilcebil = mysrv.IleBagliIlceListesiGetir(myillist[0].Kod);

                    cmbIlceList.Items.Clear();

                    pBar1.Minimum =0;

                    pBar1.Value =0;

                    pBar1.Maximum = myilcebil.Length;

                    pBar1.Visible = true ;

                    i=0;

                    general = "<< "+cmbILList.Text+" >>  iline ait ilçeler bulunuyor!   ";

                    while (i<myilcebil.Length-1)

                    {

                           cmbIlceList.Items.Add(Convert.ToString(myilcebil[i].Kod).Substring(0,Convert.ToString(myilcebil[i].Kod).Length)+

                                  "*"+myilcebil[i].Ad);

                           pBar1.Value +=1;

                           i+=1;

                           Application.DoEvents();

                    } // ilgili ilce ve kodları listeye dolduruldu..!

                    pBar1.Visible = false;

                    cmbIlceList.SelectedIndex = 0;

                    general =  "Rock C#!  "; // reklamlar..!!

                    xout = true;

                    if (txtName.Focused) txtName.Focus();

             }

             private void tmrGeneral_Tick(object sender, System.EventArgs e)

             {

                    if (lblBanner.Text.Trim().Length!=0)   // işte kayan yazımız..!

                           lblBanner.Text = general.Substring(1,general.Length-1)+general.Substring(0,1);

                           general = lblBanner.Text;

                           lblBanner.ForeColor = mycolors[(myrnd.Next(0,9))];

             }

 

             private void cmbILList_SelectedIndexChanged(object sender, System.EventArgs e)

             {

                    if (xout)  // istersek selectedIndexChange event inin fire edilmesini -= ile de yapabilirdik..Eski bir alışkanlık ki bunu genel bir değişken ile hallettim.. :)

                    {

                           IlceGetir(cmbILList.Text);

                    }

             }

 

             public void IlceGetir(string il)   // il bilgisi verildiği takdirde ilgili ilce bilgisini yapılandıran methodumuz.

             {

                    int xkod =0;

                    pBar1.Minimum =0;

                    pBar1.Value =0;

                    pBar1.Visible = true ;

                    tr.gov.nvi.tckimlik.IlBilgisi[] myilbilgi = mysrv.IlListesiGetir();

                    pBar1.Maximum = myilbilgi.Length;

                    int i = 0;

                    general = "<< "+il.ToString()+" >>  iline ait il kodu bulunuyor!   ";

                    while (i<myilbilgi.Length)

                    {

                           if (myilbilgi[i].Ad == il)

                           {

                                  xkod = myilbilgi[i].Kod;

                                  pBar1.Value = myilbilgi.Length;

                                  break;

                           }

                           pBar1.Value +=1;

                           i+=1;

                           Application.DoEvents();

                    }

                    cmbIlceList.Items.Clear();

                    pBar1.Visible = false;

                    pBar1.Minimum =0;

                    pBar1.Value =0;

                    pBar1.Maximum = mysrv.IleBagliIlceListesiGetir(xkod).Length;

                    pBar1.Visible = true ;

                    i=0;

                    general = "<< "+il.ToString()+" >>  iline ait ilçeler bulunuyor!   ";

                    tr.gov.nvi.tckimlik.IlceBilgisi[] myilcex = mysrv.IleBagliIlceListesiGetir(xkod);

                    while (i<myilcex.Length-1)

                    {

                           cmbIlceList.Items.Add(Convert.ToString(myilcex[i].Kod).Substring(0,Convert.ToString(myilcex[i].Kod).Length)+

                                   "*"+myilcex[i].Ad);

                           pBar1.Value +=1;

                           i+=1;

                           Application.DoEvents();

                    }

                    pBar1.Visible = false;

                    cmbIlceList.SelectedIndex = 0;  

                    general = "Rock C#! ";

             }

 

             public bool Denetle(int index)  // Xml Web Servisinden gerekli sorgunun gerçekleştirilmesi için gereken tüm bilgiler client side denetleniyor..Bir nevi control layerimiz.. :)

             {

                    if (txtName.Text.Length==0)

                    {

                           MessageBox.Show("Kisi <<Adi>> bilgisi bos geçilemez!","Uyari!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);

                           return false;      

                    }

                    if (txtFName.Text.Length==0)

                    {

                           MessageBox.Show("Kisi <<Soyadi>> bilgisi bos geçilemez!","Uyari!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);

                           return false;      

                    }

                    if (index==1)

                    {

                           if (txtAileSiraNo.Text.Length==0)

                           {

                                  MessageBox.Show("Kisi <<Aile Sira No>> bilgisi bos geçilemez!","Uyari!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);

                                  return false;      

                           }

                           if (txtBireySiraNo.Text.Length==0)

                           {

                                  MessageBox.Show("Kisi <<Birey Sira No>> bilgisi bos geçilemez!","Uyari!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);

                                  return false;      

                           }

                           if (txtCiltNo.Text.Length==0)

                           {

                                  MessageBox.Show("Kisi <<Cilt No>> bilgisi bos geçilemez!","Uyari!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);

                                  return false;      

                           }

                           return true ;

                    }

                    if (index==2)

                    {

                           if (txtBaba.Text.Length==0)

                           {

                                  MessageBox.Show("Kisi <<Baba Adi>> bilgisi bos geçilemez!","Uyari!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);

                                  return false;      

                           }

                           if (txtAnne.Text.Length==0)

                           {

                                  MessageBox.Show("Kisi <<Anne Adi>> bilgisi bos geçilemez!","Uyari!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);

                                  return false;      

                           }

                           if (txtDogTar.Text.Length!=4)

                           {

                                  MessageBox.Show("Kisinin dogum tarihi bilgisini 4 karakter olacak sekilde giriniz! Örn : 1982","Uyari!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);

                                  return false;      

                           }

                           if (cmbCinsiyet.Text.Length==0)

                           {

                                  MessageBox.Show("Kisinin <<Cinsiyet>> bilgisi bos geçilemez!","Uyari!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);

                                  return false;      

                           }

                           return true;

                    }

                    return false;

             }

 

             private void txtDogTar_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)  // doğum tarihinde alfa numerik karakterler (a,b,c...) olmamalı!

             {

                    if (((e.KeyChar>=(char)48)&&(e.KeyChar<=(char)57)) || (e.KeyChar==(char)Keys.Back) || (e.KeyChar==(char)Keys.Delete))

                    {

                           e.Handled = false;

                    }

                    else

                    {

                           e.Handled = true ;

                           MessageBox.Show("Sadece Sayi lütfen 0..9  Örn : 1982","Uyari!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);

                    }

                    if (txtDogTar.Focused)

                    {

                           txtDogTar.SelectionStart = txtDogTar.Text.Trim().Length + 1 ;

                           txtDogTar.Focus();

                    }

             }

             private void SonucAktar()  // eğer sonuc bilgisi elde edilirse frmResult form örneği alınarak ekrana basılıyor..

             {

                    try

                    {

                   

                           //frmResult myResult = frmResult.getForm();

                           frmResult myResult = new frmResult();

                           myResult.txtResult.Items.Clear();

                           myResult.txtResult.Items.Add("Tc Kimlik No :"+mykimlik.TCKimlikNo);

                           myResult.txtResult.Items.Add("*-*-*-*-*-*-*-*-*-*-*-*-*-");

                           myResult.txtResult.Items.Add("Adi          :"+mykimlik.Ad);

                           myResult.txtResult.Items.Add("Soyadi       :"+mykimlik.Soyad);

                           myResult.txtResult.Items.Add("Cinsiyet     :"+mykimlik.Cinsiyet);

                           myResult.txtResult.Items.Add("Dogum Yili   :"+mykimlik.DogumYil);

                           myResult.txtResult.Items.Add("Ana Adi      :"+mykimlik.AnaAd);

                           myResult.txtResult.Items.Add("Baba Adi     :"+mykimlik.BabaAd);

                           myResult.txtResult.Items.Add("Birey Sira No:"+mykimlik.BireySiraNo);

                           myResult.txtResult.Items.Add("Aile Sira No :"+mykimlik.AileSiraNo);

                           myResult.txtResult.Items.Add("Cilt Ad      :"+mykimlik.CiltAd);

                           myResult.txtResult.Items.Add("Cilt Kod     :"+mykimlik.CiltKod);

                           myResult.txtResult.Items.Add("Il Adi       :"+mykimlik.IlAd);

                           myResult.txtResult.Items.Add("Ilçe Adi     :"+mykimlik.IlceAd);

                           myResult.Show();

                    }

                    catch(Exception myex)

                    {

                           MessageBox.Show("Hata!Lütfen Internet Baglantiniz olup olmadigini ya da Tc Kimlik Bilgileri sorgulama servislerinin çalisip çalismadigini kontrol ediniz!Uygulama Sonlanacak! Orj Hata : "+

                           myex.Message,"Uyari!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1);

                           Application.Exit();

                    }

             }

             private void btnTckSorgu2_Click(object sender, System.EventArgs e)  // 2. çeşit sorgu tipi var..Ekran tasarımımızdan da bu net olarak anlaşılabiliyor..Burda Ad, Soyad gibi bilgilerle sorgu yapılıyor..

             {

                    if (Denetle(2))

                    {

                           tr.gov.nvi.tckimlik.TemelBilgilerdenKimlikBilgisi mytemel = new TcKimlikforMobile.tr.gov.nvi.tckimlik.TemelBilgilerdenKimlikBilgisi();

                           tr.gov.nvi.tckimlik.KPSPublicWebService mysrvlocal = new TcKimlikforMobile.tr.gov.nvi.tckimlik.KPSPublicWebService();

                           mytemel.Ad = txtName.Text ;

                           mytemel.Soyad = txtFName.Text ;

                           mytemel.IlceKod = Convert.ToInt32(cmbIlceList.Text.Substring(0,cmbIlceList.Text.IndexOf('*',0)));

                           if (cmbCinsiyet.SelectedIndex==1) mytemel.Cinsiyet =  (TcKimlikforMobile.tr.gov.nvi.tckimlik.CinsiyetTipi)CinsiyetTipi.Erkek; else

                                  if (cmbCinsiyet.SelectedIndex==2) mytemel.Cinsiyet =  (TcKimlikforMobile.tr.gov.nvi.tckimlik.CinsiyetTipi)CinsiyetTipi.Kadin;

                           mytemel.AnaAd = txtAnne.Text ;

                           mytemel.BabaAd = txtBaba.Text ;

                          

                           try

                           { 

                                  mytemel.DogumYil = Convert.ToInt32(txtDogTar.Text);

                           }

                           catch

                           {

                                  mytemel.DogumYil = 0;

                           }

                         

                           try

                           {

                                  mykimlik = mysrvlocal.KisiBilgisindenKimlikBilgisiSorgula(mytemel);

                           }

                           catch(Exception myex)

                           {

                                  //frmResult myResult = frmResult.getForm();

                                  frmResult myResult = new frmResult();

                                  myResult.txtResult.Items.Clear();

                                  myResult.txtResult.Items.Add("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-");

                                  myResult.txtResult.Items.Add(myex.Message.Substring(0,22));

                                  myResult.txtResult.Items.Add(myex.Message.Substring(22,21));

                                  myResult.txtResult.Items.Add(myex.Message.Substring(43,myex.Message.Length-43));

                                  myResult.txtResult.Items.Add("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-");

                                  myResult.ShowDialog();

                                  return;

                           }

                           SonucAktar();

                    }

             }

 

        private void btnTckSorgu1_Click(object sender,System.EventArgs e) // 2. çeşit sorgu tipi var..Ekran tasarımımızdan da bu net olarak anlaşılabiliyor..Burda Aile Sıra No, Birey Sıra No gibi bilgilerle sorgu yapılıyor..

             {

                    if (Denetle(1))

                    {

                           tr.gov.nvi.tckimlik.KayitYerindenKimlikBilgisi mytemel = new TcKimlikforMobile.tr.gov.nvi.tckimlik.KayitYerindenKimlikBilgisi();

                           tr.gov.nvi.tckimlik.KPSPublicWebService mysrvlocal = new TcKimlikforMobile.tr.gov.nvi.tckimlik.KPSPublicWebService();

                           mytemel.AileSiraNo = Convert.ToInt32(txtAileSiraNo.Text) ;

                           mytemel.BireySiraNo = Convert.ToInt32(txtBireySiraNo.Text);

                           mytemel.CiltKod = Convert.ToInt32(txtCiltNo.Text);

                           try

                           {

                                  mykimlik = mysrvlocal.KayitYerindenKimlikBilgisiSorgula(mytemel,txtName.Text,txtFName.Text);

                           }

                           catch(Exception myex)

                           {

                                  //frmResult myResult = frmResult.getForm();

                                  frmResult myResult = new frmResult();

                                  myResult.txtResult.Items.Clear();

                                  myResult.txtResult.Items.Add("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-");

                                  myResult.txtResult.Items.Add(myex.Message.Substring(0,22));

                                  myResult.txtResult.Items.Add(myex.Message.Substring(22,21));

                                  myResult.txtResult.Items.Add(myex.Message.Substring(43,myex.Message.Length-43));

                                  myResult.txtResult.Items.Add("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-");

                                  myResult.ShowDialog();

                                  return;

                           }

                           SonucAktar();

                    }

 

             }

 

Görüldüğü üzere oldukça basit bir şekilde bu işlemleri mobile cihazımız üzerinden yapabiliyoruz..

Aldığımız sonuçlarıda aşağıda ki gibi bir ekranda programı kullanıcısına gösterebiliriz..

 

                         

 

Uygulamamıza ait çalışır ekran görüntüsüde aşağıdaki gibidir…

 

              

 

Şimdilik bu kadar..Takıldığınız bir nokta olursa eralp.erat@savyazilim.com adresinden bana ulaşabilirsiniz..

 

Unutmayalım bilgi paylaşıldıkca değerlidir..

 

Eralp Erat

Mcp, Mcad.NET , Mcsd.NET

HIMS

www.eralperat.com

 

 

 

 

 

  • Kodları İndirmek İçin Tıklayınız...
  • Uygulama Kodlarını İndirmek İçin