PDA

View Full Version : راهنمائی در خصوص رنگ فرم



محمد رضا بهبودی
سه شنبه 08 بهمن 1398, 14:19 عصر
با سلام خدمت اساتید محترم
من یک برنامه کوچک در خصوص رنگ سربرگ و زمینه پیوست کردم . مشکل این برنامه اینه که وقتی بر روی colorpicker دکمه کنسل را می زنیم آخرین رنگ انتخاب شده در دکمه های دیگر را اعمال می کند در صورتی که نباید هیچ اقدامی انجام دهد . لطفا در صورت امکان راهنمائی فرمایید . ممنون

محمد رضا بهبودی
پنج شنبه 10 بهمن 1398, 07:54 صبح
اساتید محترم لطفا راهنمائی بفرمایند

محمد رضا بهبودی
یک شنبه 13 بهمن 1398, 08:32 صبح
اساتید محترم لطفا راهنمائی بفرمایند

محمد رضا بهبودی
سه شنبه 15 بهمن 1398, 08:06 صبح
اساتید محترم لطفا راهنمائی بفرمایید

mazoolagh
پنج شنبه 17 بهمن 1398, 10:41 صبح
مشکل اینجاست :
تابع api که استفاده کردین باید cancel یا close رو تشخیص بده (یعنی یک مقدار خاص بابت اون برگردونه)
که نمیکنه یا حداقل در این کد دیده نشده

تابع api دیگه ای هست که این مشکل رو نداره،
یک نمونه با اون میگذارم.

mazoolagh
یک شنبه 20 بهمن 1398, 13:47 عصر
از کدی که در آدرس زیر اومده استفاده کنین،
کامل هست و cancel رو پشتیبانی میکنه (مقدار 1- برمیگردونه)

کد نمونه هم خودش گذاشته.

http://www.devx.com/vb2themax/Tip/19257

mazoolagh
یک شنبه 20 بهمن 1398, 13:49 عصر
Private Type ChooseColorStruct
lStructSize As Long
hwndOwner As Long
hInstance As Long
rgbResult As Long
lpCustColors As Long
flags As Long
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Private Declare Function ChooseColor Lib "comdlg32.dll" Alias "ChooseColorA" _
(lpChoosecolor As ChooseColorStruct) As Long

Private Declare Function OleTranslateColor Lib "oleaut32.dll" (ByVal lOleColor _
As Long, ByVal lHPalette As Long, lColorRef As Long) As Long

Private Const CC_RGBINIT = &H1&
Private Const CC_FULLOPEN = &H2&
Private Const CC_PREVENTFULLOPEN = &H4&
Private Const CC_SHOWHELP = &H8&
Private Const CC_ENABLEHOOK = &H10&
Private Const CC_ENABLETEMPLATE = &H20&
Private Const CC_ENABLETEMPLATEHANDLE = &H40&
Private Const CC_SOLIDCOLOR = &H80&
Private Const CC_ANYCOLOR = &H100&
Private Const CLR_INVALID = &HFFFF

' Show the common dialog for choosing a color.
' Return the chosen color, or -1 if the dialog is canceled
'
' hParent is the handle of the parent form
' bFullOpen specifies whether the dialog will be open with the Full style
' (allows to choose many more colors)
' InitColor is the color initially selected when the dialog is open
' Example:
' Dim oleNewColor As OLE_COLOR
' oleNewColor = ShowColorsDialog(Me.hwnd, True, vbRed)
' If oleNewColor <> -1 Then Me.BackColor = oleNewColor
Function ShowColorDialog(Optional ByVal hParent As Long, _
Optional ByVal bFullOpen As Boolean, Optional ByVal InitColor As OLE_COLOR) _
As Long
Dim CC As ChooseColorStruct
Dim aColorRef(15) As Long
Dim lInitColor As Long

' translate the initial OLE color to a long value
If InitColor <> 0 Then
If OleTranslateColor(InitColor, 0, lInitColor) Then
lInitColor = CLR_INVALID
End If
End If

'fill the ChooseColorStruct struct
With CC
.lStructSize = Len(CC)
.hwndOwner = hParent
.lpCustColors = VarPtr(aColorRef(0))
.rgbResult = lInitColor
.flags = CC_SOLIDCOLOR Or CC_ANYCOLOR Or CC_RGBINIT Or IIf(bFullOpen, _
CC_FULLOPEN, 0)
End With

' Show the dialog
If ChooseColor(CC) Then
'if not canceled, return the color
ShowColorDialog = CC.rgbResult
Else
'else return -1
ShowColorDialog = -1
End If
End Function

mazoolagh
یک شنبه 20 بهمن 1398, 13:51 عصر
dim color as long
color=showcolordialog(me.hwnd , true , section(acdetail).backcolor)
if color <> -1 then
section(acdetail).backcolor=color
end if

محمد رضا بهبودی
چهارشنبه 23 بهمن 1398, 08:33 صبح
با سلام و احترام
مشکل کاملا رفع شد . از شما استاد گرامی کمال تشکر را دارم . امیدوارم موفق و پیروز باشید . ممنون

mazoolagh
شنبه 26 بهمن 1398, 14:04 عصر
سلام

این که به کاربر اجازه customize کردن فرم ها رو میدید بسیار ایده خوبی هست ولی نیاز به کار بیشتری داره؛
1- یک فرم عمومی برای اینکار بسازین و به هر فرم فقط یک button اضافه کنین که این فرم رو باز کنه
2- در این فرم جدای از section های فرم، لیست کنترل ها رو هم اضافه کنین.
3- theme های آماده خود اکسس رو هم اضافه کنین.
4- امکان سفارشی کردن font ها رو هم در نظر بگیرین.
5- یک button برای reset کردن (یا برگردوندن به مقادیر default) در نظر بگیرین.

محمد رضا بهبودی
یک شنبه 27 بهمن 1398, 07:53 صبح
با سلام و احترام
ممنون از راهنمائی شما استاد گرامی