Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Редактор форм


Страницы:   1 2

ANTPro ©   (2007-01-30 13:01:00) 

Как реализовать на WinAPI перетаскивание контролов(EditBox, Button...)?


ANTPro   (2007-02-09 16:50:00) [1]

Еще раз пасиба всем за саб класс!
Теперь все переделывать :(


ANTPro   (2007-02-04 21:12:00) [2]

Перетаскивание заработало, но не хотят таскаться Static Text и ComboBox.
Как заставить их реагировать на события мыши?


GrayFace   (2007-02-01 16:02:00) [3]

А какие клавиши? Речь, видимо, о C++? В MSDN есть упомянания о методе некоторых объектов C++ PreTranslateMessage, но такой функции API не видно.


tesseract   (2007-02-01 13:25:00) [4]


>  А как иначе можно сообщения ловить? Не делать же хук для
> этого. Или ты в цикле выборки сообщений это смотрел?


Перекрывал WindowProc - не ловяться клавиши, только через PreTranslateMessage.


GrayFace   (2007-02-01 13:16:00) [5]

tesseract ©   (31.01.07 22:08) [26]
Элементарным, из функции обработки сообщений возвращаем признак того, что сообщение обработано.

Но если мы перекрываем WndProc, то от нас контрол так ничего не скроет. А как иначе можно сообщения ловить? Не делать же хук для этого. Или ты в цикле выборки сообщений это смотрел?


tesseract   (2007-01-31 22:08:00) [6]

>
> Каким, кстати, образом он может WM_KEYDOWN глушить?


Элементарным, из функции обработки сообщений возвращаем признак того, что сообщение обработано. большинство элементов управления много чего глушит. Столкнулся при программировании под WinCE=Win95.


ANTPro   (2007-01-31 21:51:00) [7]

> [24] Amoeba ©   (31.01.07 15:31)

Меня никто не спрашивает. Да и экспы получу много : )


> GrayFace ©  
> tesseract ©  

Спасибо за ответы.


Amoeba   (2007-01-31 15:31:00) [8]


> ANTPro ©   (30.01.07 13:01)
>
> Как реализовать на WinAPI перетаскивание контролов(EditBox,
>  Button...)?

Ну и приключений ты себе на одно место ищешь. А стоит ли сия овчинка выделки???


GrayFace   (2007-01-31 12:55:00) [9]

tesseract ©   (30.01.07 22:56) [18]
> Да, конечно WM_LBUTTONDOWN. Для уголков надо менять параметр
> $f012.

Точно не помню, вроде не глушит.


Каким, кстати, образом он может WM_KEYDOWN глушить?

tesseract ©   (30.01.07 22:56) [18]
> $f012

Есть константа с говорящим именем для такой команды.


Есть SC_MOVE = $f010, он немного не так работает. Для уголков константы тоже не описаны - они, помнится, между $f000 и $f010. Могу привести, если надо будет.

tesseract ©   (31.01.07 10:23) [22]
Описание функции PreTranslateMessage? Оно в хелпе от D7 есть, в Turbo Delphi почему-то нет.

В D7 тоже нет. И в Index'е раздела Platform SDK в MSDN нет. И в Windows.pas не объявлен...


tesseract   (2007-01-31 10:23:00) [10]


> Там я буду долго искать.


Описание функции PreTranslateMessage? Оно в хелпе от D7 есть, в Turbo Delphi почему-то нет. Просто в MSDN есть с примерами. А так - обычная функция обработки сообщений. Не забываем  главное дальше управление передавать, а то прога повиснет.


ANTPro   (2007-01-31 00:05:00) [11]

> [20] tesseract ©   (30.01.07 23:11)
> MSDN

Там я буду долго искать. Да и все возможные реализации врядли найду.

Сабкласс попробую, может, что и получится...


tesseract   (2007-01-30 23:11:00) [12]

> Вот это меня и беспокоит. Можно по-подробней?


