• 0
HMS

السؤال الأسبوعي

سؤال

سنقوم في هذا القسم بطرح سؤال إسبوعي يتعلق بالفيجوال بيسك نيت ونترك للأخوة محاولة حله وكتابة الحل هنا، وسنقوم معاً بدارسة الحلول المقترحة (إن كان هناك أكثر من حل صحيح) والتصويت معاً على أفضل الحلول. والغاية من هذا الأمر هو تحفيز الأعضاء على دراسة نقطة ما يتمحور السؤال حولها عملاً بالقاعدة التي أؤمن بها وهي "أفضل الطرق لدراسة لغة برمجة هي الإجابة على مشكلة أو سؤال".

يشرفني أن أطرح سؤال الإسبوع الاول وهو حول ال GDI+ ، والقضية مكونة من شقين وقد أرفقت الملفين التنفيذيين للبرنامجين حتى تفهموا تماماً ماذا أقصد :

1) أريد أن أمكن المستخدم من إستخدام الفأرة Mouse بحيث يستطيع رسم شكل حر (سواء القيام برسم شكل أو كتابة كلمة)، فكما نعلم فإنه من السهل رسم مثلث أو مربع أو دائرة...الخ، ولكن كيف أستطيع أن أجعل المستخدم قادراً على رسم شكل حر أو كتابة كلمة مستخدماً الماوس فقط، مع إعطاء المستخدم الحرية بإختيار حجم القلم المستخدم ولونه، وكذلك المطلوب هو أن المستخدم عندما يبدأ بالكتابة (أي بعد أن يضغط بزر الماوس الأيسر وجره) أن تتغير ال cursor الى شكل قلم (الملف التنفيذي مرفق بإسم freehand وال cursor موجودة وهي عبارة عن صورة قلم صغير).

2) الشق الثاني، أريد أن أمكن المستخدم من رسم مستطيل حر، اي أنه بمجرد أن يضغط على الماوس ويقوم بجره على الفورم يظهر له مستطيل لونه أبيض وبمجرد أن يترك الماوس يظهر المستطيل النهائي على الفورم وليكن لونه أحمر، مع إعطاء المستخدم الحرية بتغيير حجم المستطيل وإتجاهه ما دام ضاغطاً على زر الماوس، وهذا الأمر يشبه تماماً ما نقوم به عندما نعمل selection على سطح المكتب في الويندوز (الملف التنفيذي مرفق بإسم selection).

GDI.zip

تم تعديل بواسطه HMS
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

265 إجابة على هذا السؤال .

  • 0

عظيم يا حسن، الله يعطيك العافية، انا ظننت بأن سؤالي بايخ ولن يحاول أحد بأن يجبر بخاطري ويحاول حله..

(المثال الذي وضعه الزميل حسن هو ال Solution الكامل) لمن أراد الإطلاع على الكود

تم تعديل بواسطه HMS
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بعد أن إطلعت على الكود الذي كتبته يا حسن لاحظت ما يلي:

الكود الذي كتبته أبسط من الكود الذي كتبته أنا وبالتالي أفضل، ولكن يوجد ملاحظة صغيرة عليه وهي أنك عندما تكتب أو ترسم خطاً فإنه يوجد تقطّع فيه (سيتضح لك الأمر عندما تكبر حجم الخط)...

وبإنتظار حل المسألة الثانية قبل نهاية الإسبوع يا أعضاء المنتدى

هاهي ال Solution الذي كتبتها أنا.

freehand.zip

تم تعديل بواسطه HMS
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مهلا أخي هارون لننهي الأولى قبل البدأ بالثانيه

المشكله: جرب بعد الرسم على الفورم تصغيرها Minimize و تكبيرها مره أخرى تجد ان الرسم كله قد إختفى ما هو الحل؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أمر طبيعي (وهي تحدث أيضاً إن قمت بتغطية الفورم بفورم آخر وليس فقط عندما تعمل تصغير)، أظنك تفتقد خاصية AutoRedraw في الفيجوال بيسك 6 ؟

في ال NET يجب أن تضع الرسم في حدث Paint للفورم إن أردت إعادة رسمها بعد التصغير.

تم تعديل بواسطه HMS
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

وهذا مثال بسيط يا حسن وهو لتوضيح كيفية التغلب على هذه المشكلة... قم برسم خط على الفورم ثم قم بتصغيره أو تغطيته بفورم آخر.

redraw.zip

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
انا ظننت بأن سؤالي بايخ ولن يحاول أحد بأن يجبر بخاطري ويحاول حله..
أعتقد أنها من أروع الأفكار التي قدمت في المتندى ....

الجواب مضمن الجواب 1 و 2

Selection.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

رائع يا هشام، رائـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــع.

الله يعطيك العافية.

وهكذا نكون قد إنتهينا من سؤال هذا الإسبوع، سنترك الحلول لمدة أيام حتى يطلع عليها الأخوة قبل وضع سؤال الإسبوع الثاني.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

صديقي هارون

أرحوا ان لا يكون العمل هنا مجرد كود فقط

نريد أن نقوم بالشرح و معرفة أسباب تفضيل كود عن أخر

و شرح الإسلوب و طريقة التفكير

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يا حسن، الأكواد بسيطة ولا تحتاج لشرح ولو قام أحد الأعضاء بطرح نقطة على كلمة في الكود لأبهجنا الرد (بإفتراض بأنهم فعلاً قرأوا هذه الأكواد)... كما يبدو فإنه لا حياة لمن تنادي، كان أمنيتي أن أجد تفاعل ونقوم بالتحيل والشرح وعقد المقارنات والإستفادة من خبرات بعضنا البعض، ولكن بعض الأمنيات لا تتحقق.... أمر محبط حقاً

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يا عم هارون إن شاء الله نستمر

و ضع هذه الأسأله في الأرشيف الخالي

و الأعضاء إحتمال ياخدوا بالهم معانا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

طيب يا حسن، اطرح سؤال هذا الأسبوع أنت، قم بكتابته بمشاركة جديدة وضع رابط الأسبوع الأول فيها.

هذا بالطبع إن كنا إنتهينا من الأسبوع الأول (أعتقد ذلك).

تم تعديل بواسطه HMS
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

طيب، سأطرح سؤال الأسبوع الثاني وسأجعله بايخ حتى يتفاعل معنا شبيبة المنتدى. :angry:

كيف أستطيع أن أجعل OpenFileDialog يتعرف على فايل واحد بعينه ، نحن نستطيع أن نجعله يتعرف عن نوع معين فقط من الفايلات، فمثلاً لو أردنا له أن يظهر فقط فايلات ال Text أي الفايلات التي إمتدادها txt فإننا نكتب الكود التالي:

OpenFileDialog1.Filter = "Text Files (*.txt)|*.txt"

ولكنني أريد أن أجعله يتعرف على فايل بعينه، في المثال المرفق لا يستطيع ذلك الكنترول التعرف على أي فايل سوى فايل Text أسميته Haroon، لن يفتح أي فايل Text آخر....

والشق الثاني للسؤال هو: لماذا نحتاج مثل هذا التحديد؟ يوجد بعض التطبيقات لدينا نريدها أن تفتح لنا فايل محدد فما هي برأيك تلك التطبيقات.

أتمنى على أحد الزملاء المشرفين بتغيير عنوان هذه المشاركة الى:

سؤال الأسبوع الثاني

كيف أجعل OpenFileDialog يفتح فايل واحد لا غير

Second_Week.zip

تم تعديل بواسطه HMS
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

أخي البرنامج الذي بعته غير محمي بالكامل ضد كل الملفات حيث إذا كتبت في مكان اسم الملف *.* ستظهر كل الملفات وستستطيع فتحها كلها

أرجو من الإخوة الأعضاء المشاركة في دعم "سؤال الأسبوع"

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

أخي هارون الكود مرفق و لكن كلام الأخ Hesham.Net سليم

المفروض نجد حل لتلك المشكله

secWeek.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

كلامكما صحيح، وكذلك لو كان عندك ملف Text وقمت بنسخه أسمه مع إسم مساره

فإنك تستطيع فتحه.

المفروض نجد حل لتلك المشكله

لا اعتقد بأنه يوجد حل سوى أن تعمل dialog بنفسك، اي أن تبنيه من الصفر، ولاحظوا بأن فتح ملف واحد ب OpenFileDialog هو مبدأ مضحك، فنحن نستطيع أن نفتح الملف في هذه الحالة مباشرة دون الإستعانة بهذا الكنترول :rolleyes: .

تم تعديل بواسطه HMS
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أنا مش عارف ليه الأعضاء لا يشاركون في هذه الأسأله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لماذا لا نستعمل الطريقة

    Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
       If OpenFileDialog1.FileName.EndsWith("Haroon.txt") Then
       End If
   End Sub

وهكذا لايفتح إلا هذا الملف

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أما السؤال 2

أعتقد أن برامج الsetup هي التي تحتاج لمثل هذه الأمور اي عندما يكون ملف مفقود تبحث عن الملف بعينه

Second_week.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

حسناً يا هارون، لقد قمت بتغيير العنوان مع تعديل بسيط به لأن السؤال لا يظهر كله :(

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
  If OpenFileDialog1.FileName.EndsWith("Haroon.txt") Then

كلامك صحيح، ولكن ليس هذا قصدي عندما قلت بأنه يجب أن تبني Dialog منذ البداية، قصدي كيف أمنع المستخدم من رؤية أي فايل غير الفايل الذي أريده في OpenFileDialog (أي أنه لا يستطيع رؤية أي فايل غير الفايل المحدد حتى ولو كتب *.*)... في هذه الحالة يوجد إحتمالين، ان تبني Class تقوم بوراثة الفئة FileDialog ثم تجري التعديلات المطلوبة، أو تبني Dialog على شكل فورم، وفي كلا الحالتين تحتاج الى جهد ووقت ضخمين.

بالنسبة للجزء الثاني من السؤال، أنا لا أعلم سوى إستخدام وحيد وهو عندما تعمل كراك لأحد البرامج.

حسناً يا هارون، لقد قمت بتغيير العنوان مع تعديل بسيط به لأن السؤال لا يظهر كله
...

أشكرك أيها الحبيب

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
ان تبني Class تقوم بوراثة الفئة FileDialog

للأسف لا يمكننا ذلك لأن FileDialog - حسب ملفات الـ MSDN - لا نستتطيع وراثته NonInheritable Class :

Quote from MSDN:
FileDialog is an abstract class, and cannot be instantiated directly. Additionally, you cannot inherit from this class.

سوف تضطر الى أن تبني الكلاس من الاف الى الياء :wacko:

لقد فكرت في فكرة مشابهة في الماضي و بدأت في تنفيذها و لكن تناسيت الموضوع..

و كانت هذه الفكرة هي ان أنواع الملفات المراد فتحها بالـ OpenFileDialog تكون ملونة بلون أحمر أو أي لون يشد الانتباه، و لكني لم أكمل الموضوع لأنه سيأخذ وقتاً كثيراً B)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أشكرك يا محمد على هذه المعلومة التي كنت أجهلها.

والآن هل يستطيع أحد الأخوة أن يضع سؤال الأسبوع الثالث؟؟؟ نريد سؤالاً يجعلنا مشغولين لمدة يومين، فهل من مستجيب؟ بالطبع يجب أن يكون السؤال خفيف لطيف لا يتطلب جهداً كبيراً (أقصد جهد كتابة أكواد طويلة مملة، بل كود قصير يشغل الدماغ).

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ورحمة الله وبركاته

دة مثال عبارة عن لعبة كان احد الاخوة حطها فى منتدى

نجرب كدة

HaHa.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يا راجل، نريد أسئلة وليس ألغاز... على كل حال، الجواب هو دائماً نصف ما تضعه في الصندوق، فإن وضعت الرقم 8 فالناتج هو 4...

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .