Dersi izlemek için yazının devamına bakınız.
Devamı...

Menü oluşturma ve kodlama (WPF)

 Öncelikle yeni bir wpf projesi oluşturuyorum, daha sonra xaml kısmında kullanacağım menüye uygun tasarımı yapıyorum. Menü oluşturmak için Menu ve MenuItem kontrollerini kullanacağım.

 Tasarım Kısmı

                <Menu>

            <MenuItem Header="Düzen">

                <MenuItem Header="Geri Al" x:Name="btn_geri_al"></MenuItem>

                <MenuItem Header="Kopyala" x:Name="btn_kopyala"></MenuItem>

                <MenuItem Header="Yapıştır" x:Name="btn_yapis"></MenuItem>

            </MenuItem>

        </Menu>

 Bu tasarım ile bir menü içine “Düzen” adında alt menü ekledim. Bunun içine ise 3 tane MenuItem yani  komut ekledim. Bu komutları bir buton olarak düşünebilirsiniz, aynı buton gibi click olaylarını yakalayabilirsiniz. Bizde öyle yapıcağız. Siz programda kullanacağınız içeriğe göre menülerinizi şekillendirebilirsiniz. Ben burada sadece düzen menüsü adı altında alt bir menü oluşturdum ama siz daha fazla menü eklemek isterseniz, Menu tag’ının içine birden fazla MenuItem ekleyerek bunu yapabilirsiniz.

Oluşan menüye bir bakalım.

 

 

Kodlama Kısmı

 Xaml kodları ile aramız pek yoksa bu menünün aynısını C# kodları ile de

Devamı...

Bu gün Silverlight ile projeler geliştiren bir arkadaşımdan gelen soru üzerine kolları sıvadım ve silverlightta verilen bir fonksiyonun grafiğini ekrana çizdiren bir proje oluşturdum. Mantıkda basit olarak gözüksede pratikte beni biraz düşündürdü, çünkü kordinat düzlemi bizim silverlightta kullandığımız canvas'ın Top ve Left property'lerinden biraz farklı. Bir kaç denemeden sonra ortaya kullanışlı bir fonksiyon çıktı. Şimdi gelin bu fonksiyonu inceleyelim ve çıktısına bakalım.

Tasarım Kısmı

Öncelikle Visual Studio Beta 2 kullanarak yeni bir silverlight 3 projesi oluşturdum. Arkasından kordinat düzlemimin tasarımını yaptım.

<Grid x:Name="LayoutRoot" Background="White">

  <Canvas Width="400" x:Name="eleman"  Height="400" Background="Black">

  </Canvas>

  <Rectangle Width="1" Height="400" x:Name="r1" Stroke="Red"></Rectangle>

  <Rectangle Height="1" Width="400" Stroke="Red" ></Rectangle>

</Grid>

LayoutRoot adındaki ana sahneme önce eleman adında bir canvas ekliyorum. Bu canvası üzerine fonksiyonun grafiğini çizdirmek için kullanacağım. Ve bunun boyutlarını 400'e 400 olarak belirtiyorum.Benim fonksiyonu çizdireceğim kısımın büyüklüğü bu boyutlara bağlı, eleman canvasımın arka plan rengini ise siyah atıyorum ki rahatlıkla üzerindeki beyaz fonksiyonu seçebileyim. Daha sonra kordinat düzlemimin eksen çizgilerini iki tane rectangle nesnesi oluşturarak yerleştiriyorum.

Kodlama Kısmı

 Grafiği çizdireğim komutları bir fonksiyon içerisine

Devamı...

Üniversitemiz Süleyman Demirel'in  MSP'sive Türkiye Msp'ler Lideri Ahmet Ali Süzen'in organize ettiği bir dizi webiner dizisi bizi bekliyor. Aslında bi kaçını kaçırdık ama olsun, daha bir sürü güzel webiner ocakta pişiyor. Örneğin 4 Kasım'da Ahmet Ali Süzen'in Wpf Konulu webineri internet üzerinden canlı olarak izlenebilecek. Wpf ve diğer webinerlerin linki ile aynı gün içinde www.ahmetalisuzen.com 'dan takip edilebilecek. Umarım faydalı ve verimli bir webiner dizisi olur, iyi çalışmalar.

Mehmet Enver Bilen | enver_emb@hotmail.com

Bu yazımda listbox’ın kullanım şekillerini bakıcağız. İçine eleman ekleyip çıkarma işlemlerini

 

listBox1.Items.Add("eleman1");

listBox1.Items.Add("eleman2");

listBox1.Items.Add("eleman3");

listBox1.Items.Add("eleman4");

 

Şeklinde yapabiliyoruz. Elemanlardan herhangi birini silmek istediğimiz zaman ise



Devamı...

Masaüstü uygulamalarımızda güncel döviz kurlarına sürekli ihtiyaç duyarız, bunu internet üstünden elde etmenin xml  ile güzel bir yolu var, merkez bankasının yayınladığı bu güncel kur bilgilerini xml ile çekerek elde edebiliyoruz peki bunu nasıl yapıcaz, ben bunu normal bir win application ile yapıcağım.

