Visual Basic, Surukle & Bırak
Surukle ve bırak (drag & drop), Windows işletim sisteminin temel ozellik ve kolaylıklarından biridir. Orneğin bir Word dosyasının ikonunu acık olan Microsoft Word programının uzerine surukleyip bıraktığınızda, ikona bağlı dokumanın MS Word tarafından acıldığını goruruz.
Surukle ve bırak işlemi, Windows işletim sisteminde cok yaygın olarak kullanılmasına rağmen Visual basic programlarında sıkca desteklenen bir uygulama değildir. Aslında bunun sebebi işlemin zorluğu değil, anlaşılamamasıdır. Bu makalede Visual Basic programlarında surukle ve bırak işleminin nasıl uygulanacağına biraz değinmek istedim.
Drop Start -"Bırak Başlat"
Bir programı calıştırmak icin pek cok yol vardır. Bunlardan biri, nesnenin ikonunu, ilgili program kısayolunun uzerine surukleyip bırakmaktır. Bu yapıldığında ilgili program calışmaya başlar ve "konut satırı parametresi" olarak suruklenip bırakılan dosyanın tam adresini alır.
Bir Visual Basic programında, programa gecilen "komut satırı parametreleri"ni Command$ fonksiyonu ile oğrenebiliriz ve ilgili işlemi yapabiliriz. İşte bu sayede "Drop Start" işlemini gercekleştirebiliriz. Orneğin bir dosyanın yazdığımız program tarafından sunulmasını sağlayabiliriz.
Peki Command$ ile komut satırı parametrelerini nasıl okuyacağız? İşte bunun en basit orneği;
Private Sub Form_Load()
Dim sKomut as String
sKomut = Command$
MsgBox sKomut
End Sub
Formun programınızın ana formu olduğunu unutmayın.
Gorulduğu gibi cok basit bir teknik ve aynı zamanda kullanışlı. Surukleyip program ikonumuzun uzerine bıraktığımız dosyanın tam adresi ve adı bize komut satırı parametresi olarak gelecektir. Bu parametreyi programın icinde istediğimiz gibi kullanabiliriz.
Drag & Drop - "Surukle ve Bırak"
Once surukleyelim;
Visual Basic kontrollerinin coğu surukle bırak işlemine uygun tasarlanmıştır. Bir kontrolun DragMode ozelliğini "1 - Automatic" sectiğimizde, kontrole surukle ozelliğini kazandırmış oluruz. Kullanıcı program icinde ilgili kontrole tıklayıp suruklemeye başlayabilir. Eğer kontrolun DragMode ozelliğini "0 - Manual" olarak bırakırsak, kontrolun suruklenmesini Drag metodunu kullanarak sağlayabiliriz. TextBox gibi bazı kontroller DragMode ozelliğine sahip değillerdir. Bu nedenle bu tip kontrollerin suruklenmesini ancak Drag metodlarını kullanarak sağlayabiliriz.
Bırakmaya hazır mısınız?
Kullanıcı suruklediği nesneyi başka bir kontrol uzerine getirdiğinde, kontrol bir "DragOver" olayı alır. DragOver olayı parametre olarak suruklenen nesnenin referansını alacaktır. Bu sayede hedef kontrol, suruklenen kontrolun bilgilerine ulaşabilecek ve gerekli bilgileri topladıktan sonra tepki verebilecektir. Orneğin gorsel olarak bu nesneyi kabul edebileceğini renk değiştirerek gosterebilecektir.
Bıraktıııım;
Sonunda bırakmaya hazırız. Kullanıcı nesneyi hedef kontrolun uzerinde bıraktığında, hedef kontrol bir "DragDrop" olayı alacaktır. DragOver olayında olduğu gibi, "DragDrop" olayında da suruklenen/bırakılan kontrolun referansı parametre olarak elimizde olacaktır. Bu sayede işlem tamamlanırken kullanılacak bilgileri suruklenen kontrolden alma şansına sahip olabiliyoruz.
İlk Ornek;
Oncelikle bir formun uzerinde bir labelTest adında Label, optionTest adında bir Option Button ve textAd adında bir TextBox kontrolleri oluşturalım. LabelTest kontrolunun DragMode ozelliğini "1 - Automatic" yapalım. Bu durumda yapmak istediğimiz, TextBox kontrolunun uzerine suruklenen kontrol Label ise TextBox'ı yeşil yapıp Surukle Bırak işlemini kabul ettiğimizi belirtmek, Option Button ise kırmızı yapıp Surukle Bırak işlemini reddetmek olsun. Bırakılan Label'in adını da TextBox'ımıza yazdıralım;
Bunun icin iki adet olayı yakalayacak "event handler" rutinleri yazmamız gerekir.
İlk olarak TextBox'ımızın rengini değiştirelim. Bunun icin DragOver olayı;
Private Sub textAd_DragOver(Source As Control, X As Single, Y As Single, State As Integer)
'Suruklenen kontrol Label mi?
If TypeOf Source Is Label Then
'Evet Label. Peki suruklenmenin hangi evresinde?
If State = vbEnter Or State = vbOver Then 'Uzerime geldi veya uzerimde surukleniyor
textAd.BackColor = vbGreen 'Tamam bırakabilirsin! Yeşil!
Else 'Uzerimden ayrıldı
textAd.BackColor = vbWhite 'Artık uzerimde değilsin! Beyaz!
End If
Else
'Hayır Label değil. Suruklenmenin hangi evresinde?
If State = vbEnter Or State = vbOver Then 'Uzerime geldi veya uzerimde surukleniyor
textAd.BackColor = vbRed 'Hayır ben bu tip kontrolleri desteklemiyorum! Kırmızı!!
Else
textAd.BackColor = vbWhite 'Artık uzerimde değilsin! Beyaz!
End If
End If
End Sub
Son olarak ta Label'in adını TextBox'a yazdıralım
Private Sub textAd_DragDrop(Source As Control, X As Single, Y As Single)
If TypeOf Source Is Label Then textAd.Text = Source.Name
textAd.BackColor = vbWhite
End Sub
Temelde Surukle Bırak işlemi kullanımı bu kadar basit işte.. Umarım işinize yarar bilgiler vermişimdir.
__________________
Visual Basic ile Surukle Bırak
Visual Basic0 Mesaj
●25 Görüntüleme
- ReadBull.net
- Programlama ve Yazılım
- Programlama Dilleri
- Visual Basic
- Visual Basic ile Surukle Bırak