Как вызвать стандартную форму для выбора цвета?..

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Как вызвать стандартную форму для выбора цвета?..

Сообщение cashman » 01.02.2005 (Вт) 0:09

Как вызвать стандартную форму для выбора цвета?..

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 01.02.2005 (Вт) 0:16

Через стандартный Common Dialog

Тема обсуждалась миллионы раз... :idea:

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 01.02.2005 (Вт) 10:58

Код: Выделить всё
Commondialog1.showcolor

А потом для примера зададим цвет лебы
Код: Выделить всё
label1.BackColor = CommonDialog1.Color

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 01.02.2005 (Вт) 20:15

CommonDialog suxxx :thumbdown:
Код: Выделить всё
Private Declare Function CHOOSECOLOR Lib "comdlg32.dll" Alias "ChooseColorA" (pChoosecolor As CHOOSECOLOR) As Long

Private Type CHOOSECOLOR
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    rgbResult As Long
    lpCustColors As String
    flags As Long
    CustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type

Private Function ShowColor() As Long
    Dim cc As CHOOSECOLOR
    Dim Custcolor(16) As Long
    Dim lReturn As Long
    cc.lStructSize = Len(cc)
    cc.hwndOwner = Me.hwnd
    cc.hInstance = App.hInstance
    cc.lpCustColors = StrConv(CustomColors, vbUnicode)
    cc.flags = 0
    If CHOOSECOLOR(cc) <> 0 Then
        ShowColor = cc.rgbResult
        CustomColors = StrConv(cc.lpCustColors, vbFromUnicode)
    Else
        ShowColor = -1
    End If
End Function

Sub Form_Load()
    Dim NC&
    NC = ShowColor
    If NC = -1 Then MsgBox "Отмена" Else MsgBox NC
End Sub

Александр80
Bonach&#243;n
Bonach&#243;n
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Re: Как вызвать стандартную форму для выбора цвета?..

Сообщение Александр80 » 01.02.2005 (Вт) 20:21

cashman писал(а):Как вызвать стандартную форму для выбора цвета?..


Мне кажется лучше через Commondialog1.showcolor
A.A.Z. - API дело хорошее, но Commondialog1 ничем не хуже... :?

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Re: Как вызвать стандартную форму для выбора цвета?..

Сообщение Ramzes » 01.02.2005 (Вт) 20:24

Александр80 писал(а):
cashman писал(а):Как вызвать стандартную форму для выбора цвета?..


Мне кажется лучше через Commondialog1.showcolor
A.A.Z. - API дело хорошее, но Commondialog1 ничем не хуже... :?


полностью согласен

Александр80
Bonach&#243;n
Bonach&#243;n
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 01.02.2005 (Вт) 20:26

:lol: :wink:

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 01.02.2005 (Вт) 20:29

Common Dialog sucks, и я согласен с A.A.Z.!
Контролы, ocx'ы... Бр-р...

Теб более, что и кода-то всего ничего! )

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 01.02.2005 (Вт) 20:31

О вкусах спорят :!:

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 01.02.2005 (Вт) 20:31

1) Приходится таскать за собой контрол
2) Comdlg жутко глючный. Однажды на CD1.ShowFont он мне мило так сказал "Шрифты не установлены. Для их установки воспользуйтесь папкой Fonts" и вырубил прогу :evil: С API такого не происходит :roll:

Александр80
Bonach&#243;n
Bonach&#243;n
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 01.02.2005 (Вт) 20:34

2) A.A.Z. - а так не пробовал... :wink:

me.CommonDialog1.Flags = cdlCFBoth Or cdlCFEffects
me.CommonDialog1.ShowFont :lol:
И этого "Шрифты не установлены. Для их установки воспользуйтесь папкой Fonts" не будет

1) Если лень таскать контрол, то можно и через API... :?

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 01.02.2005 (Вт) 20:36

2) Пробовал, пробовал :roll: Не совсем уж тупой :oops:

Александр80
Bonach&#243;n
Bonach&#243;n
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 01.02.2005 (Вт) 20:42

A.A.Z. писал(а):2) Пробовал, пробовал :roll: Не совсем уж тупой :oops:


Не обижайся, я знаю, что ты не тупой... :oops: По идее должно было помочь... :? Я почти всегда использую CommonDialog1. Мне он нравится... :lol: :wink:

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 01.02.2005 (Вт) 20:43

A.A.Z. писал(а):1) Приходится таскать за собой контрол


В какой версии Windows MsCDC 6.0 уже стоят? C 98 или всё-таки позже? Думаю, что 90-95% случаев можно и не таскать... Кстати, COMDLG32.ocx всего 138 кб весит... А в раре всего 55... :roll:
Последний раз редактировалось Amed 01.02.2005 (Вт) 20:48, всего редактировалось 2 раз(а).

Александр80
Bonach&#243;n
Bonach&#243;n
 
Сообщения: 659
Зарегистрирован: 20.03.2004 (Сб) 23:50
Откуда: г.Москва

Сообщение Александр80 » 01.02.2005 (Вт) 20:44

Точно... :-)

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 01.02.2005 (Вт) 22:20

И все равно, если можно обойтись без контрола (тем более, таким небольшим куском кода), почему бы этого не сделать? :roll:

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 01.02.2005 (Вт) 22:25

Я полностью согласен

Eugenio
Постоялец
Постоялец
 
Сообщения: 393
Зарегистрирован: 08.05.2004 (Сб) 13:27
Откуда: Ekaterinburg

Сообщение Eugenio » 01.02.2005 (Вт) 22:28

Есть предложение. Контрол - это все-таки как-то... Таскать его, действительно. И изменить в нем ничего нельзя. А я вот давно нашел и юзаю класс, в котором инкапсулированы все эти API - до полной совместимости с кодом, использующим контрол! Но при этом - меняй что хочешь!
Это было в приложении к книге Getz'а и Gilbert'а. Вот:
Вложения
CommDlg.rar
(7.68 Кб) Скачиваний: 14
Есть ли у меня вопрос? У меня всегда есть вопрос

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 01.02.2005 (Вт) 22:39

А это есть в любом API-Guid'е ;)

cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Сообщение cashman » 02.02.2005 (Ср) 0:13

По большому счету, мне нужно сделать выбор из 3-х основных цветов + "без цвета".
Может для этого Common Dialog - более чем нужно...
Может есть проще контролл (или другая реальзация), или как альтернатива только API?...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 02.02.2005 (Ср) 12:59

Оно?

cashman
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 152
Зарегистрирован: 03.06.2004 (Чт) 0:57
Откуда: Россия, г.Екатеринбург

Сообщение cashman » 02.02.2005 (Ср) 15:38

Почти:
цветов слишком много и основное нет "без цвета" (т.е. устанавливается по умолчанию).
Да, у меня не получилось изменить размера основного окна контрола.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 9

    TopList  
cron