Hemen kodumuzu yazabiliriz. Ama önce  using System.Xml.Linq; kütüphanemizi ekleyelim.

private void Form1_Load(object sender, EventArgs e)

        {

Devamı...
2009 Haziran ayında sevgili hocam Daron Yöndem bir dizi internet semineri tertip ediyor, silverlight öğrenmek isteyenler için çok güzel bir fırsat bu, kaçırmamanızı tavsiye ediyorum böylesine büyük çaplı bir organizasyon iddialı bir şekilde söylüyorum bulamassınız. ve ilgili içeriği aynen veriyorum.
Organizatör:
Daron Yöndem
Tür:
Ağ:
Global
Başlangıç:
08 Haziran 2009 Pazartesi, 21:00
Bitiş:
23 Haziran 2009 Salı, 23:00
Yer:
Online - Live Meeting
E-posta:

Açıklama

Haziran ayı ile beraber yaz dönemi geldi.
Devamı...

2010'da Bizi Neler Bekliyor ?

2009'un ortalarına doğru yaklaştığımız bu günlerde microsoft önümüzdeki yılda piyasaya süreceği visual studio 2010 'un betalarını biz gibi meraklı yazılımcıların test etmesi için yayınlıyor. Bende her meraklı yazılımcı genç gibi yayınlanır yayınlanmaz indirdim, ve bir süre inceleme fırsatı buldum. Ve çok etkilendiğimi söyleyebilirim, önceki vs'lerde sık sık eksilikliğini hissettiğimiz

 

Devamı...

Bu yazımda sizle birkaç linq to sql örneği göstermek istiyorum. Linq to sql bizim için veri tabanı ile iletişimi sağlayan ve çok basit cümlecikleri uygun sorgulara otomatik dönüştüren bir kütüphanedir. .Net 3.0 ile gelmiştir. Bu kadar ön bilgiden sonra örneğimize geçmek istiyorum.Windows Application oluşturuyoruz ve  projemize sağ tuşla tıklayarak Add New Item diyoruz, Linq to Sql Classes’ı seçiyoruz. DataClasses1.dbml adında bir dosya eklendi projemize. Server explorerdan buraya tablolarımızı sürüklüyoruz. İşin en zor kısmı burasıydı, evet doğru duydunuz bu aşamadan sonra değişkenlerle uğraşıcaz, veri tabanındaki her bir hücreye sanki bir değişkenmiş

Devamı...

 Wcf Nedir ? Wcf Nasıl Kullanılır ? 

    Bu yazımızda Wcf servisine genel bir bakış yapıcağız ve basit bir servis yazıp bunu bir WindowsApplication ile çağıracağız. Öncelikle Wcf nedir ? Bir webservistir, web servislerin kullanım mantığı ise masa ütünden web sitemizde çalışması gereken kodları çalıştırabilmektir. Örneğin winapi’mizde login işlemimiz var ama kullanıcı adı ve şifremiz web teki veri tabanımızda. Bir sitedeki veri tabanına ulaşmak istiyorsak o site içinden kodlama yapmalıyız. Web servisimiz işte tamda bu işe yarıyor. Servisimizi yazıyoruz ve sitenin içine koyuyoruz. Daha sonra winapimizden bu servisi çağırıyoruz ve servis internette çalışarak bize istediğimiz sonucu veriyor. Kullanıcı adı ve şifreyi servisimize parametre olarak yollayıp , sonucu true ve false olarak alabiliriz. Bunun gibi bir çok kullanım yeri vardır, günümüz Web ortamında servise ihtiyaç duymadığımız zaman yok dersek yalan olmaz.  Gene fazla laf kalabalığı yaptım, o zaman hemen nasıl kullanılacağına geçelim, servisimiz bir asp .net sitesinin içinde olucak, yeni bir asp.net wep application Project oluşturuyorum.

 

Bir sonraki adımda oluşturduğum projeye sağ tuşa basıp add->new item diyerek wcf servsini seçebileceğim menünün açılmasını sağlıyorum.

 

Açılan menüden Wcf servisini seçiyorum. Seçim işlemini yaparken verdiğimiz isme dikkat etmemiz gerekiyor. Biz bir tane kullanıcağız, o yüzden ismini service1.svc olarak bırakıyorum. Ve add butonuna basarak projemin içine dahil ediyorum. 

 

Ve artık servisimi yazmak için gerekli olan tüm yapılara sahibim. Aşağıda gördüğünüz üzere Iservice1.cs ve Service1.svc altında iki tane yeni item eklendi projemize. Iservice dosyasının içinde kullanacağımız fonksiyonların tanımını yapacağız, service1.svc dosyasının altında ki cs uzantılı dosyada ise Iservice.cs'de yani kotratımızda tanımladığımız fonksiyonu kodlayacağız. Yani ilkinde benim böyle fonksiyonlarım var diye bir sözleşme yapıyoruz. Daha sonra diğerinde bu sözleşmedeki tanımlamaya bağlı kalarak fonksiyonlarımızı kodluyoruz.

 

Şimdi sözleşmemizin (Iservice.cs) içine bir bakalım neler var ?

using System;

using System.Collections.Generic;

using System.Linq;

using System.Runtime.Serialization;

using System.ServiceModel;

using System.Text;

namespace aspsitem

{

// NOTE: If you change the interface name "IService1" here, you must also update the reference to "IService1" in Web.config.

[ServiceContract]

public interface IService1

{

[
OperationContract] void DoWork();

}

Burda default olarak Dowork fonksiyonu gelmiş. Biz bunu silip kendi fonksiyonumuzu yazacağız.

Dowork fonskiyonunu silerek kendi fonksiyonumuzu yazacağız.

bool giris(string isim, string sifre);

Ondan sonra service1.svc.cs dosyasına geçip ordaki dowork fonksiyonunuda siliyoruz. Ve Service1:Iservice1 yazısının üstüne geldiğimizde sözleşmede tanımadığımız fonksiyonu üretmek için bize bir seçenek sunuyor.

#region IService1 Memberspublic bool giris(string isim, string sifre)

{

throw new NotImplementedException();

}

#endregion

throw ile başlayan satırı silip gelen kullanıcı adı ve şifreyi işlemek için bir kod yazıcağız.

if (isim=="Mehmet Bilen"&&sifre=="1986")

{

return true;

} return false;

Ve build edip projemizi kapatıyoruz. Artık herhangi bir projede bu webservisini kullanabiliriz. Hemen bir web application açalım. Ve projemize add web service reference ekleyelim.

Ve Açılan menüden web servisimizi kaydettiğimiz adresimizi yazarak go diyoruz. Aynı proje içine eklemiş olsaydık discover diyecektik. Kaydettiğimiz adres derken buil ederken localhostta bir adrese kaydeder o adresi belirtebiliriz. Veya publish etmişsek asp sitesini service1.svc dosyasının olduğu adresin buraya yazmamız lazım.

Giriş fonksiyonumuz direk gözüktü. Ok deyip projemize web servisi dahil edelim ve projemizde gerekli tanımlamalarımızı yapalım.

ServiceReference1.Service1Client servisim = new WindowsFormsApplication1.ServiceReference1.Service1Client(); Bu tanımlamadan sonra servisteki tanımlanan fonksiyonları kullanabilirim. Formumuza iki textbox ve bir buton ekleyip butonun click olayını aşağıdaki şekilde kodlayalım.

private void button1_Click(object sender, EventArgs e)

{

bool sonuc = servisim.giris(textBox1.Text, textBox2.Text);if (sonuc == true)

{

MessageBox.Show("Tebrikler Giris BaŸarili");

}

else MessageBox.Show("Hatali giriis, Lutfen tekrar deneyiniz");

}

Artık programımız hazır, derleyip çalıştıralım.

Tabi biz burada kafadan bir kullanıcı adı ve şifre kullandık,sağlıklı bir login uygulamasında veri tabanından çekilmesi lazım web servis kısmında. Onun dışında bir web sitesine masaüstünden müdahalede bulunmak istiyorsak,  web sitesi ile haberleşmesi gerekilen her konuda webservisler çok sağlıklı bir çözüm sunmakta.

Mehmet Enver Bilen   | enver_emb@hotmail.com | mehmetbilen.com

 

Aslında silverlight 2 ile hemen hemen ayni sadece bir kaç yerde çok ufak değişiklikler içeriyor. Öncelikle filedialog penceresini açtırabilmemiz için bir butonun click event'ına yazmamız lazım.

public MainPage()

      {

          InitializeComponent();

          btn1.Click += new RoutedEventHandler(btn1_Click);

         

           

      }

 

   

      void btn1_Click(object sender, RoutedEventArgs e)

      {

         

          OpenFileDialog op = new OpenFileDialog();

          op.Filter = "Jpg Dosyaları|*.jpg|Bitmap Dosyaları|*.bmp|Png Dosyaları|*.png|Gif Dosyaları|*.gif|Tüm Dosyalar|*.*";

          op.Multiselect = false;

          op.ShowDialog();

          if (op.File!=null)

          {

              Stream str = op.File.OpenRead();

              BitmapImage btmimg = new BitmapImage();

              btmimg.SetSource(str);      

              resim.Source = btmimg;

          }

         

      }

Şimdi kodumuzu inceleyelim.
Bunu ekrana getirmeden önce filter özelliğini sadece istediğimiz uzantıdaki resim dosyalaranı göstermesi için ayarladık. Ve multiselect false yaparak aynı anda sadece 1 dosya seçilebileceğini belirttik. Ve dialogumuzu show() diyerek ekrana getirdik. Esas mesele bundan sonra, hemen arkasından bir dosyanın seçilip seçilmediğini anlamak için bir if cümeciği koyduk ve seçilen dosya null değilse, yani bir seçilme işlemi yapılmışsa seçilen dosyayı açıyoruz. yeni bir bitmap resmi oluşturuyoruz, ve seçilen dosyayı bu bitmap resminin içine yüklüyoruz,. En sonunda da image nesnemizin source özelliğine bu oluşturduğumuz bitmapı veriyoruz.