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

هل استطيع الكتابة من اليمين لليسار في التكست - حالة استثنائية

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

السلام عليكم

لدي مربع نص

اريد ادخال ارقام وحروف ورموز

مثل

4/اتاب/654/أ/5

المشكله اني أضطر اكتب من اليسار لليمين

لكي احصل على النسق اعلاه

طبعا المشكله ليس لها علاقه بقلب النص من اليمين لليسار

لاني بختصار اريد مأشر الكتابه يتجه من اليمين لليسار

شكرا لكم سلفا

#2

هناك خاصيتان ، الأولى Alignment يمكنك اختيار 1-Right Justify، والثانية RightToLeft يمكنك جعلها True

اختر ما يناسبك

هذه الجملة خاطئة  :wacko: 


#3
Abboodd كتب:
هناك خاصيتان ، الأولى Alignment يمكنك اختيار 1-Right Justify، والثانية RightToLeft يمكنك جعلها True

اختر ما يناسبك

ماشاء الله عليك

شكرا لك على ردك السريع

ولكن يبدو انني لم اطرح سؤالي بشكل مفهوم

عموما يوجد مثال مرفق

اوضح فيه المطلوب

شكرا لك عزيزي

aa.rar

تم تعديل هذه المشاركة بواسطة azhar3 في 20 يناير 2009 في 09:24

#4

حسناً ، أولاً اضبط خاصية Alignment إلى 1، و RightToLeft إلى True ، و Locked إلى True ، الآن المستخدم لن يستطيع كتابة الحروف بنفسه نحن من سيكتبها بالكود التالي:

  1.  
  2.  
  3. Private Sub Text1_KeyPress(KeyAscii As Integer)
  4. If KeyAscii < 48 Or KeyAscii > 57 Then
  5. If KeyAscii = 8 Then
  6. Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1)
  7. Else
  8. Text1.Text = Text1.Text + Chr(KeyAscii)
  9. End If
  10. Else
  11. Text1.Text = Text1.Text + Str(Chr(KeyAscii))
  12. End If
  13. End Sub
  14.  

فهنا إذا كان الزر المضغوط هو زر الـBackSpace فإننا نمحي الحرف الأخير، وإذا كان حرفاً عادياً نضيفه.

أما إذا كان رقماً فإننا نضيفه على شكل حروف.

أرجو أن يكون هذا ما تريده :)

هذه الجملة خاطئة  :wacko: 


#5

ممتاز احسنت

بس اشوف كأن فيه فراغ يزيد بعد كتابة الارقام

طبعا هذا غير مطلوب

كمل جميلك وساعدني كيف اشيل الفراغ

شكرا لك

على فكرتك الرهيبه

تم تعديل هذه المشاركة بواسطة azhar3 في 20 يناير 2009 في 11:16

#6

يمكنك ملاحظة أن هذه الفراغات تأتي بين الأرقام فقط، لأنك كتبت:

	Text1.Text = Text1.Text + Str(Chr(KeyAscii))

فالسبب هو الدالة Str ، ولكن المشكلة أنه من دون Str لن يحدث ما تريده تماماً، جربت استعمال Trim لإزالة المسافات لكنها لم تعطني ما أريد، لعل أحد الأعضاء يمكن أن يساعدك

هذه الجملة خاطئة  :wacko: 


#7

شكرا لك اخي الكريم

بارك الله لك في علمك امين

مازلت انتظر من يكمل هذا العمل

لان الموضوع بغاية الاهميه

#8
Abboodd كتب:
حسناً ، أولاً اضبط خاصية Alignment إلى 1، و RightToLeft إلى True ، و Locked إلى True ، الآن المستخدم لن يستطيع كتابة الحروف بنفسه نحن من سيكتبها بالكود التالي:

 

[color= #000000; font-weight: bold;]Private Sub Text1_KeyPress[color= #009900;](KeyAscii [color= #b1b100;]As Integer[color= #009900;])

[color= #b1b100;]If KeyAscii [color= #339933;]< [color= #cc66cc;]48 Or KeyAscii [color= #339933;]> [color= #cc66cc;]57 Then

[color= #b1b100;]If KeyAscii [color= #339933;]= [color= #cc66cc;]8 Then

[color= #b1b100;]If Len[color= #009900;]( Text1[color= #339933;].Text [color= #009900;]) [color= #339933;]> [color= #cc66cc;]0 Then 

Text1[color= #339933;].Text [color= #339933;]= Left[color= #009900;](Text1[color= #339933;].Text[color= #339933;], Len[color= #009900;](Text1[color= #339933;].Text[color= #009900;]) [color= #339933;]- [color= #cc66cc;]1[color= #009900;])

[color= #990000;]End [color= #b1b100;]If

[color= #b1b100;]Else

Text1[color= #339933;].Text [color= #339933;]= Text1[color= #339933;].Text [color= #339933;]+ [color= #990000;]Chr[color= #009900;](KeyAscii[color= #009900;])

[color= #990000;]End [color= #b1b100;]If 

[color= #b1b100;]Else

Text1[color= #339933;].Text [color= #339933;]= Text1[color= #339933;].Text [color= #339933;]+ Str[color= #009900;]([color= #990000;]Chr[color= #009900;](KeyAscii[color= #009900;])[color= #009900;])

[color= #990000;]End [color= #b1b100;]If

[color= #990000;]End Sub

لست من مستخدمي الـ VB6 , لكن اعتقد انه يجب عليك استخدام شرط يتأكد إذا كان هنالك مايمكن حذفه ؟, أو ليس ضروري في الـ Vb6 ؟

تم تعديل هذه المشاركة بواسطة Bashar Rabat في 21 يناير 2009 في 04:17

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

#9
اقتباس
لست من مستخدمي الـ VB6 , لكن اعتقد انه يجب عليك استخدام شرط يتأكد إذا كان هنالك مايمكن حذفه ؟, أو ليس ضروري في الـ Vb6 ؟

طبعاً، هذا مجرد كود مبدأي، ويحتاج إلى التعديل ليعمل بشكل جيد. هو فقط لحل المشكلة المبدأية، لكن تبقى مشكلة المسافات، فقد جربت إزالتها بـTrim ولكن عند إزالتها يتعامل معها على أنها أرقام وليست محارف، ويقوم بوضع / على اليمين، وهذا ما لا أريد حدوثه.

شكراً لك على مرورك

هذه الجملة خاطئة  :wacko: 


#10
Abboodd كتب:
طبعاً، هذا مجرد كود مبدأي، ويحتاج إلى التعديل ليعمل بشكل جيد. هو فقط لحل المشكلة المبدأية، لكن تبقى مشكلة المسافات، فقد جربت إزالتها بـTrim ولكن عند إزالتها يتعامل معها على أنها أرقام وليست محارف، ويقوم بوضع / على اليمين، وهذا ما لا أريد حدوثه.

عذراً, هل يمكنك التوضح بشكل أدق اي على سبيل المثال اعطي مثال عن المشكلة وكيف يجب أن يكون شكل النص بعد حل تلك المشلكة .

لم افهم بشكل جيد لكن هل تقصد شيء من هذا القبيل :

1 2 3 4 5 6 7

1234567

?

Abboodd كتب:
شكراً لك على مرورك

لاشكر على واجب :) .

بالتوفيق .

تم تعديل هذه المشاركة بواسطة Bashar Rabat في 21 يناير 2009 في 07:33

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

#11

المشكلة عند الأخ أنه يريد الكتابة من اليمين إلى اليسار حتى في حال وجود أرقام وأشياء كهذه، حمل المرفق في المشاركة الثانية لتعرف تماماً ما يريد، وضعت الكود في المشاركة الثالثة، ولكن المشكلة هي وجود فراغات بين الأرقام، وهذا بسبب استعمال الدالة Str ، بدونها لم يتم معي ما يريد الأخ، ومعها هناك فراغات بين الأرقام، حاولت إضافة Trim لإزالة الفراغات الموجودة، ولكن عند إزالتها تعود المشكلة الأصلي وهي مشكلة الكتابة من اليمين إلى اليسار، تمام؟

إذاً المشكلة الباقية هنا هي إزالة هذه الفراغات الموجودة.

يسش/ 8 / 8 9 6 /يسشي

هكذا سيكون شكل النص بعد كتابته، فكيف ستتم إزالة الفراغات؟

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

هذه الجملة خاطئة  :wacko: 


#12

مرحباً أخي AbbOoOdd :P .

ثبتُ لتوي الـ Vb6 وجربت ماتكلمت عنه ( لكن لم يظهر اي فراغ بين الأرقام أو الرموز بل ظهرت بشكل عكسي وهذه مشكلة لايمكن حلها, لأنها إذا أردنا ذلك سنكتب أو نعطي قيمة عكسية للأرقام ولا أعتقد أن هذا محبذ .

لا أعلم لكن إذا أردت, استخدم العملية Replace مع سطر إدخال الأرقام كـ :

Text1.Text = Text1.Text + Replace(Chr(KeyAscii), " ", "")

لم أواجه مشكلة الفراغات = لذلك لايمكنني أن أجزم بالحلول :( .

بالتوفيق .

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

#13

هههههه

النتيجة ستكون مضحكة.

:S

لا أدري لماذا Replace خصوصاً جربتها بأكثر من طريقة، ولكنها لم تعمل معي.

هذه الجملة خاطئة  :wacko: 


#14
Abboodd كتب:
هههههه

النتيجة ستكون مضحكة.

:S

لا أدري لماذا Replace خصوصاً جربتها بأكثر من طريقة، ولكنها لم تعمل معي.

ممم, على حسب ماأذكر أنك قلت ( عند إدراج رقم ما يتم إضافة فراغ تلقائياً ) لم أواجه ماتكلمت عنه !!, لذلك قلت أن تستخدم العملية Replace أعلم أنك تعرف عملها أي ليس عليّ شرحها .

كما ذكرت سابقأً, لست من محترفيّ أومستخدميّ الـ VB6 لكن يمكنني أن أنصحك بما يتوجب عليّك عمله .

جرب استخدام متغيّر نصي عام لحفظ الرموز المدخلة على الأساس الصحيح, ووزع شروط الكتابة تحت الحدث KeyPress, أعتقد أن هذا سيحل المشكلة .

Private Text1_Text As String

Private Sub Text1_KeyPress( Byval KeyASCII As Integer )
' If SomeCondition Then
' Code for
' End If
' Text1_Text = Text1_Text + Chr( KeyASCII )
End Sub

تحياتي,

بالتوفييق .

تم تعديل هذه المشاركة بواسطة Bashar Rabat في 22 يناير 2009 في 11:40

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

#15

وهذا ما تم عمله

/index.ph...st&p=925491

ولكن المشكلة هي الدالة Str

هذه الجملة خاطئة  :wacko: 


#16
Abboodd كتب:
ولكن المشكلة هي الدالة Str

أخي الكريم .

رجاءً حاول شرح المشكلة بشكل أدق, هل ذلك الفراغ يظهر في أخر مجموعة أرقام مدخلة, ام ان هناك فراغ بعد كل رقم ؟

تم تعديل هذه المشاركة بواسطة Bashar Rabat في 22 يناير 2009 في 16:23

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

#17

هناك فراغ قبل كل رقم، والسبب هو هذا:

Text1.Text = Text1.Text + Str(Chr(KeyAscii))

دالة Str تسبب وضع فراغ قبل الرقم، والمشكلة أنه بدونها لن يتحقق الهدف الأساسي، وهو الكتابة من اليمين إلى اليسار.

حمل المرفق الذي وضعه الأخ، لتعلم ما المشكلة تماماً، ثم جرب الحل الذي وضعتُه، ستجد أن المشكلة قد حلت، ولكن ظهرت مشكلة الفراغات.

تمام؟؟

هذه الجملة خاطئة  :wacko: 


#18

مرحباً أخي عبود .

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

بالتوفيق .

أخوك بشار :)

aa.zip

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

#19

جرب في المثال الذي أرفقتَه كتابة التالي:

123/789/54

لاحظ ما الذي سيحدث

:)

هذه الجملة خاطئة  :wacko: 


#20

وين العباقره

مازال الطلب قائما

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…