السلام عليكم ورحمة الله وبركاته
رمضان مبارك علينا وعليكم وكل عام وانتم بخير
كيف الحال يا أعضاء المنتدى؟
عندي سؤال أو استفسار
هذا الكود:
عند الضغط على زر ( تعديل بيانات الزائر ) - كما في الصورة - عند صحة الشرط تظهر رسالة.. وعند الضغط على موافق تختفي الرسالة ويعود لنفس الفورم ( تعديل بيانات الزائر )، (ممتاز).
كود :
Private Sub Btn_Edit_Click(sender As Object, e As EventArgs) Handles Btn_Edit.Click
If Txt_Vis_Name.Text = "" Then
MsgBox("الرجاء إدخال اسم الزائر")
Txt_Vis_Name.Focus()
Exit Sub
End If
End Sub
110011.jpg - MediaFire
وهذا الكود نفس الأول مع اختلاف بسيط:
ولكن عند الضغط على موافق تختفي الرسالة ويختفي الفورم أيضاً...!!!
كود :
Private Sub Btn_Banned_Click(sender As Object, e As EventArgs) Handles Btn_Banned.Click
If Txt_File_Num.Text = "" Then
MsgBox("لا بد من وجود رقم ملف المريض لفتح قائمة المنع والسماح")
Txt_File_Num.Focus()
Exit Sub
End If
End Sub
110022.jpg - MediaFire
لا أدري ما هو السبب؟؟!!
هذا الكود يعمل بنفس الطريقة التي كان يعمل الكود الأول، بخلاف أنه يضيف تخفيض النافذة المرادة عند الضغط على زر "موافق". كما يتحقق الكود من صحة الشرط الذي تم تحديده عند الضغط على زر "حظر". إذا كان الشرط صحيحا (أي إذا كان النص المدخل في النص المحدد "Txt_File_Num" فارغا)، سيتم عرض رسالة تطلب من المستخدم وجود رقم ملف المريض لفتح قائمة المنع والسماح. عند عرض الرسالة، سيتم تركيز المؤشر على النص المحدد لتتيح للمستخدم إدخال النص. إذا لم يتم إدخال النص، فسيتم تخفيض النافذة المرادة.
الكود النهائي
كود :
Private Sub Btn_Edit_Click(sender As Object, e As EventArgs) Handles Btn_Edit.Click
If Txt_Vis_Name.Text = "" Then
MsgBox("الرجاء إدخال اسم الزائر")
Txt_Vis_Name.Focus()
Exit Sub
ElseIf Txt_File_Num.Text = "" Then
MsgBox("لا بد من وجود رقم ملف المريض لفتح قائمة المنع والسماح")
Txt_File_Num.Focus()
Exit Sub
Else
Me.Hide()
End If
End Sub
يعمل الكود على التحقق من صحة كلا من الشروط الذين تم تحديدهما في الكود الأول والثاني، وعرض رسالة تطلب من المستخدم إدخال النص المطلوب إذا كان الشرط خاطئا. وإذا كان كلا الشروط صحيحا، فسيتم تخفيض النافذة الحالية.
(26-03-23, 03:30 PM)sanyor77 كتب : [ -> ]هذا الكود يعمل بنفس الطريقة التي كان يعمل الكود الأول، بخلاف أنه يضيف تخفيض النافذة المرادة عند الضغط على زر "موافق". كما يتحقق الكود من صحة الشرط الذي تم تحديده عند الضغط على زر "حظر". إذا كان الشرط صحيحا (أي إذا كان النص المدخل في النص المحدد "Txt_File_Num" فارغا)، سيتم عرض رسالة تطلب من المستخدم وجود رقم ملف المريض لفتح قائمة المنع والسماح. عند عرض الرسالة، سيتم تركيز المؤشر على النص المحدد لتتيح للمستخدم إدخال النص. إذا لم يتم إدخال النص، فسيتم تخفيض النافذة المرادة.
الكود النهائي
كود :
Private Sub Btn_Edit_Click(sender As Object, e As EventArgs) Handles Btn_Edit.Click
If Txt_Vis_Name.Text = "" Then
MsgBox("الرجاء إدخال اسم الزائر")
Txt_Vis_Name.Focus()
Exit Sub
ElseIf Txt_File_Num.Text = "" Then
MsgBox("لا بد من وجود رقم ملف المريض لفتح قائمة المنع والسماح")
Txt_File_Num.Focus()
Exit Sub
Else
Me.Hide()
End If
End Sub
يعمل الكود على التحقق من صحة كلا من الشروط الذين تم تحديدهما في الكود الأول والثاني، وعرض رسالة تطلب من المستخدم إدخال النص المطلوب إذا كان الشرط خاطئا. وإذا كان كلا الشروط صحيحا، فسيتم تخفيض النافذة الحالية.
الأخ العزيز
sanyor77
شكراً على ردك الرائع.. أنت دمجت الكودين في كود واحد.
يبدو أنني لم أقم بإيصال الفكرة..
بخصوص الكودين الذَين في ردي.. كلاهما صحيح..كل كود في زر خاص فيه.. وأتعامل معهما بشكل طبيعي.
استفساري لماذا الكود الأول عند تنفيذه والضغط على موافق في الرسالة، لا تختفي النافذة.. بينما الكود الثاني عند تنفيذه تختفي النافذة..
أكيد هناك سبب، ولكن عجزت عن فهمه..
(29-03-23, 10:13 PM)sanyor77 كتب : [ -> ]عذراً على سوء الفهم. الآن فهمت ما تقصده.
لكي نتأكد من تشخيص المشكلة بشكل صحيح، يجب أن نتأكد من أن الكود الذي زودتني به هو الكود الكامل للأزرار المعنية. إذا كان ذلك الكود الكامل، فلا يوجد شيء في الكودين يؤدي إلى إغلاق النافذة (Form) بشكل مختلف. هناك احتمال أن يكون هناك كود آخر في نموذج الفورم أو أحداث أخرى مرتبطة بهذه الأزرار تسبب هذا الاختلاف في التصرف.
لمعرفة السبب وراء هذا الاختلاف في تصرف النافذة، يمكنك تتبع أحداث التطبيق بشكل مفصل ومعرفة ما إذا كان هناك أي كود إضافي يتم تنفيذه عند الضغط على الزر. يمكنك استخدام أداة التتبع (Debugger) الموجودة في بيئة التطوير المتكاملة (IDE) لمتابعة تنفيذ الكود والتحقق من الأحداث المحددة التي تسبب إغلاق النافذة.
أيضاً يمكنك التحقق من أي أحداث أو كود إضافي مرتبط بزر Btn_Banned.Click قد يتم تنفيذه بعد الاختبار المذكور في الكود المعطى. من خلال التأكد من هذه الأمور، يمكنك تحديد سبب الاختلاف في تصرف النافذة عند تنفيذ الكود الثاني.
استخدام أداة التتبع (Debugger) في بيئة التطوير المتكاملة (IDE) مثل Visual Studio يمكن أن يساعدك في تتبع تنفيذ الكود وتحديد الأحداث المسببة لإغلاق النافذة. لاستخدام Debugger، يمكنك اتباع الخطوات التالية:
- افتح مشروعك في بيئة التطوير المتكاملة (IDE) مثل Visual Studio.
- حدد السطر الذي تريد وضع نقطة توقف (breakpoint) عليه في الكود. نقطة التوقف هي نقطة يتوقف فيها تنفيذ الكود ويمكنك فحص حالة المتغيرات ومتابعة تنفيذ الكود خطوة بخطوة. يمكنك وضع نقطة التوقف على السطر التالي في الكود الثاني:
PHP كود :
If Txt_File_Num.Text = "" Then
- 3.قم بتشغيل التطبيق في وضع التصحيح (Debug) من خلال النقر على "Debug" في القائمة العلوية ومن ثم اختيار "Start Debugging" أو باستخدام اختصار لوحة المفاتيح F5.4.عندما يصل تنفيذ الكود إلى نقطة التوقف، سيتوقف تنفيذ التطبيق ويظهر لك المتغيرات والأحداث المتاحة في تلك اللحظة.5.استخدم أدوات التحكم الموجودة في قائمة Debug للتنقل خلال تنفيذ الكود خطوة بخطوة. يمكنك استخدام "Step Over" (F10) لتنفيذ السطر الحالي والانتقال إلى السطر التالي، أو "Step Into" (F11) للدخول إلى تنفيذ دالة أو طريقة معينة.6.قم بمراقبة المتغيرات والأحداث المتاحة للتحقق من تنفيذ الكود والتأكد من أنه لا يوجد أي كود إضافي يتم تنفيذه قد يسبب إغلاق النافذة.
من خلال اتباع هذه الخطوات، يمكنك استخدام أداة التتبع (Debugger) لتتبع تنفيذ الك وظائف الكود والتحقق من الأحداث المحددة التي تسبب إغلاق النافذة. عند التنقل خلال تنفيذ الكود، تأكد من مراقبة المتغيرات والأحداث المتاحة لمعرفة ما إذا كان هناك أي تغييرات غير متوقعة تحدث.
- 7.في حالة وجود أي دالة أو طريقة غير متوقعة يتم استدعائها أثناء التنفيذ، قد يكون هذا هو السبب وراء تصرف النافذة بشكل مختلف عند تنفيذ الكود الثاني.8.إذا لم تتمكن من تحديد المشكلة من خلال تتبع تنفيذ الكود، فقد يكون من المفيد التحقق من أي أحداث أو كود إضافي مرتبط بزر Btn_Banned.Click قد يتم تنفيذه بعد الاختبار المذكور في الكود المعطى. من خلال التأكد من هذه الأمور، يمكنك تحديد سبب الاختلاف في تصرف النافذة عند تنفيذ الكود الثاني.9.بعد تحديد المشكلة وإصلاحها، لا تنس إزالة نقطة التوقف (breakpoint) وتشغيل التطبيق بشكل عادي للتأكد من أن كل شيء يعمل بشكل صحيح.
من خلال استخدام أداة التتبع (Debugger) ومتابعة هذه الخطوات، يمكنك تحديد المشكلة التي تسبب الاختلاف في تصرف النافذة عند تنفيذ الكود الثاني وإصلاحها بشكل مناسب.
شكراً جزيلاً..
فعلاً هذا ما قصدته..
أنا حالياً بالعمل ولا استطيع ارسال الكود.. ولكن عند عودتي للمنزل، سوف أقوم باستخدام اداة التتبع..
المشكلة ليست بذلك السوء.. فأنا استخدم المشروع في العمل بشكل طبيعي، ولكن أريد معرفة كل صغيرة وكبيرة في المشروع وما سبب المشكلة حتى لو كانت لا تؤثر على المشروع..
جزاك الله خيراً.. وجعل ما قمت به في موازين حسناتك.
أخي، للتأكد، هل كان ذلك الكود بلغة PHP أم لا؟ إذا كان بلغة أخرى مثل C#، يرجى توضيح ذلك حتى أتمكن من توفير الإرشادات الصحيحة.
شكرا لحسن تفهمك. يعطيك الف عافية في العمل وأتمنى لك التوفيق في البحث عن الحل للمشكلة. إذا كان لديك أي أسئلة أخرى، لا تتردد في طرحها. سأحاول مساعدتك على أفضل وجه.
لقد استخدمت أداة التتبع كما في الصورة التالية:
5255.jpg - MediaFire
وعند تنفيذ الكود أرسلني إلى كود الشاشة الرئيسية والتي أقوم فيها بفتح نافذة (Form) تعديل بيانات زائر كما في الصورة التالية:
52555.jpg - MediaFire
وأعتقد أن المشكلة حينما فتحت النافذة بالكود:
كود :
V_Edit.ShowDialog()
وعندما غيرت الكود إلى:
انحلت المشكلة..!!
فهل فعلاً المشكلة أنني جعلت النافذة تفتح على أنها مثبته واجبارية
Dialog..؟
(30-03-23, 10:30 AM)sanyor77 كتب : [ -> ]أخي، للتأكد، هل كان ذلك الكود بلغة PHP أم لا؟ إذا كان بلغة أخرى مثل C#، يرجى توضيح ذلك حتى أتمكن من توفير الإرشادات الصحيحة.
شكرا لحسن تفهمك. يعطيك الف عافية في العمل وأتمنى لك التوفيق في البحث عن الحل للمشكلة. إذا كان لديك أي أسئلة أخرى، لا تتردد في طرحها. سأحاول مساعدتك على أفضل وجه.
انا استخدم لغة فيجوال بيسك
شكراً لك أيضاً على اسلوبك الراقي ورحابة صدرك.. ولا نستغني عن نصائحك وارشاداتك، بارك الله فيك.
هذا هو الكود كاملاً كما طلبت:
كود :
Private Sub Btn_Banned_Click(sender As Object, e As EventArgs) Handles Btn_Banned.Click
If Txt_File_Num.Text = "" Then
MsgBox("لا بد من وجود رقم ملف المريض لفتح قائمة المنع والسماح")
Txt_File_Num.Focus()
Exit Sub
End If
Tim_Banned.Stop()
Btn_Banned.BackColor = Color.Transparent
Dim FBAA As New Frm_BanAndAllow
FBAA.Txt_File_Num.Text = Txt_File_Num.Text
FBAA.ShowDialog()
End Sub
طبعاً
Frm_BanAndAllow هي نافذة (المنع والسماح).
وعليكم السلام ورحمة الله وبركاته، وكل عام وأنتم بخير أيضا.
أظن أنني عرفت المشكلة التي تواجهها. كما ذكرت في سؤالك، فإن استخدام ShowDialog يفتح النافذة بشكل مثبت وإجباري (modal). وهذا يعني أن النافذة الحالية لن تتمكن من استلام أي إجراءات حتى يتم إغلاق النافذة المفتوحة عن طريق ShowDialog.
في حالة الكود الأول، يتم استخدام Exit Sub فقط للخروج من الدالة الحالية والعودة إلى الكود الذي كان يتم تنفيذه قبل الدالة. لذلك، لن يتم إغلاق النافذة.
أما في الكود الثاني، عأما في الكود الثاني، عند استخدام ShowDialog، يتم فتح النافذة Frm_BanAndAllow بشكل مثبت وإجباري، وعند الضغط على موافق في الرسالة، يتم إغلاق النافذة المفتوحة عن طريق ShowDialog والعودة إلى النافذة الأصلية. ومن ثم، يتم استكمال تنفيذ الكود الذي يأتي بعد الكود الذي تم إيقافه بسبب فتح النافذة المثبتة.
في حالة الكود الثاني، لا يوجد أي أوامر تلقائية لإغلاق النافذة بعد إغلاق النافذة المثبتة، لكن من الممكن أن يكون هناك كود آخر خارج هذا الكود الذي يؤدي إلى إغلاق النافذة.
عند تغيير الكود من ShowDialog إلى Show، لا تعمل النافذة على أنها مثبتة وإجبارية، وبالتالي يمكن للنوافذة الأصلية استلام الإجراءات حتى وإن كانت النافذة الجديدة مفتوحة. وهذا يسمح للنافذة الأصلية بالاستمرار في العمل بشكل طبيعي ولن تغلق تلقائيًا عند الضغط على موافق في الرسالة.
بما أنك غيرت الكود إلى Show وقلت أن المشكلة انحلت، فعلى الأرجح فإن استخدام Show بدلاً من ShowDialog كان هو الحل المناسب لمشكلتك. وفي بعض الحالات، قد تكون هذه النوعية من النوافذ المستقلة (non-modal) المفتوحة عبر Show أكثر مناسبة لتطبيقك وتجربة المستخدم.
وبشكل عام، استخدم ShowDialog عندما ترغب في منع المستخدم من التفاعل مع النوافذ الأخرى حتى يتم إغلاق النافذة المفتوحة.
أما إذا كنت ترغب في السماح للمستخدمين بالتفاعل مع النوافذ الأخرى حتى وإن كانت النافذة الجديدة مفتوحة، فاستخدم Show.
أرجو أن يكون هذا الشرح قد ساعدك في فهم الفرق بين استخدام Show وShowDialog وكيف يمكن أن يؤثر ذلك على سلوك النوافذ في تطبيقك. إذا كنت لا تزال تواجه مشكلات أو لديك المزيد من الأسئلة، فلا تتردد في طرحها وسأكون سعيداً لمساعدتك.
وفقك الله وجعل ما تعلمته وتعلمه في ميزان حسناتك وأعانك على استخدام معرفتك في مشاريع تفيدك وتفيد المجتمع.
إذا كنت بحاجة إلى مزيد من المعلومات حول Visual Basic أو أي موضوع آخر متعلق بالبرمجة وتطوير البرمجيات، يمكنك دائمًا العودة هنا وطرح المزيد من الأسئلة والاستفسارات. نحن هنا لمساعدتك وتوجيهك في تعلم المهارات الجديدة وتطوير معرفتك.
أتمنى لك التوفيق في مشاريعك وتطبيقاتك القادمة. إذا كنت بحاجة إلى أي مساعدة إضافية أو إرشادات، فلا تتردد في الاتصال بنا.
(30-03-23, 03:44 PM)sanyor77 كتب : [ -> ]وعليكم السلام ورحمة الله وبركاته، وكل عام وأنتم بخير أيضا.
أظن أنني عرفت المشكلة التي تواجهها. كما ذكرت في سؤالك، فإن استخدام ShowDialog يفتح النافذة بشكل مثبت وإجباري (modal). وهذا يعني أن النافذة الحالية لن تتمكن من استلام أي إجراءات حتى يتم إغلاق النافذة المفتوحة عن طريق ShowDialog.
في حالة الكود الأول، يتم استخدام Exit Sub فقط للخروج من الدالة الحالية والعودة إلى الكود الذي كان يتم تنفيذه قبل الدالة. لذلك، لن يتم إغلاق النافذة.
أما في الكود الثاني، عأما في الكود الثاني، عند استخدام ShowDialog، يتم فتح النافذة Frm_BanAndAllow بشكل مثبت وإجباري، وعند الضغط على موافق في الرسالة، يتم إغلاق النافذة المفتوحة عن طريق ShowDialog والعودة إلى النافذة الأصلية. ومن ثم، يتم استكمال تنفيذ الكود الذي يأتي بعد الكود الذي تم إيقافه بسبب فتح النافذة المثبتة.
في حالة الكود الثاني، لا يوجد أي أوامر تلقائية لإغلاق النافذة بعد إغلاق النافذة المثبتة، لكن من الممكن أن يكون هناك كود آخر خارج هذا الكود الذي يؤدي إلى إغلاق النافذة.
عند تغيير الكود من ShowDialog إلى Show، لا تعمل النافذة على أنها مثبتة وإجبارية، وبالتالي يمكن للنوافذة الأصلية استلام الإجراءات حتى وإن كانت النافذة الجديدة مفتوحة. وهذا يسمح للنافذة الأصلية بالاستمرار في العمل بشكل طبيعي ولن تغلق تلقائيًا عند الضغط على موافق في الرسالة.
بما أنك غيرت الكود إلى Show وقلت أن المشكلة انحلت، فعلى الأرجح فإن استخدام Show بدلاً من ShowDialog كان هو الحل المناسب لمشكلتك. وفي بعض الحالات، قد تكون هذه النوعية من النوافذ المستقلة (non-modal) المفتوحة عبر Show أكثر مناسبة لتطبيقك وتجربة المستخدم.
وبشكل عام، استخدم ShowDialog عندما ترغب في منع المستخدم من التفاعل مع النوافذ الأخرى حتى يتم إغلاق النافذة المفتوحة.
أما إذا كنت ترغب في السماح للمستخدمين بالتفاعل مع النوافذ الأخرى حتى وإن كانت النافذة الجديدة مفتوحة، فاستخدم Show.
أرجو أن يكون هذا الشرح قد ساعدك في فهم الفرق بين استخدام Show وShowDialog وكيف يمكن أن يؤثر ذلك على سلوك النوافذ في تطبيقك. إذا كنت لا تزال تواجه مشكلات أو لديك المزيد من الأسئلة، فلا تتردد في طرحها وسأكون سعيداً لمساعدتك.
وفقك الله وجعل ما تعلمته وتعلمه في ميزان حسناتك وأعانك على استخدام معرفتك في مشاريع تفيدك وتفيد المجتمع.
إذا كنت بحاجة إلى مزيد من المعلومات حول Visual Basic أو أي موضوع آخر متعلق بالبرمجة وتطوير البرمجيات، يمكنك دائمًا العودة هنا وطرح المزيد من الأسئلة والاستفسارات. نحن هنا لمساعدتك وتوجيهك في تعلم المهارات الجديدة وتطوير معرفتك.
أتمنى لك التوفيق في مشاريعك وتطبيقاتك القادمة. إذا كنت بحاجة إلى أي مساعدة إضافية أو إرشادات، فلا تتردد في الاتصال بنا.
وعليكم السلام ورحمة الله وبركاته
كل عام وانت في صحة وسلامة
أخي العزيز
sanyor77 كلامك صحيح وتفسيرك منطقي.. فعلاً أنا استخدم
ShowDialog إذا أردت اجبار المستخدم على الانتهاء من النافذة المفتوحة أولاً..
شكراً لك على متابعة موضوعي لحل المشكلة..
الآن عرفت الفكرة بشكل عام كما عرفت أداة التتبع.. لم أكن أعرفها ن قبل..
شكراً لك على الدعاء.. اللهم آمين ووفقك الله وأثابك على ما تقوم به من مساعدة الآخرين..
شكراً جزيلاً لك وجزاك الله خير الجزاء..
وبما أنك تطرقت إلى المساعدة.. فلدي استفسار بخصوص تصدير البيانات للوورد وظهور تلك الرسالة المزعجة..
هل تريد أن أطرح الاستفسار هنا.. أم أنشيء موضوعاً جديداً وارفق به مشروع الطباعة؟
لمساعدتك في حل المشكلة المتعلقة بتصدير البيانات إلى Microsoft Word وظهور رسالة مزعجة، يرجى توفير المزيد من المعلومات حول الرسالة المزعجة التي تظهر والخطوات التي تتبعها عند محاولة تصدير البيانات. هذا سيساعدني على فهم المشكلة بشكل أفضل وتوفير إرشادات أو حلول ممكنة.
إذا كان بإمكانك إرفاق جزء من الكود الذي تستخدمه لتصدير البيانات إلى Word وأي رسائل خطأ أو استثناء تظهر، فذلك سيكون مفيدًا لتشخيص المشكلة وإيجاد حل مناسب.
اقترح نتكلم هنا افضل بنفس الموضوع وشكرا لك