ColorDialog
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
-
- Сообщения: 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 вызовет вашу функцию, а уж в ней то и будет установка позиции окна.
Внимательно читайте справку. Там все рассказано, но примеров нет.
Суть в следующем. Все стандартные диалоги Windows (выбор цвета, выбор шрифта и пр.) могут быть вызваны с передачей им некой CallBack-функции.
Надо написать CallBack функцию, которая обработает сообщение WM_INITDIALOG
Затем вызвать ChooseColor и в аргументе LPCCHOOKPROC передать указатель на эту вашу CallBack-функцию.
При инициализации диалогового окна Windows вызовет вашу функцию, а уж в ней то и будет установка позиции окна.
Внимательно читайте справку. Там все рассказано, но примеров нет.

-
- Сообщения: 273
- Зарегистрирован: 30 июн 2005, 14:53
В поставке Delphi, точно не помню какой версии (5,6,7) есть пример встраивания в OpenDialog или SaveDialog (опять же точно не помню) CheckBox, я думаю кое-что можно там подглядеть.
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
Вопрос был, можно ли встроить ColorDialog в форму (т.е. как фрейм).
Ответ: нельзя. Если бы это был немодальный диалог, можно было бы динамически заменить тип окна на дочернее, и задать в качестве родителя целевую форму. Даже в этом случае не уверен, что заработает.
Ответ: нельзя. Если бы это был немодальный диалог, можно было бы динамически заменить тип окна на дочернее, и задать в качестве родителя целевую форму. Даже в этом случае не уверен, что заработает.
Таки, а почему не залесть в модуль, посмотреть как он создается и написать нечто под себя...
[syntax=Delphi] [/syntax]
Дык, проблематично залезть внутрь API-шного ChooseColor 
Насчет нач.позиции: можно через callback, как предложил Наиль, а можно сразу после создания найти окно (FindWindow) и задать его положение (SetWindowPos или MoveWindow).

Насчет нач.позиции: можно через callback, как предложил Наиль, а можно сразу после создания найти окно (FindWindow) и задать его положение (SetWindowPos или MoveWindow).
Ну на самом деле ColorDialog не такая уж сложная штука, я бы ее для себя написал как надо...
А как решение - можно создать видимось, так сказать зрительный обман что он в форме...
А как решение - можно создать видимось, так сказать зрительный обман что он в форме...
[syntax=Delphi] [/syntax]