![]() |
|
كيف استدعي صورة مخزنة بقاعدة البينات - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : كيف استدعي صورة مخزنة بقاعدة البينات (/showthread.php?tid=1180) |
كيف استدعي صورة مخزنة بقاعدة البينات - kwahab - 05-09-2009 السلام عليكم كيف تخزين صورة Jpeg في قاعدة البينات وكذلك استدعائها للظهور انا استعملت هذا الكود كود : dm.table5.FieldByName('photo').Assign(Image1.Picture);واستدعائها للظهور في البرنامج بمجرد اختيار شخص معين في قاعدة البينات وشكرا كيف استدعي صورة مخزنة بقاعدة البينات - أبو معاذ - 06-09-2009 السلام عليكم ، لتخزين الصورة هذا الكود : كود : Close;
SQL.Clear;
SQL.Add('UPDATE TABLE');
SQL.Add(' SET Logo = :Logo');
Parameters.ParamByName('Logo').LoadFromFile('c:\logo.bmp', ftGraphic);
ExecSQL;لعرض الصورة كود : if not eof then
ImgLogo.Picture.Bitmap.LoadFromStream(CreateBlobStream(FieldByName('Logo'), bmRead));:monster1: كيف استدعي صورة مخزنة بقاعدة البينات - nabilkeb - 06-09-2009 استدعاء صورة بلاحقة Bmp و حفظها بجدول قاعدة بيانات (نوع الحقل Graphique أو Binaire ) إذا كان الحقل نوع Graphique فلا يقبل إلا Bmp و إذا كانت الصور من نوع Jpg فما العمل ؟ إما أن تحويل الحقل إلى نوع Binaire أو تحويل صورة نوع jpg إلــى Bmp و تخزينها بالحقل ذو النوع Graphique كيف استدعي صورة مخزنة بقاعدة البينات - kwahab - 06-09-2009 جزاك الله خيرا على مجهودك القيم اخي الكريم وهذا مشروعي بالمرفقات فيه بعض المشاكل ساوضحها 1.في form7 عند ملاء الخانات بالمعلومات وفي حالة وجود خطا بالمعلومات المدخلة مثل التاريخ فانه بعد رسالة الخطا التي تظهر يقوم البرنامج بادخال المعلومات مباشرة الي قاعدة البينات دون الاستشارة 2.لاظهار المعلومات الموجودة بقاعدة البينات في edit ;maskedit ;combobox قمت بانشاء زر اسمه affichier يعمل بشكل جيد لكن الصورة لاتظهر. اذا امكن التعديل على المشروع وارجاعه بالمرفقات اكون شاكر لكم ![]() المشروع مشروع تخرج ولم يبقى لي وقت كثير اتمنى ان يتسع صدركم لاسئلتي وجزاكم الله خيرا. كيف استدعي صورة مخزنة بقاعدة البينات - nabilkeb - 06-09-2009 لا يوجد أي ازعاج ، فنحن جميعا هنا لنتعلم ، و من بركة العلم ألا يكتمه الإنسان . نحن بالخدمة متى أمكن. هناك بعض الملاحظات _ إلى جانب الأخطاء المطروحة من طرفكم _ أذكر منها موضوع Alias ، يكون أفضل إذا كان هذا الأخير ديناميكيا ، كي لا يضطر كل مطلع على برنامجك من انشاء Alias من جديد و التعديل و .... ، إذا كان ديناميكيا فإنه يعمل على أي جهاز به محرك Bde بشكل عادي ، و من دون إعادة الإنشاء . على العموم قمت بادراجه في مشروعكم ، و لمعرفة الطريقة راجعي هذا الرابط أو : - إضافة Database1 إلى DM - دوبل كليك على Database1 - اتباع ما هو مكتوب بالصورة بالمرفق Database1 - ثم Ok - أخيرا كتابة اسم Database1 الذي هو data (الاسم اختياري) في الخاصية DataBaseName لكل الجداول (table) توضيح أكثر في المرفق موجود بالمرفق StarTimes - ملاحظة أخرى فيما يخص الفورم الأساسي : هل سيبقى فارغا باستثناء MainMenu1 ؟ هذا ليس جميلا - فيما يخص شكل الفورم 7 ، ليس جميلا ، و هو متعب أثناء التصفح بسبب كبر الحجم و سحب البار من كل الجهات ، جعله كما هو بالمرفق على سبيل المثال و اظهار أو اخفاء GroupBox1 حسب الحاجة ، و إذا كان لازم يظهر في كل الأحوال ، يمكن و ضعه مكان Panel3 ، و جعل الأزرار بهذا الأخير على شكل MainMenu في الفورم 7 ....... - يمكن نزع الزر المسمى : و ادراج: كود : edit4.Text:= combobox7.Text+ edit16.Text+ combobox9.Text+ maskedit4.Text;- بخصوص الأخطاء المذكور سأراجع أمرها . بالتوفيق كيف استدعي صورة مخزنة بقاعدة البينات - nabilkeb - 06-09-2009 - فيما يخص التاريخ: الشرط المطلوب هو أن لا تساوي Edit1 قيمة ( / / ). ما ذا يعني هذا ؟ يعني لو يكون التاريخ مثلا 01/02/0100 ، الحفظ يكون عادي ؟؟؟؟؟؟؟؟؟ المشكل و الحل بسيط . لكن يكون أفضل من كل الجوانب لو تم استبدال Edt بــ DateTimePicker و قد فعلت هذا في المشروع المرفق. كما ألفت الإنتباه و التذكير بالمشاركة القيمة التي وردت بهذا الشأن - ملاحظات أخرى: - يكون أفضل و أأمن _كما فعلت_ لو تكون الجداول مغلقة ن تفتح و تغلق أثناء فتح المشروع و أثناء الغلق (الحدث مثلا: Onshow-OnClose للفورم الرئيسي كما هو في المرفق) تحت عنوان لا بد من السيطرة قد الامكان على الأخطاء المحتملة من طرف المستخدم و منعها : - يمكن اجبار Edt من قبول الحروف فقط ، أو الأرقام فقط حسب الحاجة ، من غير اللجوء إلى Mask هذا الرابط يبين و يوضح ذلك - فيما يخص رقم CCP ليس بالضرور7أرقام - رقم الولاية يتكون من رقمين ، يعني بالامكان كتابة 99 و هذا خطأ ، لابد من اضافة شرط أصغر أو يساوي 48. كذلك البلديات . أحسن عمل و أتقن _وإن كان به بعض الصعوبة :انشاء جدول خاص لذلك. السبب : الولايات تزيد (و ان كان بعد زمن) ، و لكل ولاية بلدياتها ، و يكون عدد التسجيلات للولايات هو الحصر الخاص بــ رقم الولاية الذي لا يزيد عنه. (يمكن الاستغناء عنذلك إذا كان الوقت ضيق) - عدم تمكينه من ضغط أي زر بامكانه احداث خطا ، جعل الأزرار التي تؤدي لذلك مثلا Enabled:=false و هناك ما يجب عمله بهذا الشأن ، هذا باختصار. - ماذا يعني Combobox : يعني أن الاختيار محصور أو هناك ****** في الاختيار ، إذا كان الأول هو المراد لا بد من عدم تمكين المستخدم من كتابة أي شيء غير الحيارات المحددة (يعني لا بد أن يختار فقط) ، في خصائص الــ Combobox نجعل الخاصية : Style : csDropDownList بالتوفيق كيف استدعي صورة مخزنة بقاعدة البينات - nabilkeb - 06-09-2009 - فيما يخص Suprimer : كود : begin
[COLOR=Blue] if dm.table5.RecordCount>0[/COLOR]
then if MessageDlg('Voullez vous vraiment supprimer cet enregistrement ?', MtConfirmation, MbOkCancel,0)=mrok
then dm.table5.Delete;
end;كود : [COLOR=Blue]if not DM.Table5.IsEmpty[/COLOR]- يمكن إضافة كود مسح كل معطيات الجدول: كود : [COLOR=Blue]While Not DM.Table5.IsEmpty do Table5.Delete[/COLOR]كود : [COLOR=Blue]DM.Table5.Close; [/COLOR][COLOR=Blue]DM.Table5.EmptyTable; [/COLOR][COLOR=Blue]DM.Table5.Open;[/COLOR][COLOR=Blue][/COLOR]- يمكن و يستحسن نزع زر الغلق مادام ذلك متوفر في النافذة (القاعدة : لا داع لما هو غير ضروري لراحة المستخدم و ليونة المشروع) - وجود خطأ : عند الحفظ ، يتم حفظ المعطيات + انشاء سجل جديد فارغ السبب : و جود الأمر Insert مرتين ، أولا بالزر Nouveau ثانيا بالزر Ajouter التصحيح : بالزر Nouveau : كود : dm.table5.last;
dm.table5.insert;كود : // dm.table5.last;
// dm.table5.insert;- خطأ فيما يخص الزر Modifier : إذا كانت مواضع الحجز (Edt-Combobox-.....) فارغة ، يتم الحفظ الصواب : إضافة الشرط الذي تم استخدامه مع الزر Ajouter كود : if (edit4.text<>'') and (combobox7.text<>'') and (edit16.text<>'') and
(combobox9.text<>'') and (combobox1.text<>'') and (maskedit4.text<>'') and
(combobox2.text<>'') and (edit8.text<>'') and (maskedit5.text<>'') and
(maskedit6.text<>'') and (combobox3.text<>'') and (maskedit7.text<>'') and
(maskedit8.text<>'') and (maskedit9.text<>'') and (maskedit10.text<>'') and
(combobox4.text<>'') and (combobox5.text<>'') and (maskedit11.text<>'') and
(maskedit12.text<>'') and (maskedit13.text<>'') and (combobox6.text<>'') and
(maskedit14.text<>'') and (maskedit15.text<>'') then beginبالتوفيق أخي كيف استدعي صورة مخزنة بقاعدة البينات - kwahab - 07-09-2009 شكرا على المجهود اعمل على تنفيذ ملاحظاتك الا اني اجد انك اضفت dbnavigator وانا لا ارغب في استعماله وقد استعملت زر affichier وياريت لوكان اظهار المعلومات يكون بمجرد اختيار الشخص ب dbgrid كما ان مشكل الصورة لازال قائما حيث عند اضافة صورة لشخص جديد فانها تظهر في سطر وحدها في dbgrid .كما ان الصورة نفسها تظهر مكبرة وغيرواضحةوعند اختيار شخص معين تظهر معلوماته لكن لا تظهر صورته يعني نفس المشكل الاصلي انا في انتظار ردودك القيمة كيف استدعي صورة مخزنة بقاعدة البينات - nabilkeb - 07-09-2009 تم حذف DbNavigator و تعويض الكود في حدث OncellClick+OnKeyDown+OnKeyUp و بذلك بمجرد تفقد DBGrid تظهر المعلومات فوق في العناصر .و تم حذف زر Afficher. لكن مادام تم حذف DbNavigator يطلب تعويضه بأزرار Suivant+Précedent+Début+Fin أضن أن المستعمل يحتاج لذلك . و لك الخيار . كيف استدعي صورة مخزنة بقاعدة البينات - kwahab - 07-09-2009 نسلم ايديك على هذا المجهود عندي اضافتي لشخص جديد وعمل صورة له فان الصورة تظهر جد كبيرة داخل اطارها كما انه عند الضغط على الازرار pré وsui فان الصور التي اضفتها انت تظهر بشكل جيد اما التي اضيفها انا فلا تظهر وانما يظهر اطار ابيض
|