ColorDialog

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Viktor Zull
Сообщения: 117
Зарегистрирован: 10 ноя 2005, 02:00

Можно ли встроить ColorDialog в форму, чтобы он не открывался в отдельном окне. В каком файле находится его окно. Если встроить его нельзя, подскажите, как можно задать его положение на экране (left,top).
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

см функцию ChooseColor в справке по Win32.

Суть в следующем. Все стандартные диалоги Windows (выбор цвета, выбор шрифта и пр.) могут быть вызваны с передачей им некой CallBack-функции.

Надо написать CallBack функцию, которая обработает сообщение WM_INITDIALOG
Затем вызвать ChooseColor и в аргументе LPCCHOOKPROC передать указатель на эту вашу CallBack-функцию.

При инициализации диалогового окна Windows вызовет вашу функцию, а уж в ней то и будет установка позиции окна.

Внимательно читайте справку. Там все рассказано, но примеров нет. :(
Blood_Magic
Сообщения: 273
Зарегистрирован: 30 июн 2005, 14:53

В поставке Delphi, точно не помню какой версии (5,6,7) есть пример встраивания в OpenDialog или SaveDialog (опять же точно не помню) CheckBox, я думаю кое-что можно там подглядеть.
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
Eugie
Сообщения: 708
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

Вопрос был, можно ли встроить ColorDialog в форму (т.е. как фрейм).
Ответ: нельзя. Если бы это был немодальный диалог, можно было бы динамически заменить тип окна на дочернее, и задать в качестве родителя целевую форму. Даже в этом случае не уверен, что заработает.
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Таки, а почему не залесть в модуль, посмотреть как он создается и написать нечто под себя...
[syntax=Delphi] [/syntax]
Eugie
Сообщения: 708
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

Дык, проблематично залезть внутрь API-шного ChooseColor :)
Насчет нач.позиции: можно через callback, как предложил Наиль, а можно сразу после создания найти окно (FindWindow) и задать его положение (SetWindowPos или MoveWindow).
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Ну на самом деле ColorDialog не такая уж сложная штука, я бы ее для себя написал как надо...

А как решение - можно создать видимось, так сказать зрительный обман что он в форме...
[syntax=Delphi] [/syntax]
Ответить