اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

نجوم المشاركات

  1. Foksh

    Foksh

    أوفيسنا


    • نقاط

      18

    • Posts

      4479


  2. ابوخليل

    ابوخليل

    أوفيسنا


    • نقاط

      14

    • Posts

      13626


  3. Debug Ace

    Debug Ace

    02 الأعضاء


    • نقاط

      7

    • Posts

      75


  4. منتصر الانسي

    منتصر الانسي

    المشرفين السابقين


    • نقاط

      7

    • Posts

      1216


Popular Content

Showing content with the highest reputation since 02/06/26 in all areas

  1. السلام عليكم وجدت لكم صيدا سمينا لمن يواجه صعوبة في استخدام شجرة الحسابات اسميتها الحرة .. لأنها لا تستخدم اداة ActiveX TreeView تعتبر مشكلة أداة ActiveX TreeView في الإصدارات الحديثة من Microsoft Access (خاصة مع ظهور النسخ 64-بت) من أكثر التحديات شيوعاً، لأن الأداة القديمة (MSCOMCTL.OCX) غير مستقرة، تسبب مشاكل في "المكتبات" (DLLs)، ولا تدعم بنية 64-بت بشكل أصيل. هذا هو الخيار "الاحترافي" حالياً. بدلاً من أداة خارجية، يتم استخدام وحدات نمطية (Class Modules) برمجها مطورون لتغيير شكل النماذج العادية لتشبه الشجرة تماماً باستخدام عناصر التحكم الأصلية (مثل الـ Labels والـ Textboxes) تعتبر أداة Jan Karel Pieterse (المعروفة بـ JKP TreeView) واحدة من أرقى الحلول البرمجية التي تعتمد على "الفئات" (Class Modules) لتعويض أداة ActiveX، لأنها لا تعتمد على ملفات خارجية، بل تُبنى بالكامل داخل كود VBA إليكم المثال العملي تم فيه إنشاء شجرة حسابات احترافية بدون الاعتماد على ActiveX ولمن أراد التوسع والاستفادة يوجد امثلة ومرفقات متنوعة مجانية خاصة بأكسس اصدارات قديمة وأكسل وورد .. في هذا الرابط Treeview 26-5.rar
    6 points
  2. عن تجربتي الشخصية سأتحدث . حيث قمت سابقاً بتنفيذ الفكرة لمشروع آخر ليرسل الإيميلات من بريده في Gmail إلى أي ايميل تريده ؛ دون إدخال أي وسيط أو موقع خارجي . حيث سيكون تعاملك مع خدمات جوجل مباشرة قمت بإنشاء جدول جديد باسم tbl_EmailSettings . ويحتوي الحقول التالية :- IDMail = حقل ترقيم تلقائي . SenderEmail = حقل نصي ، ويمثل أيميلك الذي تريد استخدامه كإيميل مرسل . SMTPServer = حقل نصي ، ويمثل الخدمة المستخدمة في Gmail لإرسال البريد الإلكتروني . وتكون عادة = smtp.gmail.com SMTPPort = حقل رقمي ، ويمثل المنفذ الذي سنستخدمه للإيميلات الصادرة . وهو عادة لـ Gmail يكون 465 . SMTPPassword = حقل نصي ، وهو الحقل المهم جداً هنا والذي ستكون قيمته كلمة مرور التطبيق الذي سنقوم بإنشائه من خلال بريدك الإلكتروني الذي سجلت به في الحقل SenderEmail . أما كيف نحصل عليه فسيكون الشرح تالياً . UseSSL = حقل من نوع Yes/No . وهو مهم إلى حد ما . والسبب أنه جميع خدمات البريد الحديثة (Gmail, Yahoo, Hotmail) تشترط وجود تشفير SSL . لذا فقيمته بالنسبة لك ستكون دائماً True . الآن كيف نحصل على SMTPPassword المقدم من Gmail ؟ إليك الطريقة خطوة بخطوة ببساطة . في متصفحك ، ادخل إلى ( إعدادات حساب Google ) . تحقق أولاً وقبل كل شيء من تفعيل ميزة ( التحقق بخطوتين ) أو ( 2-Step Verification ) في حسابك . ابحث في خانة البحث عن ( كلمة مرور التطبيق ) أو ( كلمات مرور التطبيقات )، او ( App Password ) ، حسب لغة الموقع لديك . ادخل كلمة المرور الخاصة بالإيميل الذي تريد استخدامه كإيميل مرسل . في خانة ( اسم التطبيق ) أو ( App Name ) ، أدخل اسم للتطبيق ، مثلاً ( SenderMailer ) . ثم انقر زر ( إنشاء أو Creat ) . الآن سيزودك الموقع بكلمة من 16 حرف ، انسخها والصقها في الحقل SMTPPassword . الآن في الجدول المخصص للأعدادات ، سيكون لديك الحقول المهمة وقيمها كالتالي :- SMTPServer = عنوان الخادم وهو smtp.gmail.com SMTPPort وهو المنفذ = 465 SMTPPassword = كلمة المرور التي حصلنا عليها من 16 حرف ( يفضل بدون مسافات ) UseSSL = نعم أو علامة صح SenderEmail = إيميلك الذي سجلت به والذي ستستخدمه للإرسال الآن في زر الإرسال المخصص لكل ايميل بشكل فردي ، سنستخدم الكود البسيط التالي :- Dim result As String Dim strRecipient As String Dim strMessageBody As String strRecipient = Trim(Nz(Me.B2.Value, "")) strMessageBody = Nz(Me.Fonda.Value, "") If strRecipient = "" Then MsgBox "يرجى إدخال إيميل المستلم أولاً", vbExclamation + vbMsgBoxRight, "" Me.B2.SetFocus Exit Sub End If result = SendSmartEmail(strRecipient, "رسالة تجريبية", strMessageBody) If result = "Success" Then MsgBox "تم الإرسال بنجاح", vbInformation + vbMsgBoxRight, "" Else MsgBox "فشل في الإرسال", vbCritical + vbMsgBoxRight, "خطأ" End If وفي زر الإرسال الجماعي ، سنستخدم الكود التالي :- Dim rs As DAO.Recordset Dim result As String Dim counter As Integer Dim strTo As String Dim strMsg As String Set rs = Me.RecordsetClone If rs.RecordCount = 0 Then MsgBox "لا توجد سجلات للإرسال إليها في هذا النموذج", vbInformation + vbMsgBoxRight, "" Exit Sub End If If MsgBox("هل أنت متأكد من إرسال إيميلات لجميع السجلات الحالية؟", vbQuestion + vbYesNo + vbMsgBoxRight, "تأكيد الإرسال") = vbNo Then Exit Sub counter = 0 rs.MoveFirst Do Until rs.EOF strTo = Nz(rs!Gmail, "") strMsg = Nz(rs!Fonda, "") If strTo <> "" Then result = SendSmartEmail(strTo, "تنبيه بريدي", strMsg) If result = "Success" Then counter = counter + 1 End If End If rs.MoveNext Loop MsgBox "تمت عملية الإرسال بنجاح" & vbCrLf & _ "عدد الإيميلات المرسلة: " & counter, vbInformation + vbMsgBoxRight, "" Set rs = Nothing وملاحظة بسيطة ، وهي تستطيع تغيير موضوع عنوان البريد الذي سيصل لأي شخص ترسل له ( بشكل منفرد ) بتغيير قيمة "رسالة تجريبية" داخل زر الإرسال . أو من خلال الزر المخصص للإرسال الجماعي بتغيير قيمة "تنبيه بريدي" ليكون هو العنوان لموضوع البريد . وهذا ملف تجريبي بعد الإضافات التي ذكرتها . فقط يرجى ملئ الجدول بالإيميل و كلمة المرور التي تتكون من 16 حرف فقط . Nouveau.zip الفكرة و المشاركة كانت تتبع الموضوع التالي هنا ، وتم فصلها لإفرادها وكي تعم الفائدة على من يمر باحثاً عن فكرة إرسال بريد من آكسيس دون قيود .
    4 points
  3. ولماذا لا نجمع بين مزايا كل حل كما بالمرفق هنا؟ ولكن لاأدري إذا ما كان ماكرو البيانات يندرج ضمن المحضورات المذكورة في التحدي Challange_01_03.accdb
    2 points
  4. شكرا تم الحل ج مساعدة.xlsm
    2 points
  5. 2 points
  6. وعليكم السلام ورحمة الله وبركاته أهلا بك أخي أسمح لي أن أقول لك وبكل احترام وتواضع السبب هو : أنت كتبت في الكود وقة5 بدون راء والصحيح ورقة5 بحرف الراء
    2 points
  7. السلام عليكم وتماشيا مع روح الشروط (وليس تماشيا مع الشروط 🙂 ) ، وهي ثغرة قانونية استندت عليها في المرفق 🙂 هممم ، اعتقد هذه العبارة ذو اكثر من تأويل ، فإذا استعملناها بحذافيرها ، فيمكن ان نعمل المطلوب ولكن الكود سيكون غير واضح بسبب إستعمال عدد كبير من iif في بعضها البعض !! ولذلك من مرفقات الشباب اعلاه ، ارى انهم لم يلتزموا بالعمل على مستوى إعدادات الجدول فقط ، وانما انتقلوا الى إعدادات الحقول ايضا 🙂 Challange_01_02.zip
    2 points
  8. وعليكم السلام ورحمة الله وبركاته نستخدم دالة Abs في VBA. هذه الدالة تقوم بتحويل أي رقم سالب إلى موجب مع تغيير اسماء التكست لديك TextBox3.Value = Abs(Val(TextBox1.Value) - Val(TextBox2.Value))
    2 points
  9. الله الله بارك الله فيكم وأكثر الله من امثالكم وجعله في ميزان حستاتكم
    2 points
  10. وهذي مشاركتي المتواضعة 🙂 التحدي 1 - التعامل مع الجداول وخصائصها - موسى.accdb
    2 points
  11. تقصد بهذا الشكل ؟؟
    2 points
  12. وعليكم السلااااااام ورحمة الله وبركاته .. وبما أنني من عشاق تصميم الألعاب في آكسيس .. وقد كان لي تجربة مع هذه اللعبة الجميلة ، وقد قمت بتضمينها ضمن برنامج إدارة النوادي الرياضية في هذا الموضوع هنا .. وكانت تجربتي بالشكل القديم التالي :- ولكن وبما أننا في 2026 ، فسأقوم بتطويرها بشكل أجمل ضمن هوايتي المتواضعة .😁.
    2 points
  13. حاولت بقدر المستطاع الموضوع صعب بدون اكواد جداول مصنع تقنى.accdb
    2 points
  14. الطرح مبهم يجب عليك الشرح بتفصيل على النحو التالي : 1- نوع العمل او المشروع الذي تعمل عليه 2- نوع البيانات المدخلة بكل شيت 3- ما هي البيانات الثابتة تقريبا 4- ما هي البيانات المتجددة التي يتم ادخالها بانتظام 5- ارفاق الشيتات بلمف مضغوط بشرط ان تشتمل على بيانات حتى لو كانت هذه البيانات وهمية 6- ما المطلوب في المخرجات .. اي : ما التقارير التي تريد اخراجها وطباعتها هنا يمكن للاخوة هنا مساعدتك في بناء برنامجك
    1 point
  15. اعرض الملف أداة إنشاء مربعات التحرير والسرد المتتالية {سلسلة الأدوات المساعدة المخصصة} لا يخفى على أي شخص تعامل مع مربعات التحرير والسرد المتتالية مقدار العمل والوقت الذي يحتاجه في - تحديد معايير تصفية البيانات الخاصة بكل مربع تحرير وسرد وفقاً لما تم تحديده في المربعات التي تسبقه بناءً على مرجعية إسم مربع التحرير والنموذج - عند تغيير إسم النموذج قد يؤدي ذلك إلى ضرورة تعديل جملة الإستعلام الخاصة بكل مربعات التحرير والسرد - الأكواد التي يجب كتابتها لحدث بعد التحديث لكل مربع تحرير وسرد ليتم تصفية أي قيم في المربعات التالية وتحديث القوائم بناءً على ماسيتم إختياره هذا هو بالضبط ما ستقوم هذه الأداة بمعالجته وبطريقة سهلة للغاية فلن يتطلب الأمر إلى أي معرفة برمجية مجرد نسخ سطرين (سطرين فقط) وتعيين معايير تصفية بشكل بسيط كل مانحتاجه للتعرف على خطوات الإستفادة من الأداة سنجده في الملف المرفق أرجو أن يتم قراءة جميع الملاحظات بتمعن وفي حال وجود أي أسئلة أو إستفسارات فباب النقاش مفتوح تحياتي,,, صاحب الملف منتصر الانسي تمت الاضافه 02/10/26 الاقسام قسم الأكسيس  
    1 point
  16. مقصدي أن الطريقة التقليدية التي نستخدمها عادةً بوضع Me.Combo2.Requery في حدث AfterUpdate . ولكن بعد مراجعة الكلاس وتحفته الفنية ، لاحظت أنه يقوم بأكثر من مجرد Requery ؛ فهو يقوم بمسح القيم القديمة وبناء جملة SQL ديناميكية لفك الارتباط باسم النموذج .
    1 point
  17. وعليكم السلام ورحمة الله وبركاته .. جرب هذا التعديل أخي الفاضل ، لأنني أستخدم تطبيق واتس اب سطح المكتب ، وليس واتس اب ويب .. كود إرسال مرتبات.xlsm
    1 point
  18. .. ما شاء الله ، فكرة جميلة ونظيفة ولا تشوبها شائبة في التنفيذ . بس استخدام Requery الشيء الجميل في الموضوع هو أنك إذا أردت تغيير المنطق ، ففقط تغيره في مكان واحد وهو الكلاس ، وليس في 50 نموذجاً مثلاً . جزاك الله خيراً لهذه المشاركة الجميلة والقيمة ..
    1 point
  19. شكرا الف استاذنا المبدع الكريم على هذا الاثراء اداة جميلة احترافية تختصر الكثير من الوقت والجهد .. خاصة الأحداث الخاصة بالمربعات المعاناة .. هي في كثرة الحاجة اليها وتكرارها في كثير من النماذج
    1 point
  20. لا ابدا ليس هناك ضرر .. الاختصار والاحكام نلجأ اليه غالبا في حالات منها ان تكون داخل اجراء أو حدث واحد .. وتكون الاكواد فيه طويلة وكثيرة جدا ويمكن اختصارها الى الأفضل .. بشرط ان تكون افضل في السرعة والأداء او ربما عدة احداث طويلة ومكررة يمكن جمعها في دالة واحدة ومناداتها بسطر واحد والفائدة من هذه هي سهولة التعديل مستقبلا او التطوير حيث سيكون التعديل في مكان واحد بدلا اماكن عديدة متفرقة .
    1 point
  21. شكرا جزيلا استاذنا .. معلومة جديدة .. وحقيقة ليتك تفرد هذه المشاركة بموضوع وعنوان جديد يخصها لتفردها ومن اجل سهولة البحث والوصول اليها على فكرة الباسوورد 16 حرف هو المتبع الآن في مواقع بوابات رسائل الـــ sms من اجل ربط التطبيقات بالبوابة للارسال من خلالها ويسمونه Token
    1 point
  22. عفوا .. اقصد ان الدالة تقوم بحماية الحقول بينما هي محمية بالفعل لجعل الحقول قابلة للتحرير اعتقد ستصبح الدالة هكذا Private Sub Add_New_Record() Me.comresearch_01 = Null dateoftrans.Locked = False Me.stat.Locked = False Me.F_DATAILS.Locked = False DoCmd.GoToRecord , , acNewRec End Sub
    1 point
  23. حلو قوى و عجبتنى جدا نكهتك الفوكشية
    1 point
  24. وعليكم السلام ورحمة الله وبركاته هناك امر لم استوعبه في ملفك هل المعادلة في N1 تتعامل مع الحلية C2 فقط ام مع كل العمود C2:C اذا كانت مع كل العمود فيفضل كتابتها في N2 ثم تسحب الى اسقل حتى تتعامل كل حلية في C مع ما يقابلها في N اما اذا كانت المعاملة محدودة C2 مع N1 فقط جرب الملف المرفق ج مساعدة.xlsm
    1 point
  25. نعم من خلال المديول انا لم ارفع المرفقات كاملة هنا في المرفق تجد الاصدار 2000 treeviewaccess.zip
    1 point
  26. وعليكم السلام ورحمة الله وبركاته .. شكراً لك على الهدية القيمة .. وخطر ببالي سؤال يخص التصميم . بأي إصدار تم إنشاء قاعدة البيانات في أساسها ؟؟؟ أم هي الفكرة من خلال المديول فقط !!!! وأقصد تحديداً النموذج ufTreeview
    1 point
  27. وعليكم السلام اخوي ابوخليل مايكروسوفت اوقفت او في طريقها لإيقاف: عن الاكسس كائنات ActiveX والذي يشمل على سبيل المثال: شجرة الحسابات ، والباركود ، عن الوندوز كود VBscript والذي يشمل على سبيل المثال: VBScript RegExp libraries على ان توفر مايكروسوفت بديل لهذه الجزئية. وعليه محتاجين الى بدائل اخرى ، مثل ما تفضلت به هنا ، شكرا جزيلا 🙂
    1 point
  28. فكرة جميلة جداً تجميع بين عدم ظهور الشروط في خصائص الحقول + القوة والمتانة + دعمها للرسائل العربية
    1 point
  29. استاذى العزيز / خليفة اشكرك اولا : لسرعة الرد اشكرك ثانيا : للعناية لوضع اجابة اعتقد انها مثالية و متكاملة و اكثر مما كنت اطمع و ينطبق عليك المثل ( اذا اطعمت ابشع ) فالشكر لايكفى كرم اخلاقك و علمك ربنا يزيدك من فضلك و لكن لااملك سوى كل الشكر و التقدير و الاحترام
    1 point
  30. تفضل استاذ @AMINYOUSIF المرفق بعد التعديل بطلبك حسب ما فهمت . ووافني بالرد . ACC_2026-1.rar
    1 point
  31. شكرا استاذ بارك الله فيك وجزاك الله كل خير
    1 point
  32. ربنا يطيل في عمركم ويعطيكم جميعا الرزق المزيد بما تنفع به الأعضاء وتخففون عن الناس أنت تستحقون اكثر من ذلك لأنكم تساعدون الناس
    1 point
  33. جميل .. الوان مناسبة طفولية مبهجة.. الشغف بمثل هذه الالعاب ولى مع الصبا .. الله المستعان و بما انكم تستمتعون بمثل هذه الأعمال .. اريد ان ابدي ملاحظة .. وهي خلو جميع امثلتكم من الاصوات المناسبة للأحداث
    1 point
  34. تمام هراجع كود الاحصائيات انا كل اهتمامى كان فى الانيميشن طريقة حركة العلامات عند النقر وكيفية اظهارها تركيز اللون الاصفر الفاتح على المربعات الفارغة عند تفكير الكمبيوتر اعطاء القليل من الوقت للكمبيوترللتفكير لاضفاء تجربة ممتعة
    1 point
  35. في آخر نسخة لك ، انظر للخلل في الإحصائيات :- وحيث تم إضافة العاطفة البرمجية ( مقتبس من مشروع RobotaAI ) لأخي أحمد يوسف . هذه النسخة الأخيرة من اللعبة بالإصدارين 32 و 64 .. X-O Game - 64.zip X-O Game - 32.zip إصدار تفاعلي أكثر مرونة عن اللعب ضد الكمبيوتر .. إضافة تفاعل عاطفي مزاجي للكمبيوتر عند اللعب ضده بحيث يكون متهاون حتى في ردود أفعاله النصية عند المستويات . حسم الأمر بالمستوى الصعب ، فليس دائماً يكون ارتكاز الكمبيوتر على مركز اللعبة ليلعب به دائماً .. الملف مفتوح المصدر :- X-O Game - Open Source.accdb
    1 point
  36. برضه .. حلوة .. الأفكار والحركات .. ومريحة للعين
    1 point
  37. ما شاء الله لا قوة الا بالله شغل احترافي و تصميم جميل و مبدع
    1 point
  38. طالما وأنه بالإمكان الإستغناء عنها فهذا أفضل إذا كانت النتيجة واحدة للفكرتين فأنا من مناصري الكود الأقصر لذا فرأيي أن نبقى مع الفكرة الأولى
    1 point
  39. 1 point
  40. ماشي يا محمد .. الـ Bugs ده اللي بتتكلم عنه سببه إنك بالنقر على الأزرار بينما الكمبيوتر كان يفكر .. ولكن جاري المعالجة في المرفقات التي سيتم رفعها في المشاركة التالية .. على العموم ، انا زودت قفل زيادة علشان تفرح يا عم 😉
    1 point
  41. هل هناك من يملك افكار لكسر جمود الاكسس بعمل اضافات تعمل كمؤثرات بصرية ممتعة والان تلخيص الافكر المطلوب تحقيقها للحصول على اكبر قدر مرن و ممتع وشيق من التجربة 1- تحديد مستوى الصعوبة والسهولة لما تلعب مع الكمبيوتر 2- تحديد وادخال اسماء اللاعبين فى حالة لاعب ضد لاعب آخر 3- مؤثرات بصرية تعطى رونق جميلا لكسر جكود الاكسس وعلى فكرة انا مش هشارك دلوقتى بالمرفق والافكار لانى انا حابب اشوف افكار رواد المنتدى المحترمين
    1 point
  42. الموضوع ممتع و شيق تفضل هذه الفكرة الخطوة الأولى: تجهيز النموذج (Form) أنشئ نموذجاً جديداً (Form) أضف 9 أزرار أمر (Command Buttons) وقم بتسميتها برمجياً كالتالي: btn1, btn2, btn3 (للصف الأول) btn4, btn5, btn6 (للصف الثاني) btn7, btn8, btn9 (للصف الثالث) أضف زر عاشر باسم btnReset لإعادة اللعبة. أضف "تسمية" (Label) باسم lblStatus لعرض حالة اللعبة (دور من؟ أو من الفائز؟). الكود البرمجي Option Compare Database Option Explicit ' متغيرات عامة للتحكم في حالة اللعبة Dim GameOver As Boolean ' عند تحميل النموذج Private Sub Form_Load() ResetGame End Sub ' زر إعادة تشغيل اللعبة Private Sub btnReset_Click() ResetGame End Sub ' الإجراء الرئيسي عند ضغط اللاعب على أي مربع Private Sub PlayMove(btn As CommandButton) ' التأكد أن المربع فارغ وأن اللعبة لم تنتهِ If btn.Caption = "" And Not GameOver Then btn.Caption = "X" btn.ForeColor = RGB(0, 0, 150) ' لون أزرق لعلامة اللاعب If CheckWinner("X") Then lblStatus.Caption = "مبروك! لقد فزت." lblStatus.ForeColor = RGB(0, 150, 0) ' لون أخضر عند الفوز Beep ' صوت تنبيه GameOver = True Else ' إذا لم يفز اللاعب، يأتي دور النظام CPUMove End If End If End Sub ' منطق ذكاء النظام (الكمبيوتر) Private Sub CPUMove() If GameOver Then Exit Sub Dim moveIndex As Integer ' 1. محاولة الفوز (الهجوم) moveIndex = FindBestMove("O") ' 2. سد الطريق على اللاعب (الدفاع) If moveIndex = 0 Then moveIndex = FindBestMove("X") ' 3. محاولة السيطرة على المركز (الخانة رقم 5) If moveIndex = 0 And Me.btn5.Caption = "" Then moveIndex = 5 ' 4. اختيار أول خانة متاحة إذا فشلت الاستراتيجيات أعلاه If moveIndex = 0 Then Dim i As Integer For i = 1 To 9 If Me.Controls("btn" & i).Caption = "" Then moveIndex = i Exit For End If Next i End If ' تنفيذ حركة النظام If moveIndex > 0 Then With Me.Controls("btn" & moveIndex) .Caption = "O" .ForeColor = RGB(200, 0, 0) ' لون أحمر لعلامة النظام End With ' التحقق هل فاز النظام؟ If CheckWinner("O") Then lblStatus.Caption = "للأسف! فاز النظام." lblStatus.ForeColor = vbRed ' لون أحمر للنص عند الخسارة Beep GameOver = True End If End If ' التحقق من حالة التعادل (إذا امتلأت الخانات ولم يفز أحد) If Not GameOver Then Dim IsDraw As Boolean: IsDraw = True Dim j As Integer For j = 1 To 9 If Me.Controls("btn" & j).Caption = "" Then IsDraw = False: Exit For Next j If IsDraw Then lblStatus.Caption = "تعادل!" lblStatus.ForeColor = vbBlack Beep GameOver = True End If End If End Sub ' دالة ذكية للبحث عن أفضل حركة (فوز أو دفاع) Private Function FindBestMove(PlayerSign As String) As Integer Dim WinPatterns As Variant Dim i As Integer, count As Integer, emptyPos As Integer Dim pos() As String ' جميع احتمالات الفوز الممكنة WinPatterns = Array("1,2,3", "4,5,6", "7,8,9", "1,4,7", "2,5,8", "3,6,9", "1,5,9", "3,5,7") For i = 0 To 7 pos = Split(WinPatterns(i), ",") count = 0 emptyPos = 0 Dim j As Integer For j = 0 To 2 If Me.Controls("btn" & pos(j)).Caption = PlayerSign Then count = count + 1 ElseIf Me.Controls("btn" & pos(j)).Caption = "" Then emptyPos = CInt(pos(j)) End If Next j ' إذا وجد خانتين لنفس اللاعب والثالثة فارغة، يعيد رقم الخانة الفارغة If count = 2 And emptyPos <> 0 Then FindBestMove = emptyPos Exit Function End If Next i FindBestMove = 0 End Function ' دالة التحقق من الفوز Private Function CheckWinner(Player As String) As Boolean Dim WinPatterns As Variant Dim i As Integer Dim pos() As String WinPatterns = Array("1,2,3", "4,5,6", "7,8,9", "1,4,7", "2,5,8", "3,6,9", "1,5,9", "3,5,7") For i = 0 To 7 pos = Split(WinPatterns(i), ",") If Me.Controls("btn" & pos(0)).Caption = Player And _ Me.Controls("btn" & pos(1)).Caption = Player And _ Me.Controls("btn" & pos(2)).Caption = Player Then CheckWinner = True Exit Function End If Next i CheckWinner = False End Function ' إعادة ضبط اللعبة للحالة الأصلية Private Sub ResetGame() Dim i As Integer For i = 1 To 9 Me.Controls("btn" & i).Caption = "" Me.Controls("btn" & i).ForeColor = vbBlack Next i GameOver = False lblStatus.Caption = "دورك الآن (X)" lblStatus.ForeColor = vbBlack End Sub ' ربط أحداث النقر للأزرار (Events) Private Sub btn1_Click(): PlayMove btn1: End Sub Private Sub btn2_Click(): PlayMove btn2: End Sub Private Sub btn3_Click(): PlayMove btn3: End Sub Private Sub btn4_Click(): PlayMove btn4: End Sub Private Sub btn5_Click(): PlayMove btn5: End Sub Private Sub btn6_Click(): PlayMove btn6: End Sub Private Sub btn7_Click(): PlayMove btn7: End Sub Private Sub btn8_Click(): PlayMove btn8: End Sub Private Sub btn9_Click(): PlayMove btn9: End Sub مرفق مثال على ذلك اكس او.accdb
    1 point
  43. طيب وانت تقوم بعمل التطوير اجعل منافسك هو الحاسوب لان انت اللى بتعمل كل شئ انا عاوزها لعبة تفاعلية حقيقية بينك وبين الحاسوب
    1 point
  44. استاذى الفاضل اللى اتغير حجم الابقونة ولكن الخط صغيركما هو
    1 point
  45. جرب تطبيق الخطوات التالية 1 - أنقر بالزر الأيمن على جزء التنقل 2- من القائمة إختار View By أو عرض بـ (غير متأكد من الترجمة) 3- من القائمة الفرعية حدد Icon أو أيقونة بهذا ستحصل على أكبر حجم لعناصر جزء التنقل
    1 point
  46. 1 point
  47. وعليكم السلام ورحمة الله وبركاته الطريقة حدّد كل الجدول (أو النطاق الكبير اللي تشتغل فيه). من القائمة: اختر (تنسيق شرطي) ثم (قاعدة جديدة) ثم (استخدام صيغة لتحديد الخلايا المراد تنسيقها) اكتب الصيغة التالية: =ROW()=CELL("row") اختر اللون اللي تحبّه. اضغط (موافق) الأن كلما تكتب في أي خلية في السطر اضغط السهم لليمين أو اليسار وواصل الكتابة ـ يعني لاتنزل سطر جديد ولكن تابع الكتابة في نفس السطر تقبل تحياتي
    1 point
  48. وبما ان لكل عضو عدد 3 محاولات انا سوف أكتفى بمحاولة أخرى جداول مصنع تقنى - 2.accdb
    1 point
  49. السلام عليكم ورحمة الله وبركاته اقدم لكم شرح مبسط لطريقة بحث احترافيه في شيت اكسل رابط الفيديو لتحميل ملف العمل https://www.mediafire.com/file/4t7skm26bdj2mhk/salloum.xlsx/file
    1 point
×
×
  • اضف...

Important Information