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

اضافة صورة شخصية لكل عميل بالفورم

بدأه زيك زاك في 5 مايو 2009 · 7 رد · 2,098 مشاهدة · في قواعد بيانات Visual FoxPro
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته .. اني مشترك جديد بهذا المنتدى الرائع .. ولي سؤال بخصوص مشروع قمته بعمله الا وهو نظام شركات الموبايل عملت باخذا البيانات الخاصة لكل عميل من الاسم والعنوان و...الخ وعملت ازرار منها الخزن والاستعراض و... الخ سؤالي هو كيف اضع صورة شخصية لكل عميل على الفورم والتي تشبه الهوية الشخصية لقد حيرني هذا الامر وياريت لو اجد عندكم الحل واريده بالتفصيل مع الكود الخاص بذلك واين اضع الكود وماهي الخصائص التي سوف اعملها علما اني استخدم النسخة التاسعة .. ولكم مني فائق الشكر والتقدير .. اخوكم زيك زاك

#2

السلام عليكم ورجمة الله وبركاته... واهلا وسهلا بك في المنتدى

اخي العزيز...

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

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

لكن اسناد هذه القيمة يعتمد على كيفية تخزين البيانات

فاذا كان الجدول لديك يحتوي على حقل معرف للصورة يتضمن اسمها وموقعها فيجب وضع الية لتحديث قيمة Picture فيها ضمن اجراء الــ Refresh المستخدم، قد تكون بالصيغة التالية:

if file(MyField)
Thisform.Image1.Picture=MyField
Thisform.Image1.visible=.t.
Else
Thisform.Image1.Picture=' ' Or Thisform.Image1.visible=.f.
Endif

اما اذا كانت نفس الصورة مخزنة في الجدول ضمن حقل Blob فبامكانك اسناد قيمة للــ PictureVal

Thisform.Image1.PictureVal=MyField

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

مع التحية

تم تعديل هذه المشاركة بواسطة a.jallad في 6 مايو 2009 في 00:51

أستغفر الله العظيم و أتوب إليه

#3

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

http://www.zshare.net/download/59661596e46f1fdd/

#4

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

الاخ العزيز زيك زاك،،

راجع البرنامج المرفق، ستلاحظ اني اضفت عليه اجرائين هما ImgSave و ImgRefresh

الاجراء الاول يستخدم لتخزين الصورة المختارة داخل مجلد خاص يدعى Img

وسيكون اسم الصورة عند التخزين هو نفس رقم البطاقة،

علما بأن الامتداد الافتراضي للصور المستخدمة هنا هو PNG وتستطيع تغييره طبعا حسب نوع الصور المنوي استخدامها

اما الاجراء الثاني فسيقوم بعمل تحديث للصورة عن تغيير السجل

راجع النموذج والكود، ولا تتردد في طرح أي استفسار

مع ملاحظة بأن الكود قد يكون بحاجة لبعض التنقيح

مع التحية

zain.rar

2

أستغفر الله العظيم و أتوب إليه

#5

اني ما اعرف شون اشكرك حقيقة والكود شغال وعاشت ايدك الطيبة ويارب يخليك ذخرة وعبقرية دائمة بس حبيت طلب اخير واني حقيقة تعبتك وياي هو ان تشرحلي الكود واكون شاكر جميلك ليوم الدين .. ولي سؤال لماذا عندم اطلب اضافة عميل اخرى لاياخذ الصورة الا مرة واحدة ؟ولانو راح اناقش المشروع امام الاساتذة ولازم اعرف شنو هاي الكود اني عرفت البقية بس البقية الاخرى لم اعرف تفسيرها .. مع التحية والاعتزاز الغالي .. اخوك زيك زاك

تم تعديل هذه المشاركة بواسطة زيك زاك في 8 مايو 2009 في 01:04

#6

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

الاخ العزيز زيك زيك

كما قلت لك سابقا قمنا باضافة اجرائين

ImgRefresh  الاجراء الاول والخاص بتحديث الصور



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

Lparameter ChkToSaveOrShow 





جملة شرطية للعودة دون اكمال الاجراء في حالة كون قيمة البطاقة اصغر من 1

if m.missndn < 1

				return .f.

endif



تعريف بعض المطلحات لاستخدامها ضمن الاجراء الحالي فقط

local lcDir, lcName, lcFile

تحديد ملف الصور الافتراضي

lcDir=fullpath(curdir())+[IMG] 

تحديد اسم الملف بناءا على رقم البطاقة وامتداد الصورة

lcName=alltrim(str(m.missndn)+[.PNG])

تحديد اسم الملف مع اضافة مساره كاملا

lcFile=addbs(lcDir)+lcName

FullPath >> تعطينا المسار الكامل للملف المطلوب

CurDir >> تعطينا اسم المجلد الذي نعمل ضمنه

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

if !file(lcFile)

				return .f.

endif

واخيرا اظهار الصورة في حالة وجود الملف

thisform.Img.picture=lcFile

ImgSave  الاجراء الثاني والخاص بحفظ الصور

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



التأكد من ملف الصورة قبل كل شيء

if !file(thisform.img.picture)

				return .f.

endif



set safety off / On لابطال خاصية اظهار رسالة لتأكيد الحذف 

حذف الملف ان كان موجودا

if file(lcFile)

				delete file(lcFile)

endif

نسخ الملف الجديد للمجلد الافتراضي

copy file(thisform.img.picture) to [Img\]+lcName

set safety on

ارجو ان يكون الشرح واضحا ولا تتردد في طرح أي سؤال

مع العلم بان الكود في كلا الاجرائين قد يحتاج لمزيد من الاحكام طبعا حسب الحاجة

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

مع التحية

تم تعديل هذه المشاركة بواسطة a.jallad في 10 مايو 2009 في 01:07

أستغفر الله العظيم و أتوب إليه

#7

والله ما اعرف شون اشكرك .. وحقيقة اني اتغلبت على بعض المشاكل من خلال تحليلي للكود والكود اشتغل وعاشت ايدك على الشرح واني جدا ممنون منك وصار الكود يشتغل مية مية والله يوفقك للخدمة الاسلام والمسلمين .. اخوك زيك زاك

#8

الحمد لله والعفو اخي العزيز

أستغفر الله العظيم و أتوب إليه

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