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

كيف يمكن انشاء براميتر على شكل قائمة داخل الفانكشن


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

السلام عليكم

اخواني الكرام

1- اريد انشاء فانكشن function واضافة براميتر له وهذا البراميتر يجب ان يعرض على شكل قائمة اثناء استخدام الفانكشن في البرمجة بحيث يعرض لي قائمة اختار منها احد الخيارات المتاحة

2- الطلب الثاني كيف يمكنني ان اجعل البراميتر اختياري وليس اجباري في الفنكشن

 

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

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

الجواب الأول: قائمة القيم السردية التي تظهر  معاملات (Parameters) هي في الحقيقة معرفات يعوض عنها بقيم عددية ثابتة .. وصيغتها كالتالي

Enum SecurityLevel 
 IllegalEntry = 1
 SecurityLevel1 =2
 SecurityLevel2 = 3
End Enum 

للأهمية..

يجب أن يعلن عن هذه المعرفات في أعلى الوحدة النمطية 

 

الجواب الثاني: يمكن جعل المعاملات  اختيارية بوضع الصيغة الاختيارية Optional  قبل اسم المعامل.. كالتالي

Function Move(Optional Left As Integer, Optional Top As Integer)
    If IsMissing(Left) Then
        '..Do Something
    End If
End Function

 

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

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

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

 

2017-04-16_12h04_59.png

حبذا لو تستطيع ان تقدم لي مثال عملي على ذلك فانا لم استطع تطبيق ما ذكرته أو بالاحرى لم تظهر القائمة

 

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

30 دقائق مضت, عبد الله قدور said:

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

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

 

2017-04-16_12h04_59.png

حبذا لو تستطيع ان تقدم لي مثال عملي على ذلك فانا لم استطع تطبيق ما ذكرته أو بالاحرى لم تظهر القائمة

 

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

ما اعرف قصدك بهذا ام لا

ان يظهر كل الاحتمالات عند كتابة الكود

اذا هو مطلبك

من محرر فيجوال اختر 

تولس بعدين اوبشن

سيظهر لك هذه النافذة

اعمل علامة صح امام مربه الاصفر

1.PNG.e7ff91d94f0758a5d3e006e832df493f.PNG

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

3 دقائق مضت, Shivan Rekany said:

ان يظهر كل الاحتمالات عند كتابة الكود

اذا هو مطلبك

من محرر فيجوال اختر 

تولس بعدين اوبشن

سيظهر لك هذه النافذة

اعمل علامة صح امام مربه الاصفر

مفعلة عندي اخي الكريم لكن لا تظهر القوائم التي اقوم بانشاءها انا

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

نعم بالمثال يتضح المقال.. 

دعني أقوم بشرح بعض النقاط من خلال الصورة التالية..

T004_VBA.png.f709e7620942b5d99e7c06e4e56b4b14.png

بحسب تسلسل الأرقم:

1- إنشاء حاوية معاملات عددية تسلسلية بأسماء الأشهر الميلادية.. اسم هذه الحاوية: T4ManthNames

 

 

تم تعديل بواسطه أبو إبراهيم الغامدي
  • Like 1
رابط هذا التعليق
شارك

المعذرة لم أتمكن من إكمال المشاركة السابقة لعدم استجابة المتصفح للتحرير
  
  2- إنشاءالوظيفة ()IsMonth وهي تعود بقيمة منطقية، وتستقبل أيضا متغير يعود بقيمة عددية من خلال الحاوية التي أنسأنها
  3- يوضح هذا المقطع مستعرض المراجع؛ وهو هنا يسرد قيم الحاوية التي أنشانها 
  4- هي لنافذة التنفيذ السريعة ويمكن من خلالها فحص الوظفة السابقة ومدى استجابة المحث بسرد قيم حاوية أسماء الأشهر.. يجب أن تظهر هذه القيم عند كتابة الوظيفة وبعد كتابة القوس الأيسير.
  
  وهذا مثال للتوضح

T004.zip

تم تعديل بواسطه أبو إبراهيم الغامدي
  • Like 5
رابط هذا التعليق
شارك

42 دقائق مضت, أبو إبراهيم الغامدي said:

المعذرة لم أتمكن من إكمال المشاركة السابقة لعدم استجابة المتصفح للتحرير
  
  2- إنشاءالوظيفة ()IsMonth وهي تعود بقيمة منطقية، وتستقبل أيضا متغير يعود بقيمة عددية من خلال الحاوية التي أنسأنها
  3- يوضح هذا المقطع مستعرض المراجع؛ وهو هنا يسرد قيم الحاوية التي أنشانها 
  4- هي لنافذة التنفيذ السريعة ويمكن من خلالها فحص الوظفة السابقة ومدى استجابة المحث بسرد قيم حاوية أسماء الأشهر.. يجب أن تظهر هذه القيم عند كتابة الوظيفة وبعد كتابة القوس الأيسير.
  
  وهذا مثال للتوضح

T004.zip

السلام عليكم اخي ابو ابراهيم

جزاك الله عني كل خير هذا ما اردته بالتمام والكمال بارك الله فيك وبعلمك

 

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

في ١٥‏/٤‏/٢٠١٧ at 19:58, أبو إبراهيم الغامدي said:

هي في الحقيقة معرفات يعوض عنها بقيم عددية ثابتة

و كيف يمكن استخدامها مع القيم النصية

مثلا أسماء الأيام

نود أن تضرب لنا مثالا

ونشكرك على معلوماتك القيمة

 

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

6 ساعات مضت, عبد الفتاح كيرة said:

و كيف يمكن استخدامها مع القيم النصية

مثلا أسماء الأيام

نود أن تضرب لنا مثالا

ونشكرك على معلوماتك القيمة

 

