نمایش نتایج 1 تا 18 از 18

نام تاپیک: ساخت نشاندهنده پیشرفت با گرادیان رنگ برای فرم و جدول Gradient Progress Indicator in Table and Form

  1. #1
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    ساخت نشاندهنده پیشرفت با گرادیان رنگ برای فرم و جدول Gradient Progress Indicator in Table and Form

    هدف ساخت نشاندهنده پیشرفت با گرادیان رنگی است:

    جدول:
    intable.png

    فرم پیوسته:
    informcont.png

    فرم دیتاشیت:
    informds.png

    آپدیت:
    پیشنهاد میکنم روش محاسبه و ساخت پیشنهادی جناب آقای بهرامی (پست شماره 12) رو حتما بخونین.
    آخرین ویرایش به وسیله mazoolagh : چهارشنبه 16 اسفند 1402 در 19:11 عصر

  2. #2
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: ساخت نشاندهنده پیشرفت با گرادیان رنگ برای فرم و جدول Gradient Progress Indicator in Table a

    اول باید یک مبنای رنگی طراحی کنیم.

    در این آموزش اینجور قرارداد میکنیم که نشاندهده از:
    رنگ قرمز برای 0% شروع و در 30% به نارنجی میرسه،
    و بعد تا 70% به رنگ زرد و در پایان در 100% به رنگ سبز میرسه،
    و در بین این مقادیر رنگ باید از بین طیف ها محاسبه بشه.

    برای داشتن یک ایده تصویری این گرادیان رو به صورت html میبینیم:
    با استفاده از اسم رنگ
    background: linear-gradient(to right, RED0%, DARKORANGE30%, YELLOW , GREEN100%);

    css0.png

    یا کد رنگ
    background: linear-gradient(to right, #FF00000%, #FF800030%, #FFFF00 , #008000100%);

    css1.png

    که به صورت زیر دیده میشه:
    html.png

  3. #3
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: ساخت نشاندهنده پیشرفت با گرادیان رنگ برای فرم و جدول Gradient Progress Indicator in Table a

    حالا باید یک تابع بنویسیم که (اسم اون رو Color گذاشتیم) که با گرفتن:
    مولفه های RGB رنگ آغاز و پایان طیف،
    و تعداد تقسیم بندی طیف،
    و اندیس موقعیت در طیف،
    کد رنگ متناظر رو به صورت یک string برگردونه.

    در این آموزش ما محدوده مقادیر رو به 0 تا 100 محدود کردیم،
    و برای این محدوده 50 گام در نظر گرفته ایم (در عمل زیاد هست و اندازه اندیکاتور رو بزرگ میکنه - حداکثر 20 گام کافی هست).

    بعنوان مثال:
    برای مقدار 20 که در محدوده 0 تا 30 (قرمز تا نارنجی) قرار داره باید مولفه های این دو رنگ،
    همراه با تعداد بخش ها که 15 هست (100 واحد در 50 گام)،
    و اندیس 10 (20 تقسیم بر اندازه هر بخش که همون 2 هست) رو به تابع بدیم،
    و تابع یک مقدار رنگ که برابر 10مین رنگ از طیف 15 رنگ بین قرمز و نارنجی رو برگردونه.

    برای سادگی ، درونیابی ریاضی انجام میدیم که با درونیابی واقعی رنگ (که برنامه هایی مثل فوتوشاپ یا مرورگرها انجام میدن) تفاوت داره،
    ولی نتیجه به اندازه کافی رضایتبخش هست!

    برای این تابع، باید یک تابع دیگه بنویسیم (به اسم RGB2Hex)
    که با گرفتن مولفه های رنگ،
    کد HEX رنگ رو برگردونه تا بتونیم در فیلد rtf از اون استفاده کنیم:
    Public Function RGB2Hex( _ 
    R As Integer, _
    G As Integer, _
    B As Integer _
    ) As String

    RGB2Hex = "#" & Right("0" & Hex$(R), 2) & _
    Right("0" & Hex$(G), 2) & _
    Right("0" & Hex$(B), 2)
    End Function


    Public Function Color( _ 
    R1 As Integer, _
    G1 As Integer, _
    B1 As Integer, _
    R2 As Integer, _
    G2 As Integer, _
    B2 As Integer, _
    steps As Integer, _
    index As Integer _
    ) As String

    Dim R As Integer
    Dim G As Integer
    Dim B As Integer

    R = R1 + (index - 1) * (R2 - R1) / (steps - 1)
    G = G1 + (index - 1) * (G2 - G1) / (steps - 1)
    B = B1 + (index - 1) * (B2 - B1) / (steps - 1)
    Color = RGB2Hex(R, G, B)
    End Function

  4. #4
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: ساخت نشاندهنده پیشرفت با گرادیان رنگ برای فرم و جدول Gradient Progress Indicator in Table a

    حالا میتونیم خیلی راحت تابعی رو بنویسیم (به اسم GetColor)
    که با گرفتن اندیس (در محدوده تعداد بخش ها که در این آموزش بین 1 تا 50 هست)،
    کد رنگ متناظر رو برگردونه:

    Public Function GetColor(index As Integer) As String
    Select Case index
    Case 1 To 15 ' FROM RED=(255,0,0) TO DARKORANGE=(255,128,0)
    GetColor = Color(R1:=255, G1:=0, B1:=0, R2:=255, G2:=128, B2:=0, steps:=15, index:=index)
    Case 16 To 35 ' FROM DARKORANGE=(255,128,0) TO YELLOW=(255,255,0)
    GetColor = Color(R1:=255, G1:=128, B1:=0, R2:=255, G2:=255, B2:=0, steps:=20, index:=index - 15)
    Case Else ' 36 to 50 - FROM YELLOW=(255,255,0) TO GREEN=(0,128,0)
    GetColor = Color(R1:=255, G1:=255, B1:=0, R2:=0, G2:=128, B2:=0, steps:=15, index:=index - 35)
    End Select
    End Function

  5. #5
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: ساخت نشاندهنده پیشرفت با گرادیان رنگ برای فرم و جدول Gradient Progress Indicator in Table a

    با آماده شدن همه مقدمات، تابع نهایی رو مینویسیم (به اسم GetIndicator)
    که یک مقدار (در این آموزش بیم 0 تا 100) رو میگیره،
    و یک string برمیگردونه که میتونیم در یک فیلد rich text اون رو به عنوان نشان دهنده پیشرفت استفاده کنیم:

    Public Function GetIndicator(value As Integer) As String
    Dim s As String
    Dim i As Integer
    For i = 1 To value \ 2
    s = s + "<font color=" + GetColor(i) + ">" + ChrW(&H2588) + "</font>"
    Next
    If value Mod 2 = 1 Then
    s = s + "<font color=" + GetColor(i) + ">" + ChrW(&H258C) + "</font>"
    End If
    GetIndicator = s
    End Function

  6. #6
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: ساخت نشاندهنده پیشرفت با گرادیان رنگ برای فرم و جدول Gradient Progress Indicator in Table a

    در جدول نمونه یک فیلد integer به نام N ،
    و یک فیلد long text (memo) با فرمت rich text به نام Indicator داریم،
    که باید به صورت خودکار بر اساس مقدار N ساخته بشه.

    برای این کار در رخداد Before Change جدول (دقت کنید جدول و نه فرم) از تابع GetIndicator به شکل زیر در Data Macro مربوط استفاده میکنیم:

    macro1.png

    macro2.png

  7. #7
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: ساخت نشاندهنده پیشرفت با گرادیان رنگ برای فرم و جدول Gradient Progress Indicator in Table a

    در اینجا لازم هست از جناب آقای بهرامی گرامی بخاطر ایده این آموزش تشکر کنم.

    تاپیک جناب آقای بهرامی
    مبتدی: افزایش طول باکس بر اساس مقدار وارد شده (barnamenevis.org)

    تاپیک مرتبط
    آموزش: ساخت نشاندهنده پیشرفت برای فرم و جدول Progress Indicator in Table and Form (barnamenevis.org)
    فایل های ضمیمه فایل های ضمیمه

  8. #8

    نقل قول: ساخت نشاندهنده پیشرفت با گرادیان رنگ برای فرم و جدول Gradient Progress Indicator in Table a

    سلام جناب استاد
    بنده نمونه بسیار عالی و جذاب جنابعالی رو دانلود و مشاهده کردم چیزی که در این نمونه برای بنده خیلی جای سوال داره و خیلی سعی کردم متوجه اون بشم که موفق نشدم اینست که هیچ اثری از فراخوانی ماژول(فانکشن ) در فرم و جدول وجود نداره ولی وقتی ما ماژول رو حذف کنیم و مستقیما در جدول تعداد رو تغییر بدهیم پیغام عدم دسترسی فانکشن اعلام میشه . این موضع خارج از بحث زیبائی و حرفه ای تهیه شدن نمونه خیلی سوال برانگیزه که تو کوئری فراخوانی توابع رو بارها دیده ام ولی در جدول اونهم به اینصورت نامرئی بودن فراخوانی تابع تا حالا جایی ندیده ام

  9. #9
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: ساخت نشاندهنده پیشرفت با گرادیان رنگ برای فرم و جدول Gradient Progress Indicator in Table a

    نقل قول نوشته شده توسط atf1379 مشاهده تاپیک
    سلام
    چیزی که در این نمونه برای بنده خیلی جای سوال داره و خیلی سعی کردم متوجه اون بشم که موفق نشدم اینست که هیچ اثری از فراخوانی ماژول(فانکشن ) در فرم و جدول وجود نداره ولی وقتی ما ماژول رو حذف کنیم و مستقیما در جدول تعداد رو تغییر بدهیم پیغام عدم دسترسی فانکشن اعلام میشه . این موضع خارج از بحث زیبائی و حرفه ای تهیه شدن نمونه خیلی سوال برانگیزه که تو کوئری فراخوانی توابع رو بارها دیده ام ولی در جدول اونهم به اینصورت نامرئی بودن فراخوانی تابع تا حالا جایی ندیده ام
    سلام و روز خوش
    تابع در رخداد before change جدول و در datamacro خوانده میشه!
    به قسمت پایین عکس دویم در پست شماره 6 دقت کنین:

    macro3.png
    اول با دو IF BLOCK محدوده فیلد N رو چک و در صورت لزوم درست میکنیم،
    و بعد در آخرین دستور مقدار فیلد Indicator رو برابر GetIndicator([N]) قرار میدیم و فراخوانی اینجا انجام میشه.

    به این ترتیب دیگه نیازی نیست در فرم کدنویسی انجام بشه،
    بخصوص اگر چند فرم مختلف با یک جدول سروکار داشته باشن.
    مقدار فیلد N به هر روشی تغییر کنه عملیات خودکار هست:
    چه در جدول، چه در فرم، چه با کد یا کوئری.

    در همین برنامه پیوست یک روتین برای ساخت دیتا نمونه در جدول هست:
    Sub CreatSampleData()
    DoCmd.RunSQL "DELETE * FROM Table1"
    Dim dbs As Database
    Set dbs = CurrentDb
    Dim rs As Recordset
    Set rs = dbs.OpenRecordset("table1")
    Dim i As Integer
    Dim s As String
    For i = 0 To 100
    rs.AddNew
    rs("N") = i
    rs.Update
    Next
    rs.Close
    Set rs = Nothing
    Set dbs = Nothing
    End Sub


    اگر دقت کنین در بلوک ساخت رکورد جدید، فقط فیلد N رو مقدار دهی میکنیم و فیلد Indicator با دیتامکرو پر میشه.

  10. #10
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: ساخت نشاندهنده پیشرفت با گرادیان رنگ برای فرم و جدول Gradient Progress Indicator in Table a

    برای دوستانی که میخوان کار با datamacro ها رو یاد بگیرن، جناب آقای صدیقی یک اموزش بسیار خوب رو در تاپیک زیر گذاشتن:

    آموزش DataMacro

  11. #11
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    پست
    797

    نقل قول: ساخت نشاندهنده پیشرفت با گرادیان رنگ برای فرم و جدول Gradient Progress Indicator in Table a

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    هدف ساخت نشاندهنده پیشرفت با گرادیان رنگی است:
    سلام
    دستخوش استاد!
    یکی از یکی بهتر

  12. #12
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    پست
    797

    نقل قول: ساخت نشاندهنده پیشرفت با گرادیان رنگ برای فرم و جدول Gradient Progress Indicator in Table a

    سلام استاد !
    در نمونه ضمیمه شیب رنک فیلد نشان دهنده پیشرفت با استفاده از تابع RGB بدست اومده
    خواستم خواهش کنم چنانچه فرصت داشتین این نمونه رو بررسی و ایراداتشو برطرف بفرمائید !
    ممنون
    عکس های ضمیمه عکس های ضمیمه
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله eb_1345 : پنج شنبه 17 اسفند 1402 در 12:46 عصر

  13. #13
    کاربر دائمی آواتار mazoolagh
    تاریخ عضویت
    اردیبهشت 1384
    سن
    71
    پست
    3,055

    نقل قول: ساخت نشاندهنده پیشرفت با گرادیان رنگ برای فرم و جدول Gradient Progress Indicator in Table a

    نقل قول نوشته شده توسط eb_1345 مشاهده تاپیک
    سلام !
    در نمونه ضمیمه شیب رنک فیلد نشان دهنده پیشرفت با استفاده از تابع RGB بدست اومده
    خواستم خواهش کنم چنانچه فرصت داشتین این نمونه رو بررسی و ایراداتشو برطرف بفرمائید !
    ممنون
    سلام جناب آقای بهرامی و روز خوش
    روش شما تمیزتر و بهتر هست (طبق روال همیشگی)،
    چون:
    1- فقط از بکگراند استفاده کردین و شکستگی بین گام ها دیده نمیشه،
    2- کدها سبکتر هست.
    خیلی خوب شد که این رو مطرح کردین و بابت این قدردان شما هستم.

    من پست اول تاپیک رو ویرایش و به این موضوع اشاره میکنم.

  14. #14
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    پست
    797

    نقل قول: ساخت نشاندهنده پیشرفت با گرادیان رنگ برای فرم و جدول Gradient Progress Indicator in Table a

    نقل قول نوشته شده توسط mazoolagh مشاهده تاپیک
    سلام جناب آقای بهرامی و روز خوش
    روش شما تمیزتر و بهتر هست (طبق روال همیشگی)،
    چون:
    1- فقط از بکگراند استفاده کردین و شکستگی بین گام ها دیده نمیشه،
    2- کدها سبکتر هست.
    خیلی خوب شد که این رو مطرح کردین و بابت این قدردان شما هستم.

    من پست اول تاپیک رو ویرایش و به این موضوع اشاره میکنم.
    سپاسگزارم استاد !🙏

  15. #15
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    پست
    797

    نقل قول: ساخت نشاندهنده پیشرفت با گرادیان رنگ برای فرم و جدول Gradient Progress Indicator in Table a

    سلام
    حالا که جناب استاد mazoolagh عزیز نمونه پست 12 بنده رو تائید کردند لازم میدونم یک توضیح مختصری در خصوص نحوه استفاده از جدول نمونه فوق خدمت دوستان ارائه بدهم
    با توجه به اینکه در جدول فوق برای هریک از اعداد 0 تا 100 با استفاده از شیب رنگ یک پروگراس بار یا نشان دهنده پیشرفت ایجاد شده میتوان از این جدول در برنامه های دیگر که در فرم های پیوسته اونها نیاز به نمایش درصد پیشرفت یک فیلد خاص وجود دارد بدون هیچگونه کد نویسی ای استفاده کرد.
    برای اینکار کافیست این جدول رو به جداول برنامه مربوطه اضافه کنیم و در آن برنامه در جدولی که که قرار است اطلاعات آن در فرم پیوسته نمایش داده شود یک فیلد تحت عنوان IndicatorNo ایجاد کنیم( جهت ارتباط دو جدول) سپس یک کوئری ایجاد می نمائیم و دو جدول رو با استفاده از فیلد کلیدی IndicatorNo
    ارتباط میدهیم و از جدول اضافه شده فیلد Indicator و از جدول دیگر فیلدهای مد نظر به کوئری فوق اضافه می کنیم.
    البته ناگفته پیداست که اگر کسی طالب تغییرات شیب رنگ در جدول TblIndicatorو انعکاس این تغییرات در فرم خود باشد بهتر است از فرم نمونه فوق هم که کدهای تغییرات شب رنگ در آن درج شده استفاده نماید
    لطفاً نمونه ضمیمه رو بررسی بفرمائید
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله eb_1345 : پنج شنبه 17 اسفند 1402 در 20:12 عصر

  16. #16
    کاربر دائمی
    تاریخ عضویت
    آبان 1397
    محل زندگی
    شیراز
    پست
    318

    نقل قول: ساخت نشاندهنده پیشرفت با گرادیان رنگ برای فرم و جدول Gradient Progress Indicator in Table a

    با سلام و احترام
    جناب استاد بهرامی
    عالی بود ممنون

  17. #17
    کاربر دائمی آواتار eb_1345
    تاریخ عضویت
    مرداد 1398
    محل زندگی
    تهران
    پست
    797

    نقل قول: ساخت نشاندهنده پیشرفت با گرادیان رنگ برای فرم و جدول Gradient Progress Indicator in Table a

    نقل قول نوشته شده توسط محمد رضا بهبودی مشاهده تاپیک
    با سلام و احترام
    عالی بود ممنون
    سلام
    خواهش می کنم
    آخرین ویرایش به وسیله eb_1345 : پنج شنبه 17 اسفند 1402 در 20:10 عصر

  18. #18
    کاربر دائمی
    تاریخ عضویت
    آبان 1390
    محل زندگی
    اردبیل
    پست
    194

    نقل قول: ساخت نشاندهنده پیشرفت با گرادیان رنگ برای فرم و جدول Gradient Progress Indicator in Table a

    با عرض سلام خدمت استاد mazoolagh و استاد بهرامی . واقعا از کارتون لذت بردم . دستتون درد نکنه و خسته نباشید میگم .

تاپیک های مشابه

  1. آموزش: ساخت نشاندهنده پیشرفت برای فرم و جدول Progress Indicator in Table and Form
    نوشته شده توسط mazoolagh در بخش Access
    پاسخ: 6
    آخرین پست: یک شنبه 13 اسفند 1402, 18:42 عصر
  2. پاسخ: 0
    آخرین پست: یک شنبه 26 اردیبهشت 1395, 15:57 عصر
  3. نمایش نوار پیشرفت (progress bar ) هنگام آپلود فایل
    نوشته شده توسط nimadows در بخش ASP.NET Web Forms
    پاسخ: 12
    آخرین پست: چهارشنبه 04 اردیبهشت 1392, 23:37 عصر
  4. ایجاد client-form و server-form همزمان برای یک table با struts
    نوشته شده توسط shaaadi در بخش Java EE : نگارش سازمانی جاوا
    پاسخ: 2
    آخرین پست: شنبه 04 شهریور 1391, 16:31 عصر
  5. نمایش % پیشرفت در progress bar
    نوشته شده توسط nobody.gu3st در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 6
    آخرین پست: سه شنبه 27 دی 1390, 10:19 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •