HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!
Merhabalar Bu makalemde sizinle gerçekleştirdiğimiz uygulamalarda özellikle başlangıç seviyesi bilgisayar kullanıcıları için yazılımlarımızın daha rahat kullanılmasında önemli bir rol oynadığını düşündüğüm Drag & Drop Türkçe adı ile Sürükle & Bırak işlemini paylaşmak istiyorum. Drag & Dropun ne olduğu hakkında size biraz bahsedecek olursam. Kısaca Drag & Drop yani Sürükle ve Bırakı bir nesne'nin içindeki veriyi alıp içeriği uygun başka bir nesneye taşımak olarak özetleyebiliriz. Drag & Drop olay'ının algoritmasını inceleyecek olursak. Drag & Drop olayını Şekil 1.Adaki gibi gösterebiliriz. Şekil 1.A Şimdide Şekil 1.Ada gösterdiğim şemadaki algoritmik yapıyı bir program üzerinde uygulamalı olarak göstermeye çalışarak konuyu pekiştirelim. Size bu makalemizde gerçekleştireceğimiz programın özelliklerinden ve işlevinden biraz bahsetmek istiyorum. Konuyu daha hızlı ve detaylı kavrayabilmeniz için programın işlevini Bir süper marketteki meyve reyonunda bulunan meyve çeşitlerinden ihtiyacımız olanları sepetimize atmak gibi düşünmenizi önemle tavsiye ediyorum. Formumuza Bir süper marketin meyve reyonunu ve elimizde taşıdığımız alışveriş sepetimizi simule etmek için iki adet ListBox kontrolü ekliyorum. Şimdi ListBox1 kontrolündeki bir objeyi ListBox2 ye sürükleyip bırakarak ListBox2 içine aktarılmasını sağlayacağız. Tekrar hikâyesel bazda kurgulayacak olursam. Programımız aracılığıyla reyondan bir meyveyi alıp sepetimiz içine bırakıyor olacağız. Şekil 1. B İlk olarak ListBox1deki bir objeyi seçebilmek için ListBox1in MouseDown olayını kullanıyor olacağız. Yeni başlayan arkadaşların konuyu daha iyi anlayabilmesi için örnekleyerek açıklayacak olursam. Reyondan ilk meyveyi alırken seçtiğimiz meyve üzerinde uygulayacağımız işlemi bu kısımda tanımlıyor olacağız. Private Sub ListBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown nokta = New Point(e.X, e.Y) indis = ListBox1.IndexFromPoint(nokta) If indis = -1 Then MsgBox("Lütfen 1 içerik seçiniz!") ListBox1.AllowDrop = True If e.Button = Windows.Forms.MouseButtons.Left Then ListBox1.DoDragDrop(ListBox1.Items(indis), DragDropEffects.All) End Sub Şimdi ListBox1in MouseDown olayı içine yazdığımız bu kodları adım adım inceleyerek açıklayalım. Öncelikle Point sınıfından bir nesne oluşturarak ListBox1 nesnemiz içinde tıkladığımız noktanın koordinat bilgilerini nokta içine aktarıyoruz. Bir sonraki adımda ise ListBox1 kontrolümüzün IndexFromPoint metodundan faydalanarak bu koordinatlarda hangi verinin yer aldığını indisini kontrol ederek integer tipli indis değişkenimiz içine atıyoruz. Bir sonraki adımda kullanıcımızın ListBox1 kontrolümüz içinde boş bir alani tiklamasini engellemek için bir hata kontrolü ve uyarısı olarak kod kümemiz içine If indis = -1 Then MsgBox("Lütfen 1 içerik seçiniz!") kodunu ekliyoruz. Bir sonraki ve benim için en önemli yer olan ListBox1.AllowDrop = True komutunu ekliyor yada ListBox1 kontrölünün Properties Ekranından AllowDrop seçeneğini True olarak seçiyoruzki meyvemizi reyondan alıp sepetimize atmak için önümüzde bir engel olmasın. Örnekleyecek olursam AllowDrop özelliğimizi reyondaki meyveler üzerinde bulunan bir kapaklı cam olarak düşünebiliriz. Eğer değerimiz False ise reyon üzerindeki cam kapalı olur ve meyvemizi reyondan alamayız. Meyvelerimizi alıp sepetimize atmak için bu camın açık yani True olması gerekmektedir. Artık ListBox1 kontrölümüz yani Meyve Reyonu ile işimiz bitti diyebiliriz. Artık point ve indis değişkenlerimiz aracılığıyla tuttuğumuz objemizi ListBox2 kontrölümüz içine taşımaya yani Reyondan almış olup elimizde tuttuğumuz meyvelerimizi sepetimize bırakmaya geldi sıra. Fakat üstte bahsettiğimiz AllowDrop durumu ListBox2 kontrölümüz içinde geçerli Sepetimizin kapaklı bir sepet olduğunu ve bu kapağı açmamız gerektiğini düşünelim ve ListBox2.AllowDrop özelliğini True yapalım. Artık sepetemizin kapağı açık ve içine leziz mi leziz meyvelerin atılmasını bekliyor. Elimizdede tuttuğumuz meyveleri sepetimize yani değişkenlerimizde tuttuğumuz bilgileri ListBox2 kontrölümüz içine birakmak için ListBox2 kontrölümüzün DragOver olayını kullanacağız. ListBox2 olayımızın DragOver olayini aşağıdaki gibi düzenliyoruz. Private Sub ListBox2_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListBox2.DragOver If e.KeyState = 1 Then e.Effect = DragDropEffects.All End Sub Burada KeyState parametresi ile mouse ve klavyede o an hangi tuşa bastığımızı gözlemliyoruz. KeyState parametresini değer olarak 1 yani Mouse'un sol tuşuna basılıyor ise Drop işlemini gerçekleştirmesini sağlıyoruz. Evet yavaş yavaş sona gelirken son adım olarak. ListBox2 içine objemizi eklemek için ListBox2.Items.Add(e.Data.GetData(DataFormats.Text)) ve ListBox1den taşıdığımız veriyi silmek için ListBox2.Items.Remove(e.Data.GetData(DataFormats.Text)) kod satirlarini ekliyoruz. Artık kasaya gidip sepetimiz içindeki ürünleri ödeyip afiyetle yemek kalıyor bizlere. Sevgili arkadaşlar her güzel şey gibi bu yazımında sonuna gelmiş bulunuyorum. Kısaca sizlere Drag&Drop olayından bahsetmek istedim. Umarım sizler için eğitici ve öğretici bir yazı olmuştur.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 13
- Görüntüleme
- 718
- Cevaplar
- 1
- Görüntüleme
- 584
