تبليغاتX
برنامه نويسي VB
برنامه نويسي VB
يك ترفند كوچك

باز هم سلام

اين دفعه يك ترفند كوچك ياد مي‌دهم و مي‌روم.

 

اگر شما در يك فرم منوهاي زيادي درست كرده باشيد و بخواهيد همان منوها را در فرم ديگري هم درست كنيد، چه كار مي‌كنيد، آيا دوباره همه آنها را خودتان ايجاد مي‌كنيد؟ يك راه خيلي راحت هم وجود دارد.

 

يك شورتكات از برنامه Notepad در پوشه يا دسكتاپ ايجاد كنيد. فايل frm مربوط به فرم اولي را به داخل آن درگ كنيد. حالا شما شكل واقعي فايل frm را مي‌بينيد. (البته به جاي اين كار، مي‌توانيد روي فايل frm، راست‌كليك كرده و از Open With… مورد Notepad را انتخاب كنيد.)

 

حالا در اين فايل، دنبال سطرهايي كه مربوط به منوها هستند، بگرديد و آنها را انتخاب كرده و كپي كنيد. مثلاً اگر نام اولين منوتان mnufile باشد و آخرين زير منو از آخرين منو، mnuabout باشد، از سطر begin vb.menu mnufile شروع كرده و تا كلمه End بعد از سطر موبوط به mnuabout كپي كنيد. (دقت داشته باشيد كه بعد از آخرين منو، ممكن است چند تا كلمه End وجود داشته باشد شما همه را به جز آخري انتخاب و كپي كنيد.)

 

حالا فايل frm دوم را در notepad (با يكي از روش‌هاي گفته شده) باز كنيد. حالا بلوكي كه با نام مثلاً begin vb.form form2 شروع و با End تمام مي‌شود را پيدا كنيد. به قبل از كلمه End برويد و محتويات كليپ‌برد را Paste كنيد. حالا تغييرات را ذخيره كنيد و به فرمتان در vb نگاه كنيد.

 

اميدوارم خوشتان آمده باشد، خدانگهدار.

2 نوشته شده در  چهارشنبه 19 مرداد1384ساعت 22:57  توسط موسي مرادي 


سلام. راستشو بخواين يكم وقت پيدا كردم، گفتم يه مطلب براي اين وبلاگ بنويسم.

 

شايد شما هم تا حالا در اكثر كنترل‌هاي 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  توسط موسي مرادي