MSDN там подробно. Эта функция вызывается перед всеми функциями обработки сообщений. Например у меня половина программы под  WinCE на ней базировалась (нужен был перехват в Edit нажатия аппаратных клавиш).
Но там свои приколы, например одно сообщение получают все - от предка до потомка, если его не глушануть.


ANTPro   (2007-01-30 23:01:00) [13]

> [15] GrayFace ©   (30.01.07 19:59)
> Точно так же и всякие изменения размеров за уголки.

Уголков у меня нет. Я сделал тупо через стили. ИМХО так даже лучше.


> [16] tesseract ©   (30.01.07 21:31)
> WM_KEYDOWN edit заглушит, если PreTranslateMessage не использовать,
> а это весьма нерекомендуемая операция.

Вот это меня и беспокоит. Можно по-подробней?


tesseract   (2007-01-30 22:56:00) [14]

> Да, конечно WM_LBUTTONDOWN. Для уголков надо менять параметр
> $f012.


Точно не помню, вроде не глушит.


> MagicNumber
> Че это?


> $f012


Есть константа с говорящим именем для такой команды.

ЗЫ: А непроще сделать как все ? Использовать не элементы управления, а "битмапы"? Так работают редакторы ресурсов, и 1с например.


GrayFace   (2007-01-30 22:16:00) [15]

tesseract ©   (30.01.07 21:31) [16]
Да, конечно WM_LBUTTONDOWN. Для уголков надо менять параметр $f012.

tesseract ©   (30.01.07 21:31) [16]
-10, форма на WinApi отстуствует.

Как и связь этого факта с моим постом.

tesseract ©   (30.01.07 21:31) [16]
MagicNumber

Че это?

tesseract ©   (30.01.07 21:31) [16]
Не прекручивай, ListView вообще-то к базовым элементам управления не относиться. А ты позиционирование сделай и сохранение/восстановление параметров при закрытии приложения Без сохранения информации об элементе управления.

Согласен.


tesseract   (2007-01-30 21:31:00) [16]

> [15] GrayFace ©   (30.01.07 19:59)



> WM_KEYDOWN:


Протрезвей и посмотри тему. WM_KEYDOWN edit заглушит, если PreTranslateMessage не использовать, а это весьма нерекомендуемая операция.


> А у ListView Items запоминать? А и т.п.?



> P.S. Перетаскивание делается как и с формой:

-10, форма на WinApi отстуствует. Про этот MagicNumber всем известно.

Не прекручивай, ListView вообще-то к базовым элементам управления не относиться. А ты позиционирование сделай и сохранение/восстановление параметров при закрытии приложения Без сохранения информации об элементе управления.


> Точно так же и всякие изменения размеров за уголки.


ГМ, вот уголки с таким кодом точно не прокатят.


GrayFace   (2007-01-30 19:59:00) [17]

tesseract ©   (30.01.07 16:02) [4]
Угу, а курсорчки подрисовать?  а с DnD поиграться?

Зачем??

ANTPro ©   (30.01.07 16:31) [8]
Неахота сабклассить, хотя через предка можно достать по WM_NOTIFY. Но может есть еще варианты?

Сабклассить надо все, это не проблема.

tesseract ©   (30.01.07 16:54) [10]
?? Структуры вспомагательные по которым окна создаются рулят по любому.

А у ListView Items запоминать? А и т.п.?

P.S. Перетаскивание делается как и с формой:
WM_KEYDOWN: SendMessage(Handle, WM_SYSCOMMAND, $f012, 0);
Точно так же и всякие изменения размеров за уголки.


ANTPro   (2007-01-30 17:34:00) [18]

> [13] tesseract ©   (30.01.07 17:24)
> Drag & Drop

: ) Я не об этом, что значит "поиграться" и через какие мессаги?


tesseract   (2007-01-30 17:24:00) [19]


> Что под этим подразумевается?


Drag & Drop


ANTPro   (2007-01-30 17:11:00) [20]

> [9] DVM ©   (30.01.07 16:42)
> Это же не сложно. Охота-ноохота, а придется.

Получится не универсально, хотя если нет других вариантов, то поробую


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо