كيف استدعي صورة مخزنة بقاعدة البينات
#11
لم أدرج حل القضية بالأمس ، لتفادي كثرة الطرح ، كي لا تختلط الأمور عليك ، و أحببت التدارك أولا.
- الفت الإنتباه أولا إلى OpenPictureDialog ، لا بد من تعديل خاصية الفلتر له ليصبح مقتصر على صور Bmp فقط ، و إذا أردت لواحق أخرى ، المهم لا يجب ترك مثلا اللاحقة Ico في الوقت الذي لا تستخدمينها ، و تتسبب في الخطأ ، لا بد من تقييد خيارات المسخدم.

- إلى غاية ادراج سورس تكبير و تصغير الصورة ، أرفقت مجموعتين من نفس الصور بحجم24 و 128
فقط حاولي فتح الصور لمشاهدة الحجم الحقيقي ، ثم ادراجها بــ DBImage1 ، ثم ملاحظة الفرق.


الملفات المرفقة
.rar   128.rar (الحجم : 76.69 ك ب / التحميلات : 75)
.rar   48.rar (الحجم : 26.11 ك ب / التحميلات : 52)
الرد
#12
Function التحكم بحجم الصورة :
كود :
function ResizeBmp(bitmp: TBitmap; wid, hei: Integer): Boolean; var TmpBmp: TBitmap; ARect: TRect; begin Result := False; try TmpBmp := TBitmap.Create; try TmpBmp.Width := wid; TmpBmp.Height := hei; ARect := Rect(0,0, wid, hei); TmpBmp.Canvas.StretchDraw(ARect, Bitmp); bitmp.Assign(TmpBmp); finally TmpBmp.Free; end; Result := True; except Result := False; end; end;
للاستعمال (في DBImage1Click زيادة الكود ):
كود :
ResizeBmp(DbImage1.Picture.Bitmap,[COLOR=DarkRed]100[/COLOR],[COLOR=DarkRed]110[/COLOR]) ;
و بطبيعة الحال الحجم اختياري مراعاة مع حجم DBImage

و على هذا حاولي نفس التجربة مع الصور السابقة و لاحظي الفرق ، خصوصا صور المجلد48 فحجمها يكبر رغم نقص الجودة بسبب الحجم الصغير الأصلي ، كذلك الصور من المجلد128 كانت لا تظهر مكتملة (نقص طفيف) ، الآن تظهر كاملة .


بالتوفيق


الملفات المرفقة
.rar   CNR2.rar (الحجم : 30.92 ك ب / التحميلات : 44)
الرد
#13
رائع :thanks:
انا اضفت الى uses كلمة jpeg والان اصبح يدعم الصورjpeg وهي التي تعمل مشكل حيث لا تظهر لان حجمها كبير اما bmp فهي تظهر.اما jpeg فهي لاتظهر الي حد الان.
لاحظت ايضا نه لو اردنا ان نستبدل صورة شخص بصورة اخرى فان زر modifier لا يحفظ التغيير
ايضا عند الضغط على الازرار pré و sui فان ما يظهر ليس ما يكون مختارا في dbgrid
وانا في انتظار ردودك الجميلةSmile
الرد
#14
إقتباس :انا اضفت الى uses كلمة jpeg والان اصبح يدعم الصورjpeg وهي التي تعمل مشكل حيث لا تظهر لان حجمها كبير اما bmp فهي تظهر.اما jpeg فهي لاتظهر الي حد الان
ليس لا تظهر لأن حجمها كبير ، بل لا تظهر بسبب كود تحجيم الصورة
كود :
ResizeBmp(DbImage1.Picture.Bitmap,100,110) ;
في الحدث DBImage1Click ، لو يتم نزع هذا السطر فإنها سوف تظهر على DBImage1 ، و لن يتم تخزينها بالجدول لأن الحقل من نوع جرافيك ، و لا يدعم إلا Bmp .
و لن ننزع هذا السطر ، لأننا نحتاجه ، أما إذا كان لازم و لابد من الصور نوع Jpeg فيمكن تحويلها إلى Bmp ثم بعد ذلك كما لدينا : تحجيمها ثم تخزينها بالجدول، ندع هذا الأمر جانبا و نعالجه فيما بعد.
إقتباس :لاحظت ايضا نه لو اردنا ان نستبدل صورة شخص بصورة اخرى فان زر modifier لا يحفظ التغيير
الأمر كذلك و لقد تم معالته
إقتباس :لاحظ ايضا اخي الكريم عند الضغط على الازرار pré و sui فان ما يظهر ليس ما يكون مختارا في dbgrid
وانا في انتظار ردودك الجميلةSmile
أزرار التفقد و المعاينة (التالي ، السابق ...) تعمل بشكل عادي .لم أفم ما تودينه بقولك هذا .
الرد
#15
- أثناء تغيير قيمة Combobox7 و 9 و Edit16 فإن EDit4 لا يتغير ، و بالتالي يتم اعطاهم جميعا
نفس الحدث MaskEdit4Change

- كود سورس تحويل Jpg إلى Bmp :
كود :
procedure TForm1.Button1Click(Sender: TObject); var jpeg: TJPEGImage; bmp: TBitmap; begin if OpenPictureDialog1.Execute then begin jpeg := TJPEGImage.Create; try jpeg.CompressionQuality := 100; {Default Value} jpeg.LoadFromFile(OpenPictureDialog1.FileName); bmp := TBitmap.Create; try bmp.Assign(jpeg); if saveDialog1.Execute then bmp.SaveTofile(saveDialog1.FileName+'.bmp'); finally bmp.Free end; finally jpeg.Free end; end; end;
يمكن الإستغناء عن SaveDialog و تحديد مباشر لمكان الحفظ ، و لكن في هذا المشروع أضن أن الأحسن (في حدث الضغط على DBImage )
كود :
procedure TForm7.DBImage1Click(Sender: TObject); Var Im: TPicture; Ext,Nom_Fichier : String; begin if OpenPictureDialog1.Execute then Begin Nom_Fichier:= OpenPictureDialog1.FileName; Ext:= UpperCase(ExtractFileExt(Nom_Fichier)); if (Ext='.JPEG') or (Ext='.JPG') then Begin Im:= TPicture.Create; Im.LoadFromFile(Nom_Fichier); DBImage1.Picture.Bitmap.Assign(Im.Graphic); Im.Free; End Else if (Ext='.BMP') then DBImage1.Picture.LoadFromFile(Nom_Fichier) //Else ShowMessage('unsupported image'); End; ResizeBmp(DBImage1.Picture.Bitmap,100,110) ; end;

- أضنني قطعت لك شوطا كبيرا ، عليك بما تبقى .
- بالتوفيق أختاه -
الرد
#16
اخي الكريم لقد بذلت معي مجهود كبير اشكرك وجزاك الله خيرا وجعل ذلك كله في ميزان حسناتك:thanks:
ساكمل المشروع بقيت لي الفلترة بالرقم والاسم واللقب ساحاول ان انجزها وان واجهت صعوبات ساطرح المشكل وانتظر منكم كل رد جميل.
يعيش منتدانا يعيش:clap2:
الرد
#17
ryma192000 كتب :اخي الكريم لقد بذلت معي مجهود كبير اشكرك وجزاك الله خيرا وجعل ذلك كله في ميزان حسناتك:thanks:
ساكمل المشروع بقيت لي الفلترة بالرقم والاسم واللقب ساحاول ان انجزها وان واجهت صعوبات ساطرح المشكل وانتظر منكم كل رد جميل.
يعيش منتدانا يعيش:clap2:
بالتوفيق أختي ، هذا الرابط حقا من شأنه مساعدتك و به جل طرق البحث بقواعد البيانات و الفلترة أيضا


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

و هذا كتاب عربي قيم جدا جدا للمبتدئين ، راجعي الصفحة 118 ،أيضا تجدين المطلوب بالصفحة 126
الرد
#18
1.
إقتباس :أزرار التفقد و المعاينة (التالي ، السابق ...) تعمل بشكل عادي .لم أفم ما تودينه بقولك هذا .
لاحظ ان الشخص الذي تختاره لا تظهر صورته معه انما صورة من هو قبله. اي ظهور معلومات الشخص متاخرة عن ظهور صورته.وللتاكد اضغط مباشرة في dbgrid وستظهر كل صورة مع معلوماتها.
2.عند التعديل لو افرغنا حقل او اكثر ووافقنا على التغيير فان رسالة التنبيه التي تشير الى ضروروة ملاء كل الحقول لا تظهر.
مشكور مرة اخرى على ردودك يا غالي.
الرد
#19
إقتباس :لاحظ ان الشخص الذي تختاره لا تظهر صورته معه انما صورة من هو قبله. اي ظهور معلومات الشخص متاخرة عن ظهور صورته.وللتاكد اضغط مباشرة في dbgrid وستظهر كل صورة مع معلوماتها.
هذ الكلام لا أساس له من الصحة ، خذي المرفق فيه سجلين ، اعملي Suivant و Précédent أو كليك على DBGrid أو حتى الانتقال بأزرار لوحة المفاتيح أعلا و أسفل : النتيجة واحدة : تتمثل في تغيير المعطيات التي تظهر على Edt و Combobox و Datetimepicker و ... كل سجل مرفوق بالصورة الخاصة به. لا يوجد أي اشكال ، اللهم إذا كان المقصود شيء آخر .

إقتباس :.عند التعديل لو افرغنا حقل او اكثر ووافقنا على التغيير فان رسالة التنبيه التي تشير الى ضروروة ملاء كل الحقول لا تظهر.
هذه لم أفهمها حاولت الحذف ، التعديل (ملء كل الحقول: الأمر عادي ، ترك احداها أو كلها فارغة : رسالة: ملء الحقول ... ) التأكيد على التعديل ، كل شيء عادي .....
إما أنك خاطئة أو أني لم أفهم القصد .
الرد
#20
تسلم يا غالي
لقد تكمنت من الفلترة للاسم واللقب بالكود التالي
كود :
if form7.Edit2.Text='' then begin dm.table5.Filtered:=false; end else begin dm.table5.Filtered:=true; dm.table5.Filter:='Nom='+quotedstr(form7.edit2.text+'*'); end
لكن حقل رقم المتقاعد المتكون من حروف وارقام لم استطعSad
الملف بالمرفقات وياريت لو تشوف ملاحظاتي السابقة فيما يخص رسالة:املا كافة الحقول التي لاتظهر في حالة التعديل وعند ترك حقل فارغ.
ملاحظة:الحروف كلها majuscules


الملفات المرفقة
.rar   CNR4.rar (الحجم : 8.78 ك ب / التحميلات : 35)
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم