Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Как програмно открыть окно выбора палитры?  [new]
AlTis
Member

Откуда: Penza - Moscow
Сообщений: 1099
собственно всё...
19 сен 03, 10:04    [345307]     Ответить | Цитировать Сообщить модератору
 Re: Как програмно открыть окно выбора палитры?  [new]
Alex_2003
Member

Откуда: Moscow
Сообщений: 277
Common Dialog не пробовал?
19 сен 03, 10:34    [345362]     Ответить | Цитировать Сообщить модератору
 Re: Как програмно открыть окно выбора палитры?  [new]
Kriven
Member

Откуда: Гандурас
Сообщений: 221
Посмотри http://www.osp.ru/pcworld/1999/03/141_print.htm может подойдет
19 сен 03, 10:41    [345379]     Ответить | Цитировать Сообщить модератору
 Re: Как програмно открыть окно выбора палитры?  [new]
АлексейЕ
Guest
В форме создаете Кнопку - Command1, Поля - Text1, Text2. В модуль формы вставте след. код…

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

Private Sub Command1_Click()
Call ShowColorDialog(, True, 0)
End Sub


Private Sub Form_Load()
Me.Text2 = Me.Text1.BackColor
End Sub

'Выбор цвета
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

If InitColor <> 0 Then
If OleTranslateColor(InitColor, 0, lInitColor) Then
lInitColor = CLR_INVALID
End If
End If

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

If ChooseColor(CC) Then
ShowColorDialog = CC.rgbResult
Else
'если цвет не выбран пишем "-1"
ShowColorDialog = -1
End If

' выводим цвет
If ShowColorDialog < 0 Then
' нажата Кнопка "Отмена"
'Me.Text2.Text = "Цвет не выбран"
Me.Text2 = "Цвет не выбран"
Else
Me.Text1.BackColor = ShowColorDialog
'Me.Text2.Text = ShowColorDialog
Me.Text2 = ShowColorDialog
End If
End Function
19 сен 03, 11:42    [345502]     Ответить | Цитировать Сообщить модератору
 Re: Как програмно открыть окно выбора палитры?  [new]
AlTis
Member

Откуда: Penza - Moscow
Сообщений: 1099
Большое спасибо АлексейЕ. Всё получилось
22 сен 03, 09:12    [347324]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Как програмно открыть окно выбора палитры?  [new]
Алексей К.2
Member

Откуда: из будущего
Сообщений: 227
а как сделать чтоб этот диалог в центре экрана/формы появлялся?, а то он все время в верхнем левом углу появляется.
22 мар 06, 08:12    [2474395]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить