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

استفسار عن كود لاستخراج اسماء الازرار داخل النموذج


Ahmed.IQ
إذهب إلى أفضل إجابة Solved by صالح حمادي,

الردود الموصى بها

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

سؤال حول طريقة امكانية استخراج اسماء الازرار داخل النماذج .

الكود التالي عنده ادخاله في الاستعلام يقوم بجلب جميع كائنات قاعدة البيانات MSysObjects لو وضع الشرط -32768 اسفل هذا المصدر في الاستعلام وقمت بختيار النوع type  و name هنا سيتم استخراج النماذج فقط هل هناك طريقة لاستخراج اسماء الازرار داخل النموذج ؟

مع الشكر للجميع

رابط هذا التعليق
شارك

  • أفضل إجابة

السلام عليكم و رحمة الله تعالى و بركاته

استخدم الكود التالي سوف يعطيك أسماء جميع الأزرار

Dim frm As Form
Dim fc As Control
Set frm = Me

For Each fc In frm.Controls
    If fc.ControlType = 104 Then
       MsgBox (fc.Name)
    End If
Next fc
Set frm = Nothing

 

  • Like 3
رابط هذا التعليق
شارك

السلام عليكم 

من رخصة استاذي العزيز صالح حمادي 

تفضل استاذ Ahmed.IQ التعديل 

علما ان التعديل جرى على نفس كود استاذ صالح

Dim frm As Form
Dim fc As Control
Dim RowData As String
Set frm = Me
RowData = ""
For Each fc In frm.Controls
    If fc.ControlType = 104 Then
       RowData = RowData & "," & fc.Name
    End If
Next fc
Me.Comb1.RowSource = Right(RowData, Len(RowData) - 1)
Set frm = Nothing

  ملاحظة : Row Source Type = Value List

تم تعديل بواسطه husamwahab
  • Like 2
رابط هذا التعليق
شارك

15 ساعات مضت, husamwahab said:

والفضل لاستاذ صالح على هذا الكود الجميل

الفضل لله أولا ثم لك أنت أيضا لأنك أتممت الإجابة

و هذه طريقة ثانية لإضافة القيمة لقائمة منسدلة

Dim frm As Form
Dim fc As Control
Set frm = Me

For Each fc In frm.Controls
    If fc.ControlType = 104 Then
     Me.combo1.AddItem (fc.Name)
    End If
Next fc
Set frm = Nothing

 

  • Like 2
رابط هذا التعليق
شارك

السلام عليكم 🙂

 

ولكي يكتمل الدرس ، وبدل ان نحفظ ونستخدم ارقام لا نعرفها ، اليك قائمة اسماء جميع الكائنات (وبالمسميات اللي نعرفها ، مضافا لها حرفي ac)، من مساعد الاكسس :

اقتباس
acAttachment 126 Attachment control.
acBoundObjectFrame 108 Bound Object Frame control.
acCheckBox 106 Check Box control.
acComboBox 111 Combo Box control.
acCommandButton 104 Command Button control.
acCustomControl 119 ActiveX control.
acEmptyCell 127 EmptyCell control.
acImage 103 Image control.
acLabel 100 Label control.
acLine 102 Line control.
acListBox 110 List Box control.
acNavigationButton 130 Navigation Button control.
acNavigationControl 129 Navigation control.
acObjectFrame 114 Unbound Object Frame control.
acOptionButton 105 Option Button control.
acOptionGroup 107 Option Group control.
acPage 124 Page control.
acPageBreak 118 Page Break control.
acRectangle 101 Rectangle control.
acSubform 112 Subform control.
acTabCtl 123 Tab control.
acTextBox 109 Text Box control.
acToggleButton 122 Toggle Button control.
acWebBrowser 128 Web browser control.

.

وعليه يصبح الكود :

Dim frm As Form
Dim fc As Control
Set frm = Me

For Each fc In frm.Controls
    If fc.ControlType = acCommandButton Then
     Me.combo1.AddItem (fc.Name)
    End If
Next fc
Set frm = Nothing

 

جعفر

  • Like 2
رابط هذا التعليق
شارك

16 ساعات مضت, husamwahab said:

RowData = RowData & "," & fc.Name

 

اخي حسام ، 

انا كنت استخدم هذه الطريقة ، الى ان صادفت مشكلة تشغيل البرنامج بين اكسس تنصيب انجليزي ، وآخر تنصيب عربي ، وظهرت القائمة كلها كسطر واحد !!

 

لذلك انصحك ان تستخدم طريقة الاستاذ صالح ، والتي تعمل على جميع الانظمة:

Me.combo1.AddItem (fc.Name)

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

جزاكم الله خيرا اخوانى واساتذتى @صالح حمادي @jjafferr @husamwahab 💐

وشرح وتوضيح اكثر من رائع معلمنا العزيز جعفر بارك الله فيك وبارك لك فى كل ما تحب

بالتوفيق اخوانى

  • Thanks 1
رابط هذا التعليق
شارك

14 hours ago, jjafferr said:

لذلك انصحك ان تستخدم طريقة الاستاذ صالح ، والتي تعمل على جميع الانظمة

كلام سليم جدا استاذ جعفر وشكرا للتوضيح لك ولاستاذنا الجليل استاذ صالح

اساتذتي الاعزاء معلومة ارجو تاكيدها او نفيها 

حسب ما ذكر استاذ جعفر اعلاه وجدت السبب باختيار نوع الفارزة في النظام حيث ان فارزة النظام يجب ان تتطابق مع فارزة الكود سواء كانت منقوطة ام غير منقوطة

لكن وجدت عند تبديل الفارزة في الكود الى فارزة منقوطة فالكود يعمل بصورة سليمة دون مراعاة لفارزة النظام 

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

وعذرا للاطالة  

 

رابط هذا التعليق
شارك

10 ساعات مضت, husamwahab said:

كن وجدت عند تبديل الفارزة في الكود الى فارزة منقوطة فالكود يعمل بصورة سليمة دون مراعاة لفارزة النظام 

فهل هذا الكلام سليم ام لا

 

النظام عندي: الوندوز والاوفيس انجليزي ،

و جربت كودك ، بالفاصلة والفاصلة المنقوطة ، والكيبورد باللغة الانجليزية ، والنتيجة كانت صحيحة في كل الحالتين ، ونحصل على قائمة بعدة اسطر بأسماء الكائنات 🙂

cmd_close,cmd_Requery,cmd_Add_New,cmd_Add_New_Between_Dates,cmd_Copy_Between_days
cmd_close,cmd_Requery;cmd_Add_New;cmd_Add_New_Between_Dates:cmd_Copy_Between_days

 

اما استعمال الفاصل والفاصلة المنقوطة ، والكيبورد باللغة العربية ، فالنتيجة كانت غير صحيحة في كل الحالتين ، ونحصل على قائمة الكائنات في سطر واحد مثل ماهو  ادناه :

cmd_close،cmd_Requery،cmd_Add_New،cmd_Add_New_Between_Dates،cmd_Copy_Between_days
cmd_close؛cmd_Requery؛cmd_Add_New؛cmd_Add_New_Between_Dates؛cmd_Copy_Between_days

.

ولكن لا عرف النتيجة عند تجربة هذا الكود في وندوز عربي واوفيس عربي !!

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم

ونداوز عربي أوفيس عربي

النتيجة مع الفاصلة المنقوطة صحيحة في جميع حالات لوحة المفاتيح

النتيجة مع الفاصلة غير صحيحة في جميع حالات لوحة المفاتيح تعطي سطر واحد

  • Like 1
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information