الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال وجواب

مغلق
بدأه Abdulraheem في 27 نوفمبر 2004 · 28 رد · 2,700 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

أخواني الاعزاء ، أريد أن أطرح عليكم بعض الاسئلة ، بمعدل كل مشاركة بسؤال، ومن خلال هذه الاسئلة وبعد حصولنا على الجواب نحقق بإذن الله الفائدة ، ولك مشارك الحق في طرح سؤال وذلك بعد الاجابة على السؤال المطروح ، بمعنى

أنا سألت سؤالا اليوم ، يفضل أن لا يأتي ردا على السؤال بسؤال حتى تتم الاجابة عن السؤال السابق ويفضل أن يكون لك شخص إجابة خاصة به على السؤال المطروح ، أي لا يكتفي بإجابة الاخوان فإذا كان بحوزته إجابة مختلفة فليسعفنا بها ونحن له شاكرين وكل هذا بإذن الله لتحقيق المصلحة العامة. وسأطرح سؤال الأن فأرجو الاجابة من الاخوان

ما الفرق بين كودي فيجوال بيسك التالية:

Private Function MySquareLoop()
For x = 1 To 10000
TheValue = TheValue + (x ^ 2)
Next x
MySquareLoop = TheValue
End Function

Option Explicit
Private Function NewSquareLoop() As Single
Dim x As Integer
TheValue As Single
For x = 1 To 10000
TheValue = TheValue + (x ^ 2)
Next x
NewSquareLoop = TheValue
End Function

New Last Chance

abdshnnar@hotmail.com

#2

السلام عليكم ..

((إجــابة السؤال الاول))

الفرق اخي الكريم في الجملة Option Explicit .. و يتم وضعها من اجل اجبار المبرمج على تعريف جميع المتغيرات التي يستخدمها ..

بمعنى انك حين تستخدمها لابد ان تعرف نوع كل متغير سوف تستخدمه .. و ان لم تضعها فليس من الضروري ان تعلن اي متغيرتستخدمه ..

بنت اليمن ،،

تم تعديل هذه المشاركة بواسطة بنت اليمن في 29 نوفمبر 2004 في 14:41

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#3

((إجابة السؤال الأول))

نعم صحيح أختي المشاركة ، فأن الفرق يكمن في تعريف المتغيرات ، واستخدام Option Explicit في الشيفرة الثانية حيث تنفذ بسرعة تفوق سرعة الجمل الأولى بخمسين مرة تقريبا والسبب هو تعريف المتغيرات، كذلك استخدام المساحة الأقل من حجم الذاكرة ، حيث إذا تركنا المتغير دون تعريف فإن هذا المتغير يأخذ النوع Variant.

شكرا لك مرة ثانية ،

ملاحظة:

وعندما تكون الأجابة كما سبق في إجابة بنت اليمن وهذه الإجابة فإن القارئ بإذن الله سيحصل على الفائدة الكاملة بإذن الله ، ولنبدأ بترقيم الأسئلة لو طرحناها وتكون الأجابة مسبوقة برقم السؤال ، كما يلي ((إجابة السؤال الأول)).

New Last Chance

abdshnnar@hotmail.com

#4

((السؤال الثاني))

كيف يمكنني تقييد المستخدم بعدم الخروج من مربع النص Text Box ، فكلما تضغط على مكان آخر من النموذج تظهر رسالة تخبرني بوجوب الكتابة أولا في مربع النص ، وبعد ذلك يسمح لي بالتنقل إلى أي عنصر آخر.؟

ملاحظة: يجب أن تحتوي الرسالة على اسم العنصر الذي تم النقر عليه، على سبيل المثال:

لدي في المشروع الذي قمت بإنشائه ما يلي:

