الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في التعامل مع صورة خلفية فورم Mdi أرجو المساعدة

بدأه maajed555 في 12 مارس 2009 · 13 رد · 2,102 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

إخواني

حاولت ضبط الصورة في فورم الام دي أي

ولكن واجهتني مشكلة أنها لا تتمدد مع الفورم

فقمت بوضع اداة بكشر بوكس على الفورم الرئيسي

ثم وضعت عليها أداة إمج لكي تتحكم في تمدد الصورة

ولكن

عند عرض أي فورم آخر فإنه لا يظهر فوق هذه الأدوات الموضوعة على الفورم الأب

ما هو الحل؟؟

وكيف أجعل الصورة تتمدد مع تمدد الفورم بدون أن تمنع من ظهور الفورم الابن؟؟

وشكرا لكم

ملاحظة / المثال في المرفقات :)

Try.rar

#2

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

اخي وحسب علمي انه لايمكن عرض الفوم بوجود البكتشر بوكس

لان الفورم يعتبر ابن للمديا فورم ولبالتالي سوف تضايقة اي ادا موجودة في الميدا فورم انا عملت ليك حل مشعارف اذكان يرضيك وهو نجعل البكتشر بوكس ختفي من حيث الحجم اثنا ظهور الفورم ثم العوده بعدها

دا حد علمي ارجو ان تجد اجابة اكثر دقة

Try2.rar

#3

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

وهذا حل اخر افضل من الاول راجع المثال ستفهم ما فعلت

وهو يلبي طلبك تماما

علي ما اعتقد

Try3.rar

#4

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

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

#5

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

أنظر المرفق

Try.rar

اعتذر عن عدم تمكني للمتابعه الدورية في وقتنا الحالي

فليقبل الجميع تقديري واحترامي .. ولكم تحياتي

#6

الأخ ذاكر ...

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

شكرا لك أخي شادي ...

أستاذي الكبير mrx_ta7ady

منذ أن رأيت اسمك في المشاركة الأخيرة وقد أيقنت أن المشكلة قد تلاشت وزالت العقبات ... كم أتمنى أن أرى اسمك متألق دائما في المنتدى عموما ، وفي رسائلي خصوصا :) ، وكم هو شرف لي أن تشاركني حل مشاكلي ، كما أرجو منك أن تشرح لي الكود الذي وضعته في المثال المرفق -إن كان لديكم وقت يسمح بذلك- لكي تكتمل الفائدة بالنسبة لي .... جعلها الله في ميزان حسناتك ، وشكرا لك

#7

شكرا لثنائك علينا :)

اولا الـ Picture1 هي بمثابة Control مؤقت اي Temp يتم طباعة الصورة فيه بحجمها الجديد

والصورة الأصلية موجوده في الـ Image1 الموجوده داخل الـ Picture1

وفي الحدث Load للـ MDIForm وضعنا امرا لفتح خاصية الـ AutoRedraw بملأ قيمتها إلى True

وهي الخاصية المسؤلة عن عدم حذف اي Graphics مطبوعة على الـ Control ذاته

اي عند طباعة صور او نصوص على الـ Picture1 لا يتم مسحها الا عند الرغبة

وذلك بإستخداك Method تدعى بـ cls .. اي لحذف الـ Graphics يكون الأمر كالتالي

Picture1.Cls

ومن بعد ذلك وضعنا أمر آخر لإخفاء الـ Picture1 .. حيث لا حاجة لنا في رؤيتها او اظهارها

إلى جانب ان إظهارها عائق لنا حيث ستؤثر على مساحة عرض الـ Forms للـ MDIForm

اما في حدث الـ Resize للـ MDIForm وضعنا امر تمديد الـ Picture1

وهذا لاننا سنلتقط من الـ Picture1 الصورة التي سنضعها في خلفية الـ MDIForm

علما بان الصورة الملتقطة ستكون بحجم الـ Picture1 لذا يجب ان تكون الـ Picture1 بحجم الـ MDIForm

ووضعنا شرطا بان الـ ScaleHeight اذا صفر يتم إستخدام الـ Height اما لو غير ذلك فيتم إستخدام الـ ScaleHeight نفسه

والـ ScaleHeight هو صافي إرتفاع او صافي طول منطقة الخلفية للـ MDIForm

اي اننا عند استخدام خاصية الـ Height سيكون هناك فرقا بطول منطقة الـ Menu Bar و اللـ Title Bar ايضا

والباقي مثل الـ Top والـ Left والـ Width فيتم ظبطهم تلقائيا وهذا بسبب الـ Align للـ Picture1

وهي الخاصية المسؤلة عن محاذاة الاداة ذاتها لـ Parent ويترتب على ذلك تغيير بعض الاحجام حسب المحاذاة نفسها

اما في حدث الـ Resize للـ Picture1 فقمنا بحذف الصورة المطبوعة على الـ Picture1 سالفا أولا

ثم قمنا بطباعة الصورة من جديد ومن اصلها الموجود في الـ Image1 .. وهذا بإستخدام دالة الـ PaintPicture

وهي دالة لطباعة الصور مع امكانية تغيير حجم الصورة المطبوعة عن حجم الصورة الأصلية

كما يمكنك ايضا ادخال بعض التاثيرات المتاحة من الـ Visual Basic على الصورة المطبوعة ان اردت

تامل معي آخر الأمر وبالتحديد الـ Const الذي يدعة بـ vbSrcCopy .. اي نسخه طبق الأصل دون تاثيرات

والجدير بالذكر ان الـ vbSrcCopy وغيره من مختلف التاثيرات تابعين لـ RasterOpConstants

ومن ثم الخطوة الأخير وهي لوضع الصورة الملتقطة من الـ Picture1 في خلفية الـ MDIForm

وخاصية الـ Image للـ Picture1 هي الخاصية التي تحوي الصورة الملتقطة من الـ Picture1

واقصد بملتقطة انها ملتقطة من Picture1 وما عليها من Graphics وليس بما عليها من ادوات

وفي النهاية احب ان اعلمك باني قمت بتغيير خاصيتي الـ Apperance و الـ BorderStyle للـ Picture1

لإزالة اي Border من الأداة ذاتها وذلك للحفاظ على الحجم صافي ولإلتقاط الصورة دون الـ Border أيضا

اعتذر عن عدم تمكني للمتابعه الدورية في وقتنا الحالي

فليقبل الجميع تقديري واحترامي .. ولكم تحياتي

#8

شكرا لك على ما تفضلت به من شرح

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

post-166287-1236887247_thumb.jpg

#9

المشكلة تظهر عند تغيير ابعاد الـ Form إلى حد معين وكذلك الـ Picture1 بالإضافة الى حالة التصغير

لذا يجب عليك وضع On Error Resume Next في أول كل حدث Resize .. وإعتبر هذه قاعدة


On Error Resume Next

' ----- Stretch Picture Box Control ----------------------------------------- '
If MDIForm1.ScaleHeight = 0 Then
Picture1.Height = Me.Height
Else
Picture1.Height = Me.ScaleHeight
End If
' --------------------------------------------------------------------------- '
End Sub
Private Sub MDIForm_Resize()


On Error Resume Next

' ----- Stretch Picture and Copy it into MDIForm ---------------------------- '
Me.Picture1.Cls
Me.Picture1.PaintPicture Me.Image1.Picture, 0, 0, Me.Picture1.ScaleWidth, Me.Picture1.ScaleHeight, , , , , vbSrcCopy
Set Me.Picture = Me.Picture1.Image
' --------------------------------------------------------------------------- '
End Sub
Private Sub Picture1_Resize()

وهذا السطر الزائد لتلاشي ظهور رسائل تفيد بحدوث اي خطا اثناء وقت التشغيل في الإجراء المحدد

وانا عن نفسي اضعه في حالات قليلة جدا جدا جدا .. ولو اسرفت منه سيفتقد برنامجك إلى الثقة في نتائجه

فالأفضل ظهور رسالة الخطا لتوجيهك الى الخطا .. اما استثنائها سيضللك انت والمستخدم .. وهذا خطا

اما في حالتنا هذه اسثناء الخطا لصالحنا لاننا لم نضع شروط لتغيير الحجم من الأصل :)

اعتذر عن عدم تمكني للمتابعه الدورية في وقتنا الحالي

فليقبل الجميع تقديري واحترامي .. ولكم تحياتي

#10

الله يحفظك أستاذي ويسعدك

بعد التجربة نجحت الطريقة بنسبة 100% ...

#11
maajed555 كتب:
الأخ ذاكر ...

لقد ضحكت من تصرفك في المرفق الثاني

اول مرة اعرف ان تقديم المساعدات في هذا المنتي هو موضع سخرية وضحك

شكرا اخي انا غلطان

#12

امال ايه ياعم

ده البروفيسور تحدي وموش بس كلام

:thumb_up:

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

#13
اقتباس
اول مرة اعرف ان تقديم المساعدات في هذا المنتي هو موضع سخرية وضحك

شكرا اخي انا غلطان

ياعم خلي همتك عالية وترفع فالتسامح من مكارم الاخلاق

فكما قال احد الحكماء:

كن كالنخيل عن الاحقاد مرتفعا يرمى بصخر فيعطي اطيب الثمر

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

#14
اقتباس
اول مرة اعرف ان تقديم المساعدات في هذا المنتي هو موضع سخرية وضحك

شكرا اخي انا غلطان

وبالرجوع للكلام الذي ذكرته أنا كاملا تجد ما يلي :

اقتباس
الأخ ذاكر ...

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

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

اقتباس
ياعم خلي همتك عالية وترفع فالتسامح من مكارم الاخلاق

فكما قال احد الحكماء:

كن كالنخيل عن الاحقاد مرتفعا يرمى بصخر فيعطي اطيب الثمر

أخي الكريم / قبل أن تدخل في أي خلاف بين اثنين ، عليك أولا أن ترجع لكلام هذا وهذا ، ولو أنك قرأت كلامي الذي انتقده الأخ لأنصفتني ووضحت أن كلامي لا يدل على السخرية أو الاستهانة ، وفقك الله وسددك

:)

تم تعديل هذه المشاركة بواسطة maajed555 في 22 مارس 2009 في 12:14

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…