لا يمكن أن تعيد Enum قيما نصية للأسف.. لكن لها شقيقة تدعى Type تقوم بتعريف البيانات التي تستقبلها وتعيدها ولكي نطوعها للعمل كسابقتها نحتاج إلى عدة خطوات.. إليكم الخطة

سوف نقوم أولا بتعريف البيانات كما يلي

Type T_MonthNames
    Jan As String
    Feb As String
    Mar As String
    Apr As String
    May As String
    Jun As String
    Jul As String
    Aug As String
    Sep As String
    Oct As String
    Nov As String
    Dec As String
End Type

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

Function MonthName() As T_MonthNames
'-- هذه البيانات كمثال
'-- أكمل إسناد البيانات إذا أردت
    MonthName.Jan = "يناير"
    MonthName.Feb = "فيبراير"
    MonthName.Mar = "مارس"
    MonthName.Apr = "أبريل"
End Function

في نافذة التنفيذ السريعة يمكنكم تجربة الوظيفة كمايلي

? MonthName.Apr 'سوف تعيد شهر أبريل

إليكم المثال

T004.zip

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

تمام

بارك الله فى علمك

تعلم أننا يمكن أن ننشئ جدولا به هذه القيم

ونستخدمه أينما نريد

فى قيم مربع تحرير و سرد

أو قائمة أو غير ذلك

أريد أن أعلم

الميزة التى توفرها لنا هذه الطريقة بالتحديد

هل هى الحماية بعيدا عن كائنات أكسيس

والاختفاء داخل الكود

أم أى شىء؟

بارك الله فى علمك

أول مرة أتعرف على هذه الأشياء

 

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

8 دقائق مضت, عبد الفتاح كيرة said:

تعلم أننا يمكن أن ننشئ جدولا به هذه القيم

ونستخدمه أينما نريد

فى قيم مربع تحرير و سرد

أو قائمة أو غير ذلك

السلام عليكم اخي الكريم عبد الفتاح

ان كان بالامكان ان تشرح لنا هذه الطريقة وجزاك الله عنا خير الجزاء

 

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

2 ساعات مضت, أبو إبراهيم الغامدي said:

في نافذة التنفيذ السريعة يمكنكم تجربة الوظيفة كمايلي


? MonthName.Apr 'سوف تعيد شهر أبريل

اخي الكريم هناك خطا في المثال ولا يعمل بشكل جيد الاستعلام لا يفتح وتظهر رسالة خطا

 

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

16 دقائق مضت, عبد الله قدور said:

اخي الكريم هناك خطا في المثال ولا يعمل بشكل جيد الاستعلام لا يفتح وتظهر رسالة خطا

 

ليس هناك استعلامات

العمل هنا داخل محرر الأكواد

alt+f11

من نافذة view اختر immediate 

ctrl+g

و بالنسبة لاستخدام مثل هذه القيم

فأنا قصدت بالطريقة العادية

يعنى ننشئ جدولا به حقلان

رقم و اسم الشهر

و نعبئه بالقيم

ثم نجعله مصدرا للصف فى مربع السرد

و سألت عما يميز طريقتكم عن الطريقة المعتادة

و مع ذلك فقد حاولت ملء مربع سرد بقيم هذه الطريقة كما بالمرفق

افتح نموذج 2 بالمرفق و تفحص مربع السرد و اختر الشهر أبريل

بالتوفيق

تطبيق على type و معرفة رقم الصف للمختار فى كمبوبوكس.rar

 

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

السلام عليكم اخواني الكرام

الفكرة عندي هي

1- انشاء وحدة نمطية لاستدعاء الصورة من مجلد جانب البرنامج اسمه img

يتطلب هذا الامر استخدام براميتر لاسم الصورة وبراميتر لامتداد الصورة ندخلهم عند كود  الاستدعاء

وصلت الى هذه الوحدة النمطية

Function selectimage(imageName, typeimage As typeimg)
Dim typeimg As String
Select Case typeimage
    Case 1
        typeimg = ".png"
    Case 2
        typeimg = ".jpg"
    Case 3
        typeimg = ".bmp"
    Case 4
        typeimg = ".ico"
End Select
selectimage = Application.CurrentProject.Path & "\img\img\" & imageName & typeimg

End Function

بحيث استخدمها عند استدعاء اربع انواع من الامتدادات حصرا

لكن كما هو واضح من الكود اني استدل على الامتداد برقم وبعد مرور الوقت قد انسى ان الرقم 3 يرجع الى اي امتداد او عدد الامتدادات المسموح استخدامها

لذلك استخدمت enum لعرض الامتدادات المسموح بها اثناء كتابة كود الاستدعاء على الشكل التالي

2017-04-17_15h51_48.png.2c6115ef95296db4a2bcddeca039f567.png

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

الى الان الوضع تمام والكود شغال ممتاز

لكن طمعي بكود اقصر واداء افضل بحيث عندما اختار من القائمة تكون القيمة المخزنة فيها نصية واستخدمها مباشرة دون الحاجة الى استخدام select

 

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

3 ساعات مضت, عبد الله قدور said:

لكن طمعي بكود اقصر واداء افضل بحيث عندما اختار من القائمة تكون القيمة المخزنة فيها نصية واستخدمها مباشرة دون الحاجة الى استخدام select

إذا كان المجلد يحتوي صور فقط .. فهذه الشفرة بعد التعديل

Function GetImage(imageName As String)
    Dim ImagePath As String
    ImagePath = CurrentProject.Path & "\img\img\"
    GetImage = ImagePath & Dir(ImagePath & imageName & "*")
End Function

اكتب اسم الملف بدون اللاحقة..

أو اكتب جزء من اسم الملف..

أو لا تكتب شيء! سوف يعيد اسم أول ملف!

 

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

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