نموذج Form و مربع نص Text box و زر أمر Command button ، ومؤشر الكتابة موجود في Text box عند تنفيذ المشروع ، بمعنى الـ Focus لمربع النص، ولا أستطيع النقر على أي مكان أخر قبل الكتابة في مربع النص، وإذا نقرت مثلا على النموذج دون الكتابة في مربع النص أولا تظهر رسالة كما يلي:( "تحذير" لقد قمت بالنقر على النموذج ، قم بالكتابة في مربع النص ثم أنقر أينما تريد) وبنفس الطريقة إذا نقرت على زر الأمر ، حيث يظهر زر الامر بالرسالة أيضا.

شكرا لكم إخواني ، أرجو مشاركاتكم في الإجابة على هذا السؤال ، إنه ليس ببسيط وقد تستفيدون أثناء محاولتكم الإجابة ،

أتمنى لكم التوفيق

أخوكم عبد الرحيم أحمد

New Last Chance

abdshnnar@hotmail.com

#5

للرفع................................

يبدو أن السؤال الثاني صعب، أمزح فليس هناك ما هو صعب

New Last Chance

abdshnnar@hotmail.com

#6

((إجابة السؤال الثاني))

لا أدري ربما تكون غير صحيحة!!

على افتراض أن لدينا نموذج Form1 ومربع نص Textbox وزر أمر Command button، فإننا نقوم كتابة الكود التالي كما هو مبين:

Private Sub Form_Load()
If Text1.Text = "" Then
MsgBox "the Text box empty write somthing", vbOKOnly + vbSystemModal, "Hi"
End If
End Sub

Private Sub Text1_LostFocus()
If Text1.Text = "" Then
MsgBox "the Text box empty write somthing", vbOKOnly + vbSystemModal, "Hi"
End If
End Sub

ربما الإجابة خاطئة ، فهل هناك حل آخر؟

تم تعديل هذه المشاركة بواسطة Abdulraheem في 29 نوفمبر 2004 في 11:11

New Last Chance

abdshnnar@hotmail.com

#7

لا يوجد ما هو صعب .

Function CHECKTEXT(SWTEXTOBJ As TextBox, RET_TO_TEXT As Boolean) As Boolean

    
    If Trim(SWTEXTOBJ.Text) = "" Then
        MsgBox "ERROR WRITING DATA !"
            If RET_TO_TEXT = True Then CHECKTEXT = True Else CHECKTEXT = False
        End If


End Function

Private Sub Text1_Validate(Cancel As Boolean)
   
If CHECKTEXT(Text1, False) = True Then Cancel = True
    
End Sub

فقط تستخدم الدالة

If CHECKTEXT(Text1, False) = True Then Cancel = True

في الاجرا ء Text1_Validate مع تغيير اسم النص

حيث يمكن للدالة ايضا الرجوع للنص الموجود به الخطأ ،، طبعا بعد عمل الخاصية RET_TO_TEXT = TRUE

تحياتي

تم تعديل هذه المشاركة بواسطة prof_1982 في 29 نوفمبر 2004 في 11:47

الإنسان الذي يقول بأنه لا يمكن عمل شيء يجب ألا يعيق مطلقاً الإنسان الذي يقوم بعمل ذلك الشيء.

إن تخطئ فأنت إنسان ... أما أن تلوم جهازك الكمبيوتر على خطأك فهذا أكثر إنسانية.

#8

شكرا لك عزيزي prof -1982 للإجابة وكذلك التوضيح

((تعليق السؤال الثاني))

1.لا حظ أن زر الأمر يأخذ التركيز Focus بعد ظهور الرسالة ، والمطلوب هو أن يكون التركيز للمربع النص حتى تتم الكتابة فيه.

2. كذلك أخي العزيز عندما تقوم بالنقر على النموذج فإن Validate Event لا ينطلق ولا تظهر الرسالة، التي تلزمك بالكتابة.

تحياتي

New Last Chance

abdshnnar@hotmail.com

#9

للرفع

New Last Chance

abdshnnar@hotmail.com

#10

للرفع ....................................

