اذهب الي المحتوي
أوفيسنا

Foksh

أوفيسنا
  • Posts

    3997
  • تاريخ الانضمام

  • Days Won

    167

كل منشورات العضو Foksh

  1. أنا مركز معاك وبكل حرف وزي ما تحب وزيادة 😎 شكراً لك ولمصدر معلوماتك على هذه المداخلة 😏
  2. شكراً لك على أفادتي بالنتيجة ، وإن شاء الله قريباً إصدار جديد بمميزات خدمية شاملة . أما فيما يخص :- هناك كثير من الأسباب التي تجعل من مستخدمي أوفيس يستخدمون الإصدارات 32-بت ، أذكر لك منها - وليس عموماً - ما يلي :- التوافق مع الإضافات Add-Ins والمكتبات الخارجية . والسبب أن الكثير من هذه الإضافات والمكتبات تعمل بشكل فعال وثابت على الإصدار 32-بت مثل :- ( ActiveX و DLLs و COM ) . في البرامج والمشاريع الكبيرة آكسيس 32-بت يعتبر أكثر استقراراً وثباتاً .. والنقطة المهمة بنظري أنه إذا أنشأت برنامجك بـنسخة 32-بت ، فثق تماماً بأنه سيعمل على آكسيس 32-بت و 64-بت = ( النواتين ) دون حاجتك لتغيير أو إعادة كتابة الأكواد بسبب عدم توافق PtrSafe أو تغيير بعض أنواع البيانات ( مثل Long إلى LongPtr ) ... والعديد غيرها . رأيي الشخصي ، هذه النقطة ليست عميقة بما يكفي ، لأن هدف المبرمج ليس استعراض حداثة النسخة أو نواة النظام أمام المستخدم ، بل تقديم حل مستقر وثابت خالي من الأخطاء والمشاكل ، قابل للصيانة ، وسهل التوزيع على شريحة واسعة من المستخدمين . من وجهة نظر عملية ، إذا كانت النتيجة النهائية واحدة - سواء بُنيت على إصدار قديم أو حديث - فإن الوسيلة المستخدمة تصبح مجرد تفصيل ، وليست مقياساً للذكاء البرمجي . لذلك أختلف معك هنا ، لأن الذكاء الحقيقي يظهر في اختيار الأنسب للواقع ، وليس الأحدث بالضرورة 😁 . 🤗 هذه وجهة نظري وليست ملزمة - وهي قابلة للخطأ أو الصواب - .
  3. هذا لا شك فيه ، وهو فعلاً ما يتم 😇
  4. سأحاول تثبيت نسخة أوفيس 2003 وتجربة حفظ نسخة خاصة منه مع التعديل على الأكواد لتتوافق معه 😅 ، وربنا يستر تحديث جديد إن شاء الله قريباً
  5. وعليكم السلام ورحمة الله وبركاته .. معلمنا الجليل والفاضل .. أنا متفاجئ من هذه العقبات التي تظهر عند محاولتك تجربة الملفات التي أقوم برفعها بصيغة ACCDE ، رغم أني خشيت من رفع الصورة التالية لنفس الملف الذي تم رفعه في المشاركة - وملاحظتي انه يعمل دون مشاكل 😢 . سأحاول في التحديث التالي التحقق بشكل أكثر من طريقة حفظ الملف الى accde .. وأعتذر عن هذه المشكلة التي صادفتها 😇
  6. أخي الفاضل ، وعليكم السلام ورحمة الله وبركاته .. لو انك امعنت النظر في الأكواد لكان الأمر قد تبين لك أين عليك التعديل !!! هل هذه الصورة صحيحة ؟ إن كانت صحيحة ، فقط نفس الكود السابق ولكن نقلب الإشارات الأكبر تصبح أصغر والعكس Private Sub تفصيل_Paint() If Me.B3.Value < 9 Then Me.أمر56.Transparent = True Else Me.أمر56.Transparent = False End If End Sub Private Sub Form_Current() Dim bVisible As Boolean bVisible = (Me.B3.Value > 9 Or IsNull(Me.B3)) With Me.أمر56 .Transparent = Not bVisible .Enabled = bVisible End With End Sub
  7. وعليكم السلام ورحمة الله وبركاته .. هذه فكرة بسيطة تم تنفيذها سابقاً في أحد المشاريع لأحد الأخوة . تتلخص في الحدثين التاليين :- Private Sub تفصيل_Paint() If Me.B3.Value > 9 Then Me.أمر56.Transparent = True Else Me.أمر56.Transparent = False End If End Sub Private Sub Form_Current() Dim bVisible As Boolean bVisible = (Me.B3.Value < 9 Or IsNull(Me.B3)) With Me.أمر56 .Transparent = Not bVisible .Enabled = bVisible End With End Sub الملف بعد التعديل :- 1234 (6).zip
  8. حسناً أخي الكريم ، ما رأيك بتصحيح جزء من المشكلة بحيث تبدأ بفهم كيفية كتابة الأكواد بشكل مفهوم ؟؟ في الكود التالي زر الإضافة في المرحلة الأولى ، وقد أضفت شرحاً بسيطاً أتمنى ان يكون مفهوماً لك . مع العلم ان معظم مشاكلك كانت في تسمية الأوراق ( الورقة1 و الورقة2 ) حيث انهما غير موجودات أساساَ . بل اسمهما الصحيح في ملفك = Sheet1 و Sheet2 ... انظر للكود وحاول مجاراته وفهمه . واستبدله في زر الإضافة وقم بالتنفيذ على باقي الأكواد بأسلوبك الذي فهمته . وإذا استعصى عليك شيء لا تتردد أو تبخل على نفسك بطرح السؤال . Private Sub Cmdadd_Click() Dim wsSource As Worksheet Dim wsTarget As Worksheet Dim lastRow As Long ' هنا سنقوم بتحديد أسماء الأوراق المصدر والهدف Set wsSource = Worksheets("Sheet1") Set wsTarget = Worksheets("Sheet2") ' A هنا سنحاول البحث عن أول صف فارغ وتحديداً من العمود lastRow = 4 ' نبدأ من الصف 4 حسب تصميم الورقة الثانية لديك ' إذا كان الصف 4 غير فارغ ، نبحث عن أول صف فارغ أسفله If wsTarget.Cells(4, "A").Value <> "" Then lastRow = wsTarget.Cells(4, "A").End(xlDown).Row + 1 ' إذا وصلنا إلى نهاية البيانات (أي لا توجد خلايا فارغة) ، نستخدم آخر صف ونضيف له 1 If lastRow > wsTarget.Rows.Count Then lastRow = wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row + 1 End If End If ' نتأكد من ان النطاق المحدد صحيح ويقع بين 4 وأكبر قيمة يسمح بها اكسل If lastRow < 4 Then lastRow = 4 If lastRow > wsTarget.Rows.Count Then lastRow = wsTarget.Rows.Count 'بدء نقل البيانات من الورقة الأولى إلى الورقة الثانية With wsSource wsTarget.Cells(lastRow, "A").Value = .Range("E5").Value wsTarget.Cells(lastRow, "B").Value = .Range("E7").Value wsTarget.Cells(lastRow, "C").Value = .Range("E9").Value wsTarget.Cells(lastRow, "D").Value = .Range("E11").Value wsTarget.Cells(lastRow, "E").Value = .Range("J5").Value wsTarget.Cells(lastRow, "F").Value = .Range("J7").Value wsTarget.Cells(lastRow, "G").Value = .Range("J9").Value wsTarget.Cells(lastRow, "H").Value = .Range("J11").Value wsTarget.Cells(lastRow, "I").Value = .Range("D13").Value wsTarget.Cells(lastRow, "J").Value = .Range("E13").Value wsTarget.Cells(lastRow, "K").Value = .Range("F13").Value wsTarget.Cells(lastRow, "P").Value = .Range("I13").Value wsTarget.Cells(lastRow, "Q").Value = .Range("J13").Value wsTarget.Cells(lastRow, "R").Value = .Range("K13").Value wsTarget.Cells(lastRow, "W").Value = .Range("D15").Value wsTarget.Cells(lastRow, "X").Value = .Range("E15").Value wsTarget.Cells(lastRow, "Y").Value = .Range("F15").Value wsTarget.Cells(lastRow, "AD").Value = .Range("I15").Value wsTarget.Cells(lastRow, "AE").Value = .Range("J15").Value wsTarget.Cells(lastRow, "AF").Value = .Range("K15").Value wsTarget.Cells(lastRow, "AK").Value = .Range("D17").Value wsTarget.Cells(lastRow, "AL").Value = .Range("E17").Value wsTarget.Cells(lastRow, "AM").Value = .Range("F17").Value wsTarget.Cells(lastRow, "AR").Value = .Range("I17").Value wsTarget.Cells(lastRow, "AS").Value = .Range("J17").Value wsTarget.Cells(lastRow, "AT").Value = .Range("K17").Value wsTarget.Cells(lastRow, "AY").Value = .Range("D19").Value wsTarget.Cells(lastRow, "AZ").Value = .Range("E19").Value wsTarget.Cells(lastRow, "BA").Value = .Range("F19").Value wsTarget.Cells(lastRow, "BF").Value = .Range("I19").Value wsTarget.Cells(lastRow, "BG").Value = .Range("J19").Value wsTarget.Cells(lastRow, "BH").Value = .Range("K19").Value wsTarget.Cells(lastRow, "BM").Value = .Range("D21").Value wsTarget.Cells(lastRow, "BN").Value = .Range("E21").Value wsTarget.Cells(lastRow, "BO").Value = .Range("F21").Value wsTarget.Cells(lastRow, "BT").Value = .Range("I21").Value wsTarget.Cells(lastRow, "BU").Value = .Range("J21").Value wsTarget.Cells(lastRow, "BV").Value = .Range("K21").Value End With ' مسح البيانات من الورقة الأولى On Error Resume Next ' تجاوز الأخطاء مؤقتًا Set rngToClear = wsSource.Range("E5,E7,E9,E11,J5,J7,J9,J11,D13:F13,I13:K13,D15:F15,I15:K15,D17:F17,I17:K17,D19:F19,I19:K19,D21:F21,I21:K21") For Each cell In rngToClear If Not cell.MergeCells Then ' إذا لم تكن الخلية جزءً من دمج cell.ClearContents Else ' إذا كانت الخلية جزءً من دمج cell.MergeArea.ClearContents ' مسح محتوى نطاق الدمج بالكامل End If Next cell On Error GoTo 0 ' إعادة تفعيل مكتشف الأخطاء MsgBox "تم ترحيل البيانات بنجاح", vbInformation + vbMsgBoxRight, "تم" End Sub
  9. لم تتوضح لي المشكلة بشكل كامل هل قمت بنقل المشروع الى مشروعك الخاص ؟ أم استخدمت نفس الأداة المرفقة في آخر تحديث ؟؟ ارسل لي هذه المشكلة التي واجهتها ؟؟
  10. أعتقد ان البرنامج غير مرفوع في المنتدى سابقاً من طرف الأستاذ @Barna .. يبدو انه خاص به 😇 . حتى أن الصورة التي ارفقها الأستاذ ناقل تحمل تاريخ اليوم 25/07/2025 😁
  11. Version 3.0

    51 تنزيل

    أخواني وأساتذتي ومعلمينا ( دون استثناء ) أقدم لكم هدية بسيطة . وهي أداة لتحويل ملفات الـ PDF الى صور ( إستخراج الصفحات الى صور قابلة للإستخدام الحر ) . مميزات الأداة :- الأداة قادرة على التعرف على خصائص ملف الـ PDF الذي تم اختياره مثل ( تاريخ الإنشاء ، عدد الصفحات ، حجم الملف ) . الأداة تعمل بسرعة وكفاءة عالية . الأداة تمت تجربتها على ملف PDF يحتوي 1500 صفحة لفحص سرعة وجودة الصور المستخرجة . الأداة تتيح للمستخدم اختيار مجلد الإستخراج بشكل يدوي ( خاص به ) أو من خلال مجلد ديناميكي يتم انشاؤه بجانب ملف الأداة . الأداة لها إضافات لاحقة ( تحديثات جديدة ) . الأداة لا تقوم بتحويل ملفات الـ PDF إلى ملفات Doc أو Docx . لأن هذه الميزة تتطلب اشتراكات مدفوعة ( رغم علمي بأنه لا يوجد برنامج أو موقع قادر وبشكل صحيح 100% على التعامل مع النصوص العربية داخل ملفات الـ PDF معلومتي قابلة للخطأ والصواب ) . لاحقاً سيتم إضافة ميزة تحويل ودمج الصور التي تم استخراجها الى ملف Doc أو Docx ، بالتعرف الديناميكي على إصدار أوفيس المثبت على الكمبيوتر للمستخدم . صورة توضيحة لعمل الأداة :- تم تسريع الصورة قليلاً لغاية تقليل الحجم بأقصى حد ممكن دون التأثير على جودة الصورة واجهة الأداة :- مرفق ملف PDF تعليمي - للتحربة :- تعلم آكسيس.pdf
  12. اعرض الملف ⭐ أداة تحويل ملفات PDF الى صور 2025⭐ أخواني وأساتذتي ومعلمينا ( دون استثناء ) أقدم لكم هدية بسيطة . وهي أداة لتحويل ملفات الـ PDF الى صور ( إستخراج الصفحات الى صور قابلة للإستخدام الحر ) . مميزات الأداة :- الأداة قادرة على التعرف على خصائص ملف الـ PDF الذي تم اختياره مثل ( تاريخ الإنشاء ، عدد الصفحات ، حجم الملف ) . الأداة تعمل بسرعة وكفاءة عالية . الأداة تمت تجربتها على ملف PDF يحتوي 1500 صفحة لفحص سرعة وجودة الصور المستخرجة . الأداة تتيح للمستخدم اختيار مجلد الإستخراج بشكل يدوي ( خاص به ) أو من خلال مجلد ديناميكي يتم انشاؤه بجانب ملف الأداة . الأداة لها إضافات لاحقة ( تحديثات جديدة ) . الأداة لا تقوم بتحويل ملفات الـ PDF إلى ملفات Doc أو Docx . لأن هذه الميزة تتطلب اشتراكات مدفوعة ( رغم علمي بأنه لا يوجد برنامج أو موقع قادر وبشكل صحيح 100% على التعامل مع النصوص العربية داخل ملفات الـ PDF معلومتي قابلة للخطأ والصواب ) . لاحقاً سيتم إضافة ميزة تحويل ودمج الصور التي تم استخراجها الى ملف Doc أو Docx ، بالتعرف الديناميكي على إصدار أوفيس المثبت على الكمبيوتر للمستخدم . صورة توضيحة لعمل الأداة :- تم تسريع الصورة قليلاً لغاية تقليل الحجم بأقصى حد ممكن دون التأثير على جودة الصورة واجهة الأداة :- مرفق ملف PDF تعليمي - للتحربة :- تعلم آكسيس.pdf صاحب الملف Foksh تمت الاضافه 07/25/25 الاقسام قسم الأكسيس  
  13. أخواني وأساتذتي ومعلمينا ( دون استثناء ) أقدم لكم هدية بسيطة . وهي أداة لتحويل ملفات الـ PDF الى صور ( إستخراج الصفحات الى صور قابلة للإستخدام الحر ) . مميزات الأداة :- الأداة قادرة على التعرف على خصائص ملف الـ PDF الذي تم اختياره مثل ( تاريخ الإنشاء ، عدد الصفحات ، حجم الملف ) . الأداة تعمل بسرعة وكفاءة عالية . الأداة تمت تجربتها على ملف PDF يحتوي 1500 صفحة لفحص سرعة وجودة الصور المستخرجة . الأداة تتيح للمستخدم اختيار مجلد الإستخراج بشكل يدوي ( خاص به ) أو من خلال مجلد ديناميكي يتم انشاؤه بجانب ملف الأداة . الأداة لها إضافات لاحقة ( تحديثات جديدة ) . الأداة لا تقوم بتحويل ملفات الـ PDF إلى ملفات Doc أو Docx . لأن هذه الميزة تتطلب اشتراكات مدفوعة ( رغم علمي بأنه لا يوجد برنامج أو موقع قادر وبشكل صحيح 100% على التعامل مع النصوص العربية داخل ملفات الـ PDF معلومتي قابلة للخطأ والصواب ) . لاحقاً سيتم إضافة ميزة تحويل ودمج الصور التي تم استخراجها الى ملف Doc أو Docx ، بالتعرف الديناميكي على إصدار أوفيس المثبت على الكمبيوتر للمستخدم . صورة توضيحة لعمل الأداة :- تم تسريع الصورة قليلاً لغاية تقليل الحجم بأقصى حد ممكن مع محاولة عدم التأثير على جودة الصورة واجهة الأداة :- ملف الأداة بنسختين :- نسخة 64 بت PDF Converter - 64.zip نسخة 32 بت PDF Converter - 32.zip مرفق ملف PDF تعليمي - للتحربة :- تعلم آكسيس.pdf هنا في هذه المشاركة
  14. وعليكم السلام ورحمة الله وبركاته .. الموضوع ليس صعباً كما تتصور !! هو فقط يحتاج منك ممارسة ومتابعة ومطالعة مواضيع تعليمية وفيديوهات تشرح المبادئ نفسها من الصفر . جميعنا هنا تعلمنا من أخطائنا ومن تجاربنا ومن معلمينا وأساتذتنا الأفاضل بلا شك ، وهنا يأتي دورك أولاً بتعلم الأساسيات التي عندما تتقنها ستجد أنك قطعت شوطاً كبيراً في فهم آلية كتابة الأكواد .
  15. وعليكم السلام ورحمة الله وبركاته .. أخي الفاضل ، الملف المرفق فتح عندي دون ظهور أي مشاكل في اللغة العربية والمسميات كما أرفقت صورتك سابقاً . لذا من الواضح ان مشكلتك في إعدادات الترميز في اللغة العربية .. مشكلتك حلها تقريباً كتطبيق عملي على إصدار ويندوز 10 كما في الصورة التالية :- قد تختلف قليلاً في ويندوز 11 ، ولكن المبدأ واحد ؛ وهو ذهابك الى لوحة التحكم - Control Panel ثم كما في الصورة التالية :- أو ثم اكمل باقي الخطوات كالتالي :- وبعدها سيطلب منك إعادة تشغيل الكمبيوتر لتطبيق التعديلات .
  16. هناك واحد من سببين لهذه المشكلة .. إما أنك قمت بنسخ الأكواد ومؤشر الكتابة ( لغة الكيبورد = انجليزية ) ، وهو هنا مستبعد .. وإما الحل الثاني ويكمن الحل بمراجعة الموضوع التالي :- حيث أنصحك باستخدام آخر إصدار للأداة لضبط لغة الترميز Unicode حسب بلدك .. في هذه المشاركة = الإصدار الأخير ..
  17. وجدت هذا الموضوع ، إن كان يفيدك أيضاً .. وهو تابع لموضوع سابق قمت بالإشارة إليه ..
  18. وعليكم السلام ورحمة الله وبركاته ,, فضلاً منك لا أمراً أخي الفاضل ما يلي :- لم تحدد العمود ؟ الشرط يجب ان يتم مقارنته بقيمة موجودة ، وانت لم تقم بتحديدها ومكانها !! لما يتم النقر على الزر لفتح الـ UserForm ، تظهر الرسالة التالية - - عند الـ ComboBox1 اللي هو المفروض انه في اليوزر فورم ، صحيح ؟ لكنه غير موجود . لإجراءاتكم بتصويب الملف وإعادة ارفاقه مرة أخرى ، مع إضافة بيانات مختلفة التواريخ حتى يستطيع الأخوة والأساتذة والمعلمين تقديم اقتراحاتهم .
  19. جزاك الله كل خير على ما اضحكت به قلبي 😂 لماذا تبحث عن كل هذا التعقيد 🤔 !!؟ أولا الليست بوكس لا يتم إضافة أسماء الصور إلا تلك التي يتم فعلاً إختيارها وإضافتها بنجاح. ثانياً ، لا تستطيع تلوين جزء من قيمة صف في الليست بوكس كما تفكر . ثالثاً ، إذا فكرت في إضافة هذه الجملة ، فسيكون عملك أكبر بحيث أنه عند اختيار أي صورة لعرضها ، فسيعمل الكود على اجتزاء اسم الصورة أولاً ثم عرضها ..... وناهيك عن إحتمالية حدوث الأخطاء. رابعاً ، البساطة في الأفكار جميلة إن كان يمكن تحقيقها بسهولة ، أو حتى لو بالحيلة . لكن في طلبك فإن مارد الفانوس قد استغرب من الطلب 😜 . أرجو أن تكون الفكرة قد توضحت.
  20. وعليكم السلام ورحمة الله وبركاته .. تم إضافة دالة جديدة لإنشاء الجدول المؤقت الجديد "zTempImageReport" ، حيث يتم فيه اضافة سجلات الصور ومساراتها :- Public Function CreateTempImageTable() On Error GoTo ErrorHandler Dim db As DAO.Database Dim tdf As DAO.TableDef Dim fld As DAO.Field Dim tblExists As Boolean Set db = CurrentDb() tblExists = False For Each tdf In db.TableDefs If tdf.Name = "zTempImageReport" Then tblExists = True Exit For End If Next tdf If Not tblExists Then Set tdf = db.CreateTableDef("zTempImageReport") Set fld = tdf.CreateField("ImageName", dbText, 255) tdf.Fields.Append fld Set fld = tdf.CreateField("ImagePath", dbText, 255) tdf.Fields.Append fld Set fld = tdf.CreateField("EmployeeID", dbLong) tdf.Fields.Append fld Set fld = tdf.CreateField("EmployeeName", dbText, 100) tdf.Fields.Append fld db.TableDefs.Append tdf Else db.Execute "DELETE * FROM zTempImageReport", dbFailOnError End If Exit Function ErrorHandler: MsgBox " : حدث خطأ في إعداد الجدول المؤقت" & Err.Description, vbCritical + vbMsgBoxRight, "" Exit Function End Function قمت بإنشاء التقرير "rptImageGallery" ، والذي مصدر سجلاته = الجدول المؤقت السابق "zTempImageReport" ، وفي النموذج في الزر "أمر105" الكود التالي :- Private Sub أمر105_Click() On Error GoTo ErrorHandler If List31.ListCount = 0 Then MsgBox "لا توجد صور ليتم عرضها في التقرير", vbInformation + vbMsgBoxRight, "" Exit Sub End If Call CreateTempImageTable Dim db As DAO.Database Dim rs As Recordset Dim i As Integer Dim ImagePath As String Dim basePath As String basePath = CurrentProject.Path & "\SysFiles\" & Me.ID & "\" Set db = CurrentDb() db.Execute "DELETE * FROM zTempImageReport", dbFailOnError For i = 0 To List31.ListCount - 1 If List31.ItemData(i) <> "" Then ImagePath = basePath & List31.ItemData(i) If Dir(ImagePath) <> "" Then db.Execute "INSERT INTO zTempImageReport " & _ "(ImageName, ImagePath, EmployeeID, EmployeeName) " & _ "VALUES ('" & Replace(List31.ItemData(i), "'", "''") & "', " & _ "'" & Replace(ImagePath, "'", "''") & "', " & _ Me.ID & ", '" & Replace(Me.الاسم, "'", "''") & "')", dbFailOnError End If End If Next i DoCmd.OpenReport "rptImageGallery", acViewPreview Exit Sub ErrorHandler: MsgBox " : حدث خطأ أثناء فتح التقرير" & Err.Description, vbCritical + vbMsgBoxRight, "" End Sub هي فكرة بسيطة تلبي حاجتك ، وتستطيع التعديل عليها حسب حاجتك . الملف بعد التعديل :- الصورة (1).zip
  21. وعليكم السلام ورحمة الله وبركاته 🤗.. لو استخدمت خاصية البحث في المنتدى ، لكنت وجدت الكثير من المشاركات التي تناولت نفس الموضوع ، منها :-
  22. وعليكم السلام ورحمة الله وبركاته .. حاول استخدام المعادلات لسهولتها عليك ، على سبيل المثال ، في الجزء الأول للطرح والنتيجة بين التاريخين :- في النتيجة للأيام :- =DATEDIF(R16, O16, "md") في النتيجة للأشهر :- =DATEDIF(R16, O16, "ym") في النتيجة للسنوات :- =DATEDIF(R16, O16, "y") أما في الجزء الثاني من جمع قيم الى تاريخ للحصول على تاريخ جديد ، استخدم المعادلة التالية :- =DATE(YEAR(O28) + T28, MONTH(O28) + S28, DAY(O28) + R28) أو هذه المعادلة :- =DATE(YEAR(O28) + T28 + INT((MONTH(O28) + S28 - 1) / 12), IF(MOD(MONTH(O28) + S28, 12) = 0, 12, MOD(MONTH(O28) + S28, 12)), DAY(O28) + R28) جرب النتيجة وأخبرنا بها ، في ملفك المرفق التالي :- جمع_.zip
×
×
  • اضف...

Important Information