Collections Initializers في Visual Basic 2010

19 06 2009

في كل اصدارة جديدة جديد برمجي ، هذا ما عودتنا عليه مايكروسوفت خصوصا في السنوات الاخيرة ، حيث تجد العديد من التطويرات الجديدة في لغة البرمجة مما يكسبها المزيد منت المرونة والقوة في نفس الوقت .

من التطويرات الجديدة في النسخة القادمة من Visual Basic والتي تحمل الرقم 10 هي ما يدعى بمنشئات المجموعات Collection Initializers . في هذه المقالة سنتعرف على الـ Collections Initializers .

أقرأ باقي الموضوع »





مراقبة الملفات الموجودة في الحافظة Clipboard

1 02 2009

في بعض الاحيان قد تحتاج الى كتابة كود لمراقبة الملفات الموجودة في الحافظة Clipboard ، وأدنى ما تحتاجه غالبا هو معرفة المسار الكامل للملف والعملية ادت الى وضع الملف في الحافظة سواء كانت نسخ copy او قص Cut ، قد تتخيل لوهلة أن العملية قد تكون معقدة وصعبة للغاية ، لكن دعني اخبرك بان الكائن My.computer.clipboard الخاص بالتعامل مع حافظة النظام يحتوي على طرق Methods تسهل معرفه محتوى الحافظة سواء كان صوت او نص او ملفات ، فلنتابع معا الفكرة التي اقتبستها من احد المواقع الاجنبية .

الطريقة GetFileDropList تعود لنا بـ Collection تمثل قائمة بالملفات الموجودة في الذاكرة ، وسيكون بإمكاننا بسهوله كتابة كود كالتالي للحصول عليها في اداة TextBox متعددة الاسطر:

        If My.Computer.Clipboard.ContainsFileDropList = True Then
           
Dim FileNameCollection As Collections.Specialized.StringCollection = _
                         
My.Computer.Clipboard.GetFileDropList()
           
For Each FileName As String In FileNameCollection

                TextBox1.AppendText(FileName & vbNewLine)
           
Next

        End If

هكذا نكون قد تمكنا من الحصول على قائمة بأسماء الملفات ، والآن نرغب في الحصول على الاجراء الذي أدى الى وجود هذه الملفات في الحافظة ، هل هو نسخ Copy أم نقل Move ؟

للحصول على نوع الاجراء Drop Effect Type، سنقوم بعمل كائن من النوع Object ونسند له القيمة:

My.Computer.Clipboard.GetData("Preferred DropEffect") 

، نقوم بعدها بقراءه اول اربع بايتات الى مصفوفة ، يمثل الحرف الأول منها نوع الاجراء ، وهو المهم هنا !

السطور التالية توضح ذلك :

            Dim DropEffectData(3) As Byte
           
Dim DropEffectCheck As Object = _
               
My.Computer.Clipboard.GetData("Preferred DropEffect")
           
DropEffectCheck.Read(DropEffectData, 0, DropEffectData.Length)

والآن اصبحنا جاهزين تماما للقيام بالمهمه الكاملة ، لذلك قمت بوضع مثال بسيط هذا هو الكود الخاص به :

‘*>——————————————————————-
        ‘*>Handle Droplist
        ‘*>——————————————————————-
        If My.Computer.Clipboard.ContainsFileDropList() Then

            ‘*>——————————————————————-
            ‘*>Get DropEffect Type
            ‘*>——————————————————————-
            Dim DropEffectData(3) As Byte
           
Dim DropEffectCheck As Object = _
               
My.Computer.Clipboard.GetData("Preferred DropEffect")
           
DropEffectCheck.Read(DropEffectData, 0, DropEffectData.Length)

            Dim DropEff As DragDropEffects
           
Dim DropEffType As String

            Select Case DropEffectData(0)
               
Case 2
                   
DropEff = DragDropEffects.Move
                   
DropEffType = "Move"
               
Case 5
                   
DropEff = DragDropEffects.Copy
                   
DropEffType = "Copy"
               
Case Else
                   
DropEffType = "???"
           
End Select

            DropEffect.Text = DropEffType

            ‘*>——————————————————————-
            ‘*>Get File Names
            ‘*>——————————————————————-
            Dim FileNameCollection As Collections.Specialized.StringCollection = _
                                     
My.Computer.Clipboard.GetFileDropList()
           
For Each FileName As String In FileNameCollection

                DataText.AppendText(FileName & vbNewLine)
           
Next

        End If

 





كود لفتح صفحة انترنت

12 09 2008

انتشرت عدة طرق مختلفة لفتح صفحات الانترنت ، فمنها ما يستخدم الدالة shell القديمة والتي ستظهر Command Prompot يظهر ويختفي ، ومنها ما يستخدم المكتبة البرمجية التابعة لـ Internet Explorer ، ولكن وجدت كود ثالث يستخدم طريقة الـ Process كما هنا :

 

        Process.Start("IExplore.exe", "www.google.com")




كسر احتكار فضاء الاسماء My بلغة #C

31 08 2008

قد يبدو هذا العنوان مدويا لبعض المبرمجين ، ولكنه حقيقة فعلاً ! في هذا المقال نتناول كيفية استخدام عناصر فضاء الاسماء My داخل لغة C# مباشرة !

أقرأ باقي الموضوع »





معلومة : اضافة مجلد مخصص لمربع حوار OpenDialog وأمثاله

23 08 2008

يمكنك اضافة مجلد معين الى قائمة المجلدات التي تظهر على جانب مربع الحوار OpenDialog,Savedialog من خلال الـ Collection المسماه CustomPlaces . كل الفكرة تقوم على اضافة Custom Place جديد فقط ويتم ذلك بعدة طرق ، المثال التالي يمثل كيفية اضافة مجلد مخصص عن طريق ذكر مسارة الكامل :

 

OpenFileDialog1.CustomPlaces.Add(“C:\dot net”)

الطريقة التالية تستخدم ما يعرف بالـ Known GUID لمناداة مجلد خاص بنظام التشغيل ويندوز فيستا وفي هذه الحالة هو مجلد Pictures الخاص بالمستخدم الحالي :

‘ Add Pictures custom place using GUID. openFileDialog1.CustomPlaces.Add(“33E28130-4E1E-4676-835A-98395C3BC3BB”)

 

وللحصول على قائمة بالـ Known GUID’s يمكنك زيارة الرابط التالي :هنا 

يوجد طريقة ثالثة ايضا كالتالية :

‘ Add Links custom place using GUID openFileDialog1.CustomPlaces.Add(New FileDialogCustomPlace _ (New Guid(“BFB9D5E0-C6A9-404C-B2B2-AE6DB6AF4968″)))

ملاحظة أخيرة ، هذه المقالة تنطبق على التطبيقات التي ستعمل تحت ويندوز فيستا فقط ، بانسبه لباقي انظمة التشغيل فلن يحدث أي تغيير يذكر في مظهر البرنامج .





العناصر المشتركة shared Members في visual basic .net :

18 08 2008

العنصر الذي يصرح عنه بانه مشترك Shared في Visual Basic .Net ( او static في لغات الـ C ) يعتبر عنصرا مشتركا لكل الفئات التي تنشأ من نفس الفئة . كلام مكرر وغير مفهوم وكل الكتاب يكتبونه نفسه عند شرحهم وتناولهم لهذا الموضوع وتعت منه كثيرا وأعتقد انك انت عزيزي القارئ بدأت تكره كلمة Shared عندما تراها في أي كود لنفس السبب !! اليس هذا ما تريد قوله ؟ طيب لندخل معا على الموضوع من زاوية اخرى  :

أقرأ باقي الموضوع »





التطبيقات متعددة الطبقات N-Tier Applications من منظور تقنيات .Net framework :

12 08 2008

يعد تطوير التطبيقات على شكل طبقات من افضل الطرق المتبعة في هندسة البرمجيات ، فهنا يمكن تقسيم البرنامج على عدة طبقات Layers تتولى كل طبقة منها مهمه معينه ، وبالتالي يسهل التعديل على أي منها عند حدوث أي خطأ او نقص او اكتشاف اي ثغرة امنية او قصور . وأغلب التطبيقات التجارية – خصوصا قواعد البيانات – تعتمد هذه الطريقة ، لكن هذا لا يعني ان البرمجيات الصغيرة والمجانية بعيده عن التطبيق هاهنا .في هذا المقال المترجم ، نتطرق – بشكل نظري – الى كيفية بناء تطبيقات متعددة الطبقات من خلال تقنيات Microsoft .Net .

أقرأ باقي الموضوع »





التعامل مع الاخطاء في البرمجة الكائنية : الفئة ExecutionCondition مثالاً

22 07 2008

يعد اسلوب البرمجة الكانئية افضل اسلوب برمجي تطبقه في معظم اللغات الحديثة والقوية وخصوصا لغات الدوت نت سواء كانت VB.Net او C# ، وعندما تطبق هذا الاسلوب فمن الاكيد بانك ستقوم ببناء فئات Classes وستحتوي بداخلها على اعضاء Members كـ Properties,Function,Subs وغيرها ، ثم تستخدم هذه الفئات في أي جزء رئيسي من الرنامج بإنشاء كائن جديد منها ثم اسناد القيم والخصائص إليه من خلال المشيد Constructor في حالة وجوده او من خلال الخصائص القابلة للكتابة Writable Properties او لاشيء من هذا !

لاحقا وبعد ان تكتب الاكواد داخل الأعضاء الخاصة بفئتك التي انشاتها للتو واللحظة ، فإنك قد تتساءل حول عملية قنص الاستثناءات Exceptions ، فماذا لو حدث استثناء معين او خطاء وقت التنفيذ في الكود ؟ هذا ما سنناقشه هنا .

أقرأ باقي الموضوع »





60 أداة مجانية لـ Visual Studio 2008 و 2005

17 07 2008

اثناء تجولي في احد مواقع مايكروسوفت المعروفة ( لست بصدد الحديث عنه الآن ) وجدت اعلانا من شركة DevExpress يفيد بوجود طقم مكون من 60 اداة مختلفة بشكل مجاني تماما وهي تشكيلة مختلفة ومتنوعة فعلا  :

http://www.devexpress.com/Products/Free/WebRegistration60/

 

لم اقم بتحميل هذه الادوات فأنا لا احتاجها غالبا ولكن وضعتها فقد يحتاجها احد ما يوما ما ، وافضل تحميلها الان حتى لا ينتهي العرض من قبل الشركة





للمبتدئين : اداة Installed Printers Info Tool

8 07 2008

من اهم المواضيع البرمجية التي نحتاجها – خصوصا للمهتمين بالرسم – هي الطباعه ، وهذا ليس موضوع حديثي هنا ، بل انني قررت ان اقدم مثالا صغيرا للاخوة المبتدئين ، لمعرفة الطابعات المثبتة في النظام وخصائص كل واحده منها بضغطة زر صغيرة وبأقل قدر ممكن من الكود !
 
البرنامج يقوم بجلب اسماء الطابعات المثبته الى اداة الـ combobox ثم عرض معلومات الطابعة المحددة بسهوله شديدة على اداة PropertyGrid الرائعه والتي ستوفر عليك مجهود كبير جدا قد لا تتخيله حاليا !
من منظور .Net framework ، قمت باستيراد فضائي الاسماء System.Drawing و System.Drwaing.Printing .

وانتظر منكم اخواني واخواتي الاعزاء تحديد الفئة المسئوله عن معلومات الطابعة .

للتحميل انقر هنا