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

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

Перемещение компонента по форме [D2, D3, D4, D5, D6, D7, Win95/98, WinME, NT4, Win2k, WinXP]


BFG9k ©   (2005-08-01 17:49:00) 

Небходимо перетаскивать компонент (в моем случае это тоже форма)с помощью мыши по форме.

Сделал так, чтобы компонент перетаскивался мышью за всю клиентскую часть.

Но при этом мне нужно, чтобы содержимое компонента отображалось при его перетаскивании (а не только рамка). А также сделать ограничения при перетаскивании (например чтобы левый край компонента не заходил за левый край формы и т.д.).

Как бы мне этого добиться, желательно без мерцания ?

Спасибо.


Mx   (2005-08-03 18:44:00) [1]


> BFG9k ©   (03.08.05 16:49) [4]

Ой, я тебя совсем неправильно понял!


BFG9k   (2005-08-03 16:49:00) [2]

Вот так надо.


SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, 1, nil,  SPIF_SENDCHANGE)


Только происходят изменения во всей системе. Как бы применить это только для конкретного окна ?


BFG9k   (2005-08-03 14:09:00) [3]


> Я рисовал на экране, то бишь через API с GetDC(0)


Сложновато. На самом деле должен быть способ намного проще (в виндовсе можно настроить, чтобы содержимое всех окон отображалось при перетаскивании).
Например что-то в этом роде:

  B:=True;
  SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, 0, @B,  SPIF_SENDCHANGE)

Только у меня не работает почему-то :(


Mx   (2005-08-01 18:16:00) [4]

Да, забыл, чтобы ограничить диапазон движения курсора используй ClipCursor, а чтобы компонент не рисовался за краями, то для DC, полученного через GetDC(0), надо использовать IntersectClipRect.


Mx   (2005-08-01 18:12:00) [5]

Я рисовал на экране, то бишь через API с GetDC(0)


Наверх

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