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

Foksh

الخبراء
  • Posts

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

  • تاريخ اخر زياره

  • Days Won

    216

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

  1. حاولت قراءة الباركود على أكثر من تطبيق وأكثر من جهاز ، ولم استطع فعلاً قراءته ... متابع بصمت
  2. وعليكم السلام ورحمة الله وبركاته .. اعجبتني الفكرة ، و وددت المشاركة بالتالي .. ما عليك فعله بيدك حتى تنجح الفكرة .. في المديول :- الخطوة الأولى اذهب للدالة :- Private Function ExitTimer() As Boolean وقم بحذف السطر :- Call DeleteObject(hRgn1) الخطوة الثانية أيضاً اذهب للدالة :- Public Function GenerateExit() 'MyForm As Form) وأضف بعد هذا السطر :- Do Until ExitTimer() السطر DoEvents ، لتصبح جملة الحلقة :- Do Until ExitTimer() DoEvents Sleep clngTimerInterval Loop وبعد هذه الحلقة مباشرة ، أضف السطر التالي :- Call DeleteObject(hRgn) وعليه ، فأن الملف كاملاً بعد هذه التعديلات يصبح :- db.mdb
  3. الإصدار الثاني من لعبة الدومينو والتي تدعم الشبكة ( النسخة الأولى التي تعتمد على الربط بقاعدة بيانات الجداول الخلفية ) . مميزات الإصدار الأول :- إمكانية لعب اللعبة من خلال الشبكة المحلية ( 4 لاعبين = 4 أجهزة ) إمكانية إضافة الكمبيوتر كلاعب للعبة الشبكة . يعني بتقدر تلعب انت وصديقك وتضيف الكمبيوتر كلاعب ثالث أو رابع . أو إنك ممكن تلعب مع 3 لاعبين كمبيوتر 😁 . إتاحة دخول لاعب على الشبكة ،واستبدال لاعب كمبيوتر بإدارة كاملة من المضيف ( صاحب اللعبة الحالية = الهوست Host ) . في حال خروج أحد اللاعبين ( خلينا نسميهم البشريين ) سيتم ملئ مقعده بلاعب كمبيوتر لاستكمال اللعب بدلاً منه . في حال رغبة اللاعب الذي خرج ( لأي سبب من الأسباب ) ، سيتم منحه الإذن بالدخول للعبة إما متفرج أو بدل لاعب كمبيوتر آخر موجود ( أو الذي تم إدخاله بدلاً منه ) ... إلخ من سيناريوهات الخروج والعودة . كل لعبة تسمى غرفة لعب ، لها رقم خاص بها للإنضمام . وذلك لمنع تداخل اللعب في الغرف . في حال كان هناك أكثر من غرفة . يعني بتقدر تلعب اللعبة على 8 أجهزة على سبيل المثال وكل 4 في غرفة منفصلة . في حال انقطاع أو خروج المضيف = الـ Host ، رح يكون معه 60 ثانية للعودة للغرفة نفسها . بشرط أن يتم كتابة نفس الإسم السابق له قبل خروجه . وهذا ينطبق أيضاً على اللاعبين البشريين - كما أسميناهم وللتمييز بينهم وبين الكمبيوتر - عند خروج أحدهم والعودة الى نفس الغرفة = بنفس الإسم . بتقدر كمضيف = Host تحديد قيمة نتيجة الفوز التي تحدد الفائز بالغرفة . طبعاً القيمة الإفتراضية = 500 . وسيكون التجميع تراكمياً بمجموع أرقام الحجارة في يد اللاعب الذي يملك أقل عدد . في لعبة الشبكة بتقدر تختار صورة لشخصيتك من خلال قائمة منسدلة = Avatar . لنفترض انك كلاعب بشري سجلت انضمامك للغرفة - قبل بداية اللعبة طبعاً - وكنت بدك تعدل اسمك أو تغيره . كل اللي عليك انك ترجع تسجل انضمام جديد بفتح اللعبة من جديد لنفس الغرفة . لن تظهر أي حجارة عندما يكون عدد الاعبين أكثر من 2 . وإلا فسيأخذ اللاعب الثاني ( إذا كانت اللعبة تضم لاعبين اثنين فقط ) مكان الكمبيوتر وستظهر حجارة كلا اللعبين مقابل بعضهما البعض . ستظر صورة لشخصية ترفع يدها في واجهة اللاعبين للدلالة على أن الدور له ، حتى لو كان الكمبيوتر احد اللاعبين المنضمين الى لعبة الشبكة . لنفترض أن الغرفة فيها 3 أو 4 لاعبين ، وأراد لاعب رابع الإنضمام الى اللعبة . فسيتم إظهار رسالة في واجهة المضيف الـ Host فقط ، تخبره أن هناك لاعب يرغب بالإنضمام الى الغرفة . وستكون الخيارات للمضيف كالآتي :- * استبدال لاعب كمبيوتر باللاعب الجديد فوراً = في حال وجود لاعب كمبيوتر * قبول اللاعب كمتفرج حتى الفوز التام = سيتم إدخاله كمتفرج فقط ، و ينتظر حتى يحقق أحد اللاعبين القيمة التي تحدد الفائز في الغرفة * رفض الانضمام = عدم إدخاله أساساً * قبول الانضمام والبدء بلعبة جديدة كلياً = تصفير اللعبة والبدء من جديد بانضمام اللاعب الجديد محاكاة كاملة لسير اللعب والحركة والسحب وتمرير الدور عند جميع اللاعبين . إذا كان عدد الاعبين أكثر من 2 ، فسيتم إظهار عدد الحجارة في يد كل لاعب ، والنتيجة التي حققها من فوز في كل لعبة ؛ في واجهة كل اللاعبين . والكثير من المميزات سأترك لكم اكتشافها بأنفسكم 😉 . وسأكتفي بهذا القدر من النقاط . ما عليك فعله لضبط اللعب في الشبكة :- ربط جميع واجهات اللعب بالملف المرفق TBL ، وهو قاعدة بيانات الجداول التي تخص الشبكة على السيرفر فقط . وهنا في التحديث الجديد لاحقاً سيتم الاستغناء عنه كلياً بحيث يتم اللعب على الشبكة من خلال وسيط يعمل كسيرفر يربط اللعبة من خلال رقم الغرفة بشكل ديناميكي عجيب . وقد تم بناؤه من خلال لغة C# . المرفق مفتوح المصدر لعشاق البحث والتقصي 😁 . وليس هنا أي أسرار هذه المرة 😜 . ويسعدني تعليقاتكم حول آلية تطبيق اللعبة . Domino Network.zip
  4. بارك الله فيكم أستاذنا الكبير .. يفي بالغرض بالطبع . وأتفق معكم بهذا التفكير تماماً .. ويسعدنا أن نشارك به جميعنا إن أمكن . لكم كل الشكر والإحترام على تجاوبكم معنا . وفقكم الله ورعاكم
  5. 😮 رأيي الفني 😅!! فكرة أخونا الأستاذ أبو عبدالله جميلة بلا شك وأحييه على الفكرة التي خرج بها . ولكنك ستشعر الفرق عندما تتعامل مع سجلات كثيرة .. فالفكرة الأساسية التي اعتمد عليها وهي rpt.Line الأساسية ستكون بطيئة جداً لو افترضنا التعامل مع تقرير يحتوي 100 سجل على سبيل المثال . ولكن في فكرة التعديل الذي قمنا به وابتعادي عن الفكرة السابقة هي باستخدام GDI APIs التي أتت من المرفق A2KPictureBoxVer35.accdb الذي شاركنه أخي جعفر . يعني افتح التقرير rpt_BG_img_Barcode في مرفق الأستاذ عبدالله ، وانتقل لعرض الصفحة الثانية !!! ستشعر الفرق 100% وختاماً لست في مكان أقييم به عمل أحد من الأساتذة والأعضاء ، فأخوكم ما زال يتعلم ولله الحمد 😇
  6. تفضل اخي منتصر .. التعديلات التي تمت :- الدالة DrawAndSaveBarcode أصبحت :- Public Sub DrawAndSaveBarcode(txt As TextBox, img As Image, barcodeType As String, Optional bVertical As Boolean = False) Dim saveDir As String Dim fullPath As String Dim parentReport As Report Dim saveMode As String Dim shouldSave As Boolean On Error Resume Next Set parentReport = img.Parent If parentReport Is Nothing Then Set parentReport = img.Parent.Parent On Error GoTo 0 saveMode = "NoSave" If Not parentReport Is Nothing Then saveMode = Nz(parentReport.OpenArgs, "NoSave") End If shouldSave = False If saveMode = "SaveAll" Or saveMode = "SavePage" Then shouldSave = True End If If shouldSave Then saveDir = CurrentProject.Path & "\QRImg\" If Dir(saveDir, vbDirectory) = "" Then MkDir saveDir fullPath = saveDir & barcodeType & "_" & txt.Value & ".bmp" Else fullPath = "" End If If LCase(barcodeType) = "qr" Then Call drawQuickResponseToImage(txt, img, savePath:=fullPath) ElseIf LCase(barcodeType) = "code128" Then Call drawCode128(txt, img, , bVertical, savePath:=fullPath) End If End Sub الإستدعاءات في الأزرار أصبحت :- Private Sub cmdOpenWNavSave_Click() DoCmd.OpenReport "rpt_BG_img_Barcode", acViewPreview, , , , "SavePage" End Sub Private Sub cmdOpenWOSave_Click() DoCmd.OpenReport "rpt_BG_img_Barcode", acViewPreview, , , , "NoSave" End Sub Private Sub cmdOpenWSave_Click() DoCmd.OpenReport "rpt_BG_img_Barcode", acViewPreview, , , , "SaveAll" End Sub Private Sub cmdSave_Click() DoCmd.OpenReport "rpt_BG_img_Barcode", acViewPreview, , , acHidden, "SaveAll" DoCmd.Close acReport, "rpt_BG_img_Barcode", acSaveNo MsgBox "بنجاح QRImg تم توليد وحفظ جميع الصور في مجلد", vbInformation + vbMsgBoxRight, "" End Sub وفي التقرير أصبحت التمرير كالآتي :- Private Sub Report_Open(Cancel As Integer) On Error Resume Next If Nz(Me.OpenArgs, "") = "SaveAll" Then Me.TxtPages.ControlSource = "=[Pages]" Else Me.TxtPages.ControlSource = "" End If On Error GoTo 0 End Sub Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) Call DrawAndSaveBarcode(Me.FieldCode128, Me.ImgQR4, "Code128") Call DrawAndSaveBarcode(Me.FieldCode128, Me.ImgQR5, "Code128", True) Call DrawAndSaveBarcode(Me.FieldQRCode, Me.ImgQR2, "QR") End Sub أتمنى أن يلبي ها التعديل المطلوب . طبعاً بالإستعانة بنموذجك أخي منتصر 😉 . QR_Barcode - 5.accdb
  7. وعليكم السلام ورحمة الله وبركاته ، تحقق من أن النماذج الأخرى لها خاصية منبثق ومشروط = نعم
  8. بخصوص هذه النقطة ، لا أعلم إن كانت صحيحة ، لأنني جربت فكرتك ولم تكن ناجحة معي سابقاً للأسف 😅 جميل جداً ما تقدمت به . لم تغب عن بالي الفكرة ، ولكني فعلاً كنت قد انشغلت باستراق فكرة التدوير من المرفق الأصلي الذي شاركه أخي جعفر 😁 . لذا جزاكم الله عنا كل خير فيما يخص هذه الفكرة ، فإن شاء الله سأقوم بالتعديل حال وصولي الى البيت .. ولكن إن كان لك أن تشاركني فأهلاً وسهلاً .
  9. الآن في الرد الحالي .. الحد الاقصي: 9.77 ميجا
  10. يعني انت تريد تنظيف الأكواد من الاعتماد على Tag كلياً ؟ فقط سنقوم بإزالة الجملة الشرطية التي تختص بالـ Tag ، من المديول ModulQRCode . If level = "" Then i = InStr(LCase(Text.Tag), "qrcode") If (i > 0 And i + 5 < Len(Text.Tag)) Then level = Mid(Text.Tag, i + 6, 1) End If تم نقل الدالة الى المديول وتحويلها الى Public ، وتنظيف أكواد التقرير ، والإعتماد فقط على الاستدعاء :- Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer) Call DrawAndSaveBarcode(Me.FieldCode128, Me.ImgQR4, "Code128") Call DrawAndSaveBarcode(Me.FieldCode128, Me.ImgQR5, "Code128", True) Call DrawAndSaveBarcode(Me.FieldQRCode, Me.ImgQR2, "QR") End Sub وكملاحظة ، قمت بإضافة مربع النص PgCount داخل التقرير في Page_Footer ، والهدف منه كان لتجربة بأن يتم تصدير كافة الرموز Qr/Code128 عند فتح التقرير ، أو تستطيع الغاء مربع النص هذا وسيتم تصدير الصور داخل المجلد حسب الصفحة التي يتم فتحها فقط . المرفق بعد التعديل :- QR_Barcode - 3.accdb
  11. السلام عليكم ورحمة الله وبركاته .. أستاذنا الفاضل الدكتور @محمد طاهر عرفه .. كان لدي مقترح سابق لم أطرحه عندما كنت برتبة مشرف ، وهو زيادة حصة الخبراء بحجم الملفات المرفقة لتصل الى 25 ميجا بدلاً من 4.88 ميجا . ولكم جزيل الشكر إدارة المنتدى والقائمين على التطوير والتحسين ..
  12. تفضل أخي @jjafferr .. الآن تم الدمج بحيث لديك جميع الخيارات :- القديمة عن طريق Tag . الجديدة من خلال قيمة مربع النص لكل QR أو Code128 .. حفظ الصور في المجلد QRImg بجانب قاعدة البيانات . ( وهنا سيكون لنا وقفة مرهونة بتجربتك 😉 ) QR_barcode.accdb
  13. بما أن الأول مشروط بقبول الثاني 😅 ، فلا مشكلة بإذن الله لأنني وقد قمت فعلاً بتعديل الفكرة سابقاً لتصبح معتمدة على اسم مربع النص وليس الـ Tag . ولكن لي ملاحظة بسيطة ، حيث في السابق كان كود الـ QRCode يعتمد أحياناً على Tag لتحديد دقة ومستوى الباركود (H,Q,M) . الآن بعد إزالة اعتمادنا على الـ Tag ، سأعتمد على اختيار الدقة الأفضل H . تمام ؟ أما الثاني فليس هناك مشكلة في حفظ الـ QR أو Code128 كصور بمجلد خارجي . وإن شاء الله حال عودتي للبيت .
  14. بعض ما عندكم أخي @منتصر الانسي ، فأنتم السابقون بالأفكار الرهيبة التي طرحتموها . وما كان مني إلى اتباعكم بالتفكير خارج الصندوق
  15. للأسف لم يتم ضبط المطلوب بشكل صحيح أيضاً .. فما زالت المشكلتين اللاتي طرحتهما موجودات 😇 يلزمك التجربة على إصدار 64 للتأكد من نجاح التعديلات 👍🏻
  16. تمام ، قمت بالتطبيق مسبقاً بإجراءات بسيطة واستخدام فكرة الرسم والتدوير من الملف المرفق الأصلي A2KPictureBoxVer35 .. New QR.accdb
  17. ما شاء الله الأستاذ خليفة أبدع في عمله وتطبيقه بشكل جيد جداً .. وإن سمح لي بملاحظات بسيطة لا تقلل من جوهر عمله الجميل . تخصيص اللون لم يعمل معي على الإصدار 64 .. عند فتح التقرير وتكبيره بملئ الشاشة يختفي الشريط خلفه 😥 ..
  18. السلام عليكم ورحمة الله وبركاته.. تقبل الله طاعاتكم ، ومبارك على الجميع عيد الأضحى المبارك.. من باب السؤال والنقاش . هل من الممكن فعلاً أن نجعل التقرير يعرض الباركود ولكن بدل ما نرسم الباركود على أرضية التقرير ، أن يتم الرسم على أرضية عنصر صورة غير منضم 🤔 !! بمعنى آخر ، نستغل فكرة من المرفق الثاني ودمجها في النتيجة المطلوبة وبالتالي لن نحتاج صورة محفوظة أساساً !!! الفكرة تتلخص بالمرفق التالي بعد تشريح الأكواد وإزالة ما ليس له عمل لتطبيق الفكرة ، وإضافة الكلاس clsPictureBox واستغلال فكرة التنفيذ من الزر Start Draw with Mouse في المرفق A2KPictureBoxVer35 الأصلي من المشاركة الأولى ، بحيث جعلت الفكرة تقوم على رسم رمز الـ QR والـ Code128 😅 . وأشعر بأنها فكرة قد لا تكون ذكية .. ولكن كتجربة مختلفة عما تفضل به الأساتذة وجعلها تعمل على النواتين 32 و 64 :- QR_barcode.accdb
  19. التشاؤم قد يكون سبباً في جعلنا نهز الشوك في وروده لشم عبيره في لحظة من اللحظات 😅 أتمنى أن نجد التفاعل الذي نتمناه جميعاً
  20. بدايةً وعليكم السلام ورحمة الله وبركاته.. وأتمنى أن لا تكون كلماتي في ردي هذا محبطة لك ولجهودك ، وأن لا تكون كالملح فوق الجرح مؤلمة .. وكما اختصر الكلام في قسمنا هذا ، مشاركة وتفاعل الكثيرين من منتسبي قسم الآكسيس . فإن قسمنا - مع احترامي للجميع - يفتقر الى روح المشاركة والمعنوية التي تجعلنا نُقدم على هذه الخطوة . فأغلب التفاعلات هنا مجرد :- يدخل البعض ليبحث عن موضوع لم يشارك به أحد ، وكأنه ماراثون "كلمة مقتبسة" . يدخل البعض أيضاً لا يكلف نفسه حتى عناء البحث باستخدام ميزة البحث في المنتدى. فتراه يرمي موضوعه دون شرح او توضيح كافي ، أو أحياناً دون مرفق . وهذا النوع لا لوم عليه من التفاعل في أي مواضيع لأنه يبحث عن معلومة . ترجمة رقم عدد الزيارات للمواضيع المطروحة ، تدل على أن الأغلبية لدينا في قسمنا ، جمهور صامت !! حاله كحال جمهور في مباراة كرة قدم دون أي تفاعل ولا حتى كمشجع ، وقد يكون أحياناً غير منتقد أيضاً 😅 . ينقصنا في قسم الآكسيس شيء واحد فقط وهو ، الترابط الاجتماعي . فأحياناً كثيرة نجد أن معظم الردود تؤخذ على محمل شخصي ، ولا تؤخذ على محمل أن اختلاف وجهات النظر لا يُفسد للودّ قضية . لذا أتمنى أن نلمس في القسم صحوة للكثيرين بتفاعلهم ومشاركاتهم بأفكارهم ، ليس فقط في الردود وكأننا آلات مبرمجة على مبدأ سين سؤال وجيم جواب . وحتى لا ينزعج أحد من ردي هذا ، فقد أكون أولكم ممن تلمسه جميع الملاحظات ، ولا أزكي نفسي عليكم بل أول المقصّرين . شكراً لمن قرأ للنهاية ، ووصل الى هذا الحد بصدر رحب ، وعلى من لا يأخذ كلامي وكأنه المقصود 💐 .
  21. أخي الفاضل .. عادةً تعطى النتيجة بـ للإجابة والمشاركة التي حققت طلب صاحب الموضوع ، لأسباب متنوعة . أهمها أشعار من يقرأ الموضوع بأن المشكلة قد تم حلها في الإجابة كذا . أيضاً كنوع من الدعم والشكر لصاحب الإجابة التي حققت طلبك كاملاً .. وأعلم أن اختيارك لإجابتك في هذا الموضوع هو عن دون قصد .. ولكن وجب مني التوجيه فقط لا غير ، بأن تصوب الإختيار لأستاذ عبدالله بشير عبدالله .
  22. تم الإنتهاء من ضبط جميع خصائص لعبة الشبكة ، وإتمام حل مشكلة الإتصال للـ Host من أي جهاز دون الحاجة لربط قاعدة بيانات اللعبة بقاعدة بيانات الجداول في كل مرة 😈 . حيث كانت المشكلة الرئيسية هي أن جميع الأجهزة ستتصل بقاعدة بيانات خلفية واحدة ؛ ولكن ماذا لو كان هذا الجهاز غير متاح في هذه اللحظة !!!!!!! وبفضل الله تم الحل بنجاح وإيجاد حل لهذه المشكلة . وهذا تجسيد للعب 4 لاعبين .
  23. ما شاء الله أخي @منتصر الانسي .. فعلاً التفكير خارج الصندوق يلعب دوراً مهماً في الإنتاج أبدعت ما شاء الله ..
  24. انا فقط قمت بإضافة PtrSafe إلى جميع الوظائف والدوال في المديولين .. الخطأ الأول عند تحميل النموذج :- pb.ImageControl = Me.Image0 بعد فتح النموذج وتجاهل الخطأ السابق ، يظهر الخطأ التالي عند الزر :- Private Sub Command30_Click() pb.DIBFlipHorizontal End Sub وهكذا في جميع الأزرار التي تستدعي pb. انا شرحت المشكلة التي قد تواجه بعض المستخدمين الذي قاموا بتحميل الملف والعمل على بيئة 64 وليس 32 . فالملف يعمل بشكل سليم على أوفيس 32
×
×
  • اضف...

Important Information