درخواست يك كد خيلي ساده !

penta3

New Member
سلام

يك سوال از VB درمورد backcolor داشتم !

چطور ميشه اسم رنگي كه با inputbox ميگيريم براي form1.backcolor قرار بديم ؟
مثال : vbRed رو كه كه نوشتيم (تو inputbox) رنگ فورم رو عوض كنه !
هر كاري كردم نشده :cry: حالا مي خواستم ببينم امكانش هست ؟
ممنون
 

the_king

مدیرکل انجمن
سلام

يك سوال از VB درمورد backcolor داشتم !

چطور ميشه اسم رنگي كه با inputbox ميگيريم براي form1.backcolor قرار بديم ؟
مثال : vbRed رو كه كه نوشتيم (تو inputbox) رنگ فورم رو عوض كنه !
هر كاري كردم نشده :cry: حالا مي خواستم ببينم امكانش هست ؟
ممنون

از اونجایی که "vbRed" رو بصورت یک عبارت رشته ای دریافت می کنید تبدیل کردنش به مقدار ثابت vbRed با
توابعی مثل ()Val قابل انجام نیست. برای اینکه بتوانید مقادیر ثباتی را به معادل عددی شان تبدیل کنید دو راه حل
وجود دارد.

روش اول : با استفاده از تابع خارجی و پنهان EbExecuteLine که یک کد ویژوال بیسیک را اجرا می کند :

کد:
Private Declare Function [B]EbExecuteLine[/B] Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Foo1 As Long, ByVal Foo2 As Long, ByVal fCheckOnly As Long) As Long

Private EValValue As Double

Private Function [B]EVal[/B](ByVal Text As String) As Double
    Text = "Form1.EValValue = " & Text
    EbExecuteLine StrPtr(Text), 0, 0, False
    EVal = EValValue
End Function

Private Sub Form_Load()
    Form1.BackColor = [B]EVal[/B]("vbRed")
End Sub

برای اطلاعات بیشتر به تاپیک راهکار برای زبانی دیگر ! رجوع شود.

روش دوم : با استفاده از Select Case و وارد کردن تمامی متغیر های ثابت مورد نیاز :

کد:
Private Sub Form_Load()
    Form1.BackColor = [B]ColorToValue[/B]("vbRed")
End Sub

Private Function [B]ColorToValue[/B](ByVal Color As String) As ColorConstants
    Select Case LCase(Color)
    Case "vbred"
        ColorToValue = vbRed
    Case "vbblack"
        ColorToValue = vbBlack
    Case "vbgreen"
        ColorToValue = vbGreen
    Case "vbyellow"
        ColorToValue = vbYellow
    Case "vbblue"
        ColorToValue = vbBlue
    Case "vbmagenta"
        ColorToValue = vbMagenta
    Case "vbcyan"
        ColorToValue = vbCyan
    Case "vbwhite"
        ColorToValue = vbWhite
    End Select
End Function
 

جدیدترین ارسال ها

بالا