|
|
|
|
|
سلام. راستشو بخواين يكم وقت پيدا كردم، گفتم يه مطلب براي اين وبلاگ بنويسم. شايد شما هم تا حالا در اكثر كنترلهاي vb، ايونتهايي را با پيشوند OLE ديدهايد، ولي آيا كاربرد آنها را هم ميدانيد. من خودم هم بلد نبودم، ولي از وقتي ياد گرفتم، ديدم خيلي جالب هستند و خيلي هم به درد ميخورند. اگر در بعضي از نرمافزارها، مثل Windows media player يك فايل را از خارج برنامه به داخل پنجره درگ كنيد، خواهيد ديد كه همان فايل را پخش خواهد كرد. ايونتهاي OLE هم دقيقاً براي اين كار ايجاد شدهاند. خب حالا يك پروژه vb ايجاد كنيد. و داخل فرم، فقط يك ليستباكس قرار دهيد. خاصيت OLEDropMode فرم را به Manual تغيير دهيد. حالا در پنجره كد، كدهاي زير را وارد كنيد: Private Sub Form_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) List1.Clear For I = 1 To Data.Files.Count List1.AddItem Data.Files.Item(I) Next End Sub Private Sub List1_Click() Me.Picture = LoadPicture(List1.List(List1.ListIndex)) End Sub حالا برنامه را اجرا كنيد و يك پوشه كه در آن چند تا عكس داريد، باز كنيد و چند تا از عكسها را به داخل برنامهمان درگ كنيد. سپس روي نام آنها در ليستباكس كليك كنيد. جالب بود مگه نه!؟ حالا كد برنامه را بررسي ميكنيم. رويداد OLEDragDrop زماني اجرا ميشود كه كاربر چند فايل را به داخل برنامه درگ كند. پارامتر Data از اين رويداد، فايلهاي درگ شده را به ما برميگرداند. در بالا، ما يك حلقه به تعداد فايلهاي درگ شده ايجاد كرديم و به وسيله آن، نام تمام فايلها را به ليستباكس اضافه كرديم. بقيهاش هم كاملاً واضح است. فقط يادتان باشد كه OLEها تقريباً در تمام كنترلها وجود دارند. براي درك بهتر اين مطلب يك ليستباكس با نام lstFiles و يك دكمه با عنوان &Stop… و با نام cmdStop داخل آن بگذاريد. ويژگي OLEDropMode ليستباكس را به Manual تغيير دهيد. در پنجره كد، كدهاي زير را وارد كنيد: Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long Private Const SND_ASYNC = &H1 ' play asynchronously Private Sub cmdStop_Click() sndPlaySound " ", SND_ASYNC End Sub Private Sub LstFiles_Click() sndPlaySound LstFiles.List(LstFiles.ListIndex), SND_ASYNC End Sub Private Sub LstFiles_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single) LstFiles.Clear For I = 1 To Data.Files.Count LstFiles.AddItem Data.Files.Item(I) Next I End Sub حالا برنامه را اجرا كنيد و چند تا فايل wav (به ياد داشته باشيد كه تابع sndPlaySound فقط فايلهاي wav را ميخواند) به داخل ليستباكس درگ كنيد. حالا اگر روي يكي از فايلها كليك كنيد، آن فايل اجرا ميشود و دكمه stop هم اجراي فايل را متوقف ميكند. كد برنامه هم نيازي به توضيح ندارد؛ اگر يكمي دقت كنيد، متوجه ميشويد كه چكار كردهايم. اميدوارم برايتان مفيد واقع شده باشد. منتظر نظراتتان هم هستم. ضمناً در صورت نظر دادن، به اين سؤال من هم جواب دهيد: به نظر شما نوشتن وبلاگ با زبان محاوره بهتر است يا با زبان معيار؟ خدا نگهدار.
|
||
|
2
نوشته شده در دوشنبه 17 مرداد1384ساعت 14:30 توسط موسي مرادي
|
||