عزيزي prof_1982 لم تكن إجابتك كافية ، راجع ((تعليق السؤال الثاني)) ، كما أن الرسالة لا تظهر اسم الكائن الذي قمت بالنقر عليه.

ليس صعبا ، لكن بحاجة لتركيز :P

حاول مرة أخرى ، وأرجو أن تكتب في الاعلى ((إجابة السؤال الثاني)) وذلك للتوضيح. :lol:

شكرا لإهتمامك

New Last Chance

abdshnnar@hotmail.com

#11

للرفع........................................

أين هم خبراء Visual Basic ، بدنا حل السؤال الثاني،

New Last Chance

abdshnnar@hotmail.com

#12

حسب علمي

Private Sub Text1_LostFocus()
If Text1.Text = "" Then
MsgBox ("Go back and Type Something")
Text1.SetFocus
Else
Text2.SetFocus
End If
End Sub

Private Sub Text2_LostFocus()
If Text2.Text = "" Then
MsgBox ("Go back and Type Something")
Text2.SetFocus
Else
Text1.SetFocus
End If
End Sub

لقد ارفقت الحل

TextChecker.zip

تم تعديل هذه المشاركة بواسطة Ahmed2004 في 30 نوفمبر 2004 في 13:43

#13

يا إخوان بالنسبة للحل الثاني فحل اسهلل مما تتصورو وهذا حلو

Private Sub Text1_LostFocus()
If Text1 = Empty Then
MsgBox "You should fill the Text!"
Text1.SetFocus
End If
End Sub

احكو freepreasone عاطل!!!

امرونا بس

شكرا

#14

اعذروني لم اوضح الحل

يكمن حل السؤال بالاعتماد على الحدث LostFocus والذي يعني عندما ينقل التركيز عن

هذه الاداة يقوم البرنامج بتنفيذ مابين ال Scop اي اخراج مسج بوكس و من اعادة التركيز بالخاصية SetFocus.

شكرا

#15

................................للرفع

أخواني الأعزاء أرجو ممن يقوم بوضع إجابة أن يكتب رقم السؤال، على سبيل المثال:

((إجابة السؤال الثاني))

كما أريد أن أشكر الاخ Freepreasone والأخ Ahmed2004 على المحاولة الطيبة والشرح كذلك.

لكن أخواني بالنسبة ((للسؤال الثاني)) ، فإنه يبدو غير واضح ،

1. المطلوب عدم السماح للمستخدم ترك Text1 فارغا،

2. إذا حاول المستخدم النقر على أي عنصر أخر داخل النموذج Form1 ، فإن الرسالة تظهر وتحتوي على السم العنصر الذي تم النقر عليه، يعود التركيز إلى text1.

على سبيل المثال: تركت مربع النص فارغا ونقرت على Command1 فتظهر رسالة كما يلي:

MsgBox "لقد قمت بالنقر على: زر أمر ، أرجو عدم ترك حقل النص فارغا، حاول مرة أخرى"

3. إذا قمت بتعبئة نص في مربع النص ، لا تظهر الرسالة السابقة، ويأخذ العنصر الذي نقرت عليه التركيز.

أرجو أن يكون السؤال واضحا، وإن شاء الله سأضع الحل عندما يسمح لي الوقت ، شكرا لكم

New Last Chance

abdshnnar@hotmail.com

#16

رد للسؤال الثاني :

إن الحل الأمثل لمشاكل من هذا النوع هو التالي ( مع الخاصية CausesValidation=True للتيكست بوكس)

Private Sub Text1_Validate(Cancel As Boolean)
If Trim(Text1.Text) = "" Then
   MsgBox "invalid data", vbExclamation
   Cancel = True
End If
End Sub

لكنك مصر على معرفة الأداة التي كانت ستأخذ التركيز , لذلك هذا حل آخر :

Private Sub Text1_LostFocus()
Dim Crl As Control
If Trim(Text1) = "" Then
   Set Crl = Me.ActiveControl
   MsgBox "Invalid data!" & vbNewLine & "You Pressed : " & Crl.Name
   Text1.SetFocus
End If
End Sub
#17

جواب السؤال الثاني:

السلام عليكم

في كذا طريقة ممكن عملها...

وهذه وحده منهم...

أول شيء للتركيز على الحقل المطلوب هو أن يتم إعطاءه TabIndex = 0. علشان عندما يتم تحميل الفورم يركز على هذا الحقل.

بعد كذا نضيف LostFocus Event للحقل الذي نحدده.

ومن ثم نستخدم الكود التالي:

Private Sub txtField_LostFocus()
   If Trim(txtField.Text)="" Then
      MsgBox "Please fill in Field first"
      txtField.SetFocus
   End If
End Sub

والسلام عليكم

تم تعديل هذه المشاركة بواسطة سلطان محمد العتيبي في 1 ديسمبر 2004 في 08:30

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

توقيع: "الفرق بين الفشل والنجاح هو إنجاز الأعمال بشكل صحيح تقريباً وإنجازها بشكل صحيح تماماً"

توقيع: "من قال لك أنه عالم فأعلم أنه ما زال جاهل، ومن قال لك أنك عالم فأعلمه بأنك ما زلت جاهل"

توقيع: "اللهم بارك له في وقته"

#18

((تعليق))

السلام عليكم ورحمة الله وبركاته، وبعد:

أشكر الأخ سلطان العتيبي على إجابته الرائعة والمحاولة الطيبة منه ، كذلك الاخ MoonMan، وكانت الأجابة صحيحة من كلا الأخوة الأعضاء،

أما بالنسبة للإجابة الأوفى وهي التي ذكرها الأخ MoonMan ، حيث ظهر بالرسالة اسم الأداة التي نقرت عليها، وكذلك عاد التركيز لمربع النص.

والله يعطيكم العافية ، ويعود علينا وعليكم وعلى أعضاء المنتدى وعلى الامة العربية الخير.

أنتظروني في السؤال القادم ، أو إذا كان هناك سؤال عند أحدكم ليطرحه برقم السؤال.

أخوكم عبد الرحيم أحمد

New Last Chance

abdshnnar@hotmail.com

#19

((السؤال الثالث))

السؤال هنا عن عملية التفقيط، أي تحويل الأرقام إلى حروف...

لنفترض أن لدينا Form ، وعليه 2 TextBox ، ومربع تحرير وسرد Combo Box أو List Box

بحيث:

TextBox1 نقوم من خلاله بكتابة الرقم.

TextBox2 يقوم بعرض الرقم المدخل على شكل حروف

Combo Box أو ListBox : يقوم بعرض مجموعة من العملات (كالدينار الاردني، الريال السعودي، الليرة السورية ، الدينار الكويتي، الدينار العراقي، الريال العماني ، الجنيه المصري، .. وهكذا)

نقوم بإدخال رقم في مربع النص الأول، ويقوم مربع النص الثاني بعرض هذا الرقم على شكل حروف، مباشرة.

على سبيل المثال:

1= واحد (رمز العملة )

11= إحدى عشر $

1500= ألف وخمسمائة $

وهكذا، بحيث يظهر في نهاية النص رمز عملة وذلك حسب العملة التي تختارها من قائمة العملات.

الأن يا إخواتي الكرام ، السؤال واضح !

كيف يمكننا عمل هذا؟ هذا هو السؤال!!!!!!! :)

New Last Chance

abdshnnar@hotmail.com

#20

للرفع.................................................................

New Last Chance

abdshnnar@hotmail.com

#21

السلام عليكم

غفوا لم انتبه للمشاركه من قبل

((إجابة السؤال الثاني))

اولا سأبدأ بالمراحل البدائية:

1-لن استخدم Property Get

2-لن استخدم control array

بل سأستخدم احداثيات العنصر

Click & GotFocus & LostFocus

الخاصية LostFocus للعنصر Text1 و هو العنصر المراد الكتابة في داخله قبل الانتقال الى عنصر اخر.

الخاصية GotFocus لأي عنصر قد تم الانتقال اليه عن طريق Tab أو الاسهم الموجودة في لوحة المفاتيح.

الخاصيه Click لأي عنصر تم النقر عليه.

Private Sub Form_Click()
If Text1 = "" Then
MsgBox "the Text box empty write somthing" & space(2) & Me.Name
text1.setfocus
End If
End Sub

Private Sub Text1_LostFocus()
If Text1 = "" Then
MsgBox "the Text box empty write somthing" & space(2) & Me.Controls(1).Name
text1.setfocus
End If

End Sub

العباره Me.Controls(1).Name تعني العنصر رقم كذا الموجود على النموذج,ماذا يعني رقم كذا؟

المقصود هو رقم العنصر حين تركيبه على النموذج اثناء تصميم العناصر مثلا:

انا قمت باضافة العنصر Text1 اولا و من ثم قمت باضافة العنصر Command1 ثانيا

فهذا يعني ان العنصر Text1 قد اصبح رقمه (0) و العنصر الذي يليه قد اخذ الرقم التالي فالتالي

و الرقم يعني index و هو فهرسة العناصر على النموذج.

اذا اراد الله بعبد خيراً فقهه في دينه

((إياكم والغلو في الدين فإنما هلك من كان قبلكم بالغلو في الدين )).

( إن هذا الدين يسر ولن يشاد هذا الدين إلا غلبه فأوغلوا فيه برفق )

( هلك المتنطعون ، هلك المتنطعون ، هلك المتنطعون )

<span style='font-size:14pt;line-height:100%'>طريقة سريعة لحفظ كتاب الله العزيز</span>

<span style='font-size:14pt;line-height:100%'>تعرف على عباقرة الكذب</span>

#22

أشكر الاخ عامر خريم على إجابته على السؤال الثاني، كما أشكره على الطريقة الوصفية التي اتبعها في شرح الحل، كما أن حل السؤال الثاني بطريقة الاخ عامر خريم يختلف عن حل نفس السؤال بطريقة ManMoon، حيث أن المستخدم لو قام بالنقر على Form تظهر له رسالة التنبيه أيضا،

شكرا على مشاركتك أخ عامر وبارك لله فيك.

والان نريد إجابة السؤال الثالث ، من أصحاب الخبرة ، ، ، نحن بإنتظار إجاباتكم!!

New Last Chance

abdshnnar@hotmail.com

#23

للرفع................................

أسعفونا بإجابة السؤال الثالث ، ننتظر محاولاتكم

تم تعديل هذه المشاركة بواسطة Abdulraheem في 3 ديسمبر 2004 في 17:47

New Last Chance

abdshnnar@hotmail.com

#24

للرفع ..........................................................

شيفرة التفقيط موجودة أي على النت أو في الموقع، نريد إضافة بسيطة عليها ، وهي كما وضحنا في السؤال الثالث،

وين خبراء الـ VB، وين متمرسي الشيفرة ، نشوف جواب!!!!!!!!!

:mellow: :mellow: :mellow:

New Last Chance

abdshnnar@hotmail.com

#25

السلام عليكم

ارجو ان يكون هذا المطلوب

num2str.zip

اذا اراد الله بعبد خيراً فقهه في دينه

((إياكم والغلو في الدين فإنما هلك من كان قبلكم بالغلو في الدين )).

( إن هذا الدين يسر ولن يشاد هذا الدين إلا غلبه فأوغلوا فيه برفق )

( هلك المتنطعون ، هلك المتنطعون ، هلك المتنطعون )

<span style='font-size:14pt;line-height:100%'>طريقة سريعة لحفظ كتاب الله العزيز</span>

<span style='font-size:14pt;line-height:100%'>تعرف على عباقرة الكذب</span>

هذا الموضوع مغلق.

مواضيع مشابهة