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

كيف أجعل زر الأمر يقوم بعمل زر Enter ?

بدأه Visual Studio في 19 نوفمبر 2005 · 10 رد · 5,707 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندي textbox وزر أمر وأريد من زر الأمر أن يقوم بعمل enter داخل التكست (أي الانتقال إلى سطر جديد) لكن يتم هذا بواسطة الزر وليس بواسطة لوحة المفاتيح

وكذلك أريد زرلعمل backspace , end , Home وغيرهم

فما هي الأكواد التي تستخدم لذلك ؟

رجاء المساعدة في أسرع وقت

وجزاكم الله خيرا

#2

اخي الكريم جرب التالي وتحقق من الأخطاء بنفسك لآني أكتبه مباشرة :

زر الأمر :

Text1.Text = Text1 & VbNewLine

زر Hom

الفكرة تتمثل في البحث من الموقع الحالي للعلامة إلى الخلف حتى وجود السطر السابق المتمثلة بالـ Enter

  Dim OffSet as Integer,BeginLine  As Boolean
  OffSet = text1.SelStar
  Do While OffSet > -1 And BeginLine = True  
    If Asc(Mid(Text1.Text,Offset,1)) = 13 Then
       Text1.SelStar = OffSet
        Exit Do 
    End If
    OffSet = OffSet -1
 Loop

فكرة backspace :

If Len(Text1.Text) > 0 Then
   Text1.Text = Mid(text1.Text,1,Len(Text1.Text)-1)
End If

أعد التركيز للـ Text1 في حال فقدته

أعتقد انه

Text1.SetFoucs

قد تكون هناك أخطاء حاول العمل على ضوء الفكرة B)

تم تعديل هذه المشاركة بواسطة فواز الشمري في 19 نوفمبر 2005 في 21:15

#3

جزاك الله خيرا أخي الكريم

الكود نجح والحمد لله

لو سمحت سؤال إضافي :

عندي Richbox أقوم بكتابة أحاديث فيه , وقد قمت بعمل اختصارات حيث عندما أضغط مثلا على F1 يكتب مباشرة عبارة "صلى الله عليه وسلم"

حيث استخدمت هذا الكود في حدث keydown لـ richbox :

RichTextBox1.text=RichTextBox1.text + "صلى الله عليه وسلم"

فألاحظ أن مؤشر الماوس بعد الضغط على F1 ينتقل إلى أول السطر وبالتالي عندما أكمل كتابة فإنه يبدأ من أول النص , وأنا أريد بمجرد الضغط على F1 وكتابة "صلى الله عليه وسلم" أن ينتقل المؤشر فورا إلى نهاية السطر لكي أستطيع إكمال النص بدون الحاجة إلى إرجاعه يدويا أو الضغط على زر end في لوحة المفاتيح

أرجو أن يكون اتضح الأمر

وجزاك الله خيرا

1.rar

#4

اخي الكريم لم افهم لاضبط ماذا تقصد لكن لو كنت تريد ان تطبع كلمة "صلى الله عليه وسلم" ويكون الموشر او العلامة بعد كلمة "صلى الله عليه وسلم" لتواصل الكتابة قم بتحريب التالي وأخبرني :

في الحدث keydown قم بحفض موقع العلامة في متغير ثم قم بعمل كود وضع الكلمة وبعد ذلك اعد توجيه موقع المؤشر بعد الكلمة لكن الفرق انه يجب عليك زيادة الموقع في المتغير بمقدار طول الكلمة المضافة

Dim OffSet  As Integer,KeyWord as String
OffSet = richbox.SelStar
KeyWord =  "صلى الله عليه وسلم"
RichTextBox1.text=RichTextBox1.text  & KeyWord 
 richbox.SelStar = OffSet + Len(KeyWord )

في حال حدوث خطأ في السطر الأخير أضف مسافة بعد الكمة كما يلي

RichTextBox1.text=RichTextBox1.text  & KeyWord & " "

لاتستخدم علامة + في النصوص يفضل دائما استخدام العلامة & فهي متخصصة للنصوص . (يجب إعطاء كل ذي حق حقة :D ) فالعمليات الرياضية استخدم فيها + لاأنه أحيانا تعمل مشاكل في النصوص إذا احتوت ارقام .

#5

أخي الكريم

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

هناك نقطة أخرى وهي أني أريد المؤشر بعد نهاية الكلام بمسافة زائدة لكي يكون مجهز للتكملة مباشرة بدون أن أضغط على زر مسافة

وجزاك الله خيرا , وقد جربت ووضعت مسافة في الأكواد ولم تنجح

#6

اخي الكريم حاليا انا مرهق تماما لكن حاول :

زيادة المتغير

OffSet + Len(KeyWord ) + 3

غير في الرقم 3 حتى تلاحض ان موقع العلامة طلع معاك مضبوط يعني عد من بداية السطر حتى الكلمة قبل التي تريد طباعتها مثلا لو كان عدد الحروف إلى الأن 5 وضغطتF1 قم بحساب طول الكلمة المرد إضافتها ولتكن مثلا 8 زيد الرقم هذا على عدد الحروف السابقة لتكون 13 ثم ضع مسافتين بعد الكلمة ليكون العد لدي 15 اي إجمالي الحروف هوا 15 حرف لذلك سوف أنقل المؤشر إلى الموقع رقم 15 SelStar

أخبرني إذا مشت معاك .

#7

أخي الكريم فواز

أعلم اني أتعبتك معي لكن أسأل الله أن يجزيك خيرا

هناك شيئين أرجو منك النظر فيهما

(أولا) عندما أضغط على الزر F1 ويكتب العبارة فإن المؤشر طبعا ينتقل لآخر السطر , ويكون جاهزا للكتابة لكن لا بد من عمل مسافة (space) بعد الضغط على F1 لكي لا يكون باقي الكلام متشابكا مع العبارة , وأنا أريد كود يأخذ لي المسافة جاهزة عندما أضغط على F1 بحيث يكون عمل الزر F1 هو كتابة "صلى الله عليه وسلم" + أخذ مسافة بعدها

(ثانيا) لاحظت عندما أكتب مثلا ثلاثة سطور أو خمسة مثلا , وأردت أن أنتقل بالمؤشر بين كلمتين في السطر الأول وأكتب عبارة "صلى الله عليه وسلم" (لأني قد اكون نسيتها مثلا) فطبعا سأضغط على F1 لكني أفاجأ بأنه يكتب العبارة في آخر سطر في richbox أي في نهاية النص تماما وسبب ذلك طبعا هذا الكود

richbox.SelStar = OffSet + Len(KeyWord ) +3

بالرغم من أني أقوم بالضغط بالماوس بين الكلمتين ليظهر المؤشر بينهما

فما الحل لهذا الأمر ؟

وجزاك الله خيرا

المثال مرفق

1.rar

تم تعديل هذه المشاركة بواسطة محمد زغلول في 20 نوفمبر 2005 في 10:08

#8

أخي محمد على الرحب دائما وأسال الله ان يجعل جميع اعمالنا لخدمة بعضنا البعض لننال عليها الأجر والثواب

الفكرة في سؤالك هوا ان قبل طباعه الكلمة F1 يجب ان تأخذ موقع العلامة باستخدام الخاصية SelStart وهي تعيد مكان العلامة لذلك يجب ان تخزن في المتغير OffSet قبل ان تضيف الكلمة بعد ذلك قم بحساب طول الكلمة مع إضافة مسافة واحدة بعدها يعني لو كان قيمة المتغير OffSer = 5 وكانت الكلمة طولها 2 والمسافة طولها 1 لذلك سنزيد الواحد على الخمسة ونزير تيضا إثنان طول الكلمة على . على العموم اخي الكريم ان مانع سوف اعدل لك على المثال .

#9

كيف أجعل زر button يقوم بعمل دور Enter يعني عندما أضغط على الزر يكتب أي حاجة في textbox ثم ينتقل إلى السطر التالي ويكتب فيه عند الضغط علية مرة ثانية أرجو الرد بسرعة لو سمحتم وجزاكم الله خيراً

#10

سلام علكيوا افكار .............. ماشي حالها أنا اعتقد أنه انت تراقب إذا زر إنتر إنضغط أو لا عن طريق حدث key down طبعا رقم زر إنتر بال أسكي .... هاي اكي راح تزبط وتضع داخل الحدث vbnewline & text1.text

جزاكم الله كل خير و السلام عليكم

شكوت الى وكيع سوء حفظي فأشار على بترك المعاصي واخبرني ان علم الله نور و نور الله لا يأتي لعاصي

#11

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

لمحاكاة ضغطات المفاتيح يكون من الأسهل استعمال جملة SendKeys مع التأكد أولاً أن المؤشر موجود داخل الـ TextBox (أو أي مكون نعمل عليه):

  1. Private Sub Command1_Click()
  2. Text1.SetFocus
  3. SendKeys "{ENTER}" ' Enter
  4. 'SendKeys "{BACKSPACE}" ' BackSpace
  5. 'SendKeys "{HOME}" ' Home (بداية السطر)
  6. 'SendKeys "^{HOME}" ' Ctrl+Home (بداية كامل النص)
  7. 'SendKeys "+{HOME}" ' Shift+Home (تحديد - تظليل - النص من موقع المؤشر إلى بداية السطر)
  8. End Sub
  9.  

و إذا كنا نريد إعادة المؤشر إلى الـ Command1 نضيف: Command1.SetFocus.

و لمعرفة كافة الرموز التي يمكن استعمالها مع SendKeys يمكن مراجعة الموضوع في مكتبة تعليمات MSDN.

أما الكود التالي فيقوم بإدراج النص المحدد لكل اختصار (مثلاً عند ضغط F1 يدرج عبارة "صلى الله عليه و سلم") مع فراغ بعدها و انتقال المؤشر تلقائياً بعد العبارة و الفراغ.

مهم: إذا كان هناك نص محدد (مظلل) فإن العبارة المدرجة تحل محل النص المحدد.

  1. Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
  2. Dim MyStatement As String
  3.  
  4. Select Case KeyCode
  5. Case vbKeyF1 ' F1
  6. MyStatement = "صلى الله عليه و سلم"
  7. Case vbKeyF2 ' F2
  8. MyStatement = "بسم الله الرحمن الرحيم"
  9. Case Else
  10. Exit Sub
  11. End Select
  12. Text1.SelText = MyStatement & " "
  13. End Sub
  14.  

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

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