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

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

Перетаскивание изображения как в ACDsee [D2, D3, D4, D5, D6, D7, Win95/98, WinME, NT4, Win2k, WinXP]


BFG9k ©   (2005-08-03 14:43:00) 

Реализовываю сабж. Использую форму с TFastImg как дочерний компонент основной формы.Не получается сделать так, чтобы содержимое окна отображалось при перетаскивании. Также не получается сделать,чтобы изображение не уходило за границы главного окна при перетаскивании (left>=0 и т.д.), контролировать это в OnMouseMove не проходит...


BFG9k   (2005-08-05 16:21:00) [1]

Я тоже читал эту статью :)

В общем я кое-что сделал, если кому интересно :

1. Отображение содержимого формы при перетаскивании:


//выставляем для ВСЕЙ системы :(
FormCreate...
  SystemParametersInfo(SPI_GETDRAGFULLWINDOWS,0,@FDragFull,0);
  if not FDragFull then
 SystemParametersInfo(SPI_SETDRAGFULLWINDOWS,1,nil,SPIF_SENDCHANGE);

...
//потом возвращаем, если не было поставлено
FormDestroy...
if not FDragFull then
   SystemParametersInfo(SPI_SETDRAGFULLWINDOWS,0,nil,SPIF_SENDCHANGE);

Не знаю как делать для одного конкретного окна, ну ничего - авось пользователь не просечет :)

2. Чтобы изображение никуда не уходило, обрабатываем сообщение WM_WINDOWPOSCHANGING


Valera   (2005-08-05 01:12:00) [2]

Еще можно попробовать:

B: Bool; //Объявите B где-нибудь после implementation
В FormCreate включите следующее

B := True;
SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, 0, @B, SPIF_SENDCHANGE)
// Не проверял


Valera   (2005-08-05 00:48:00) [3]

Попробуй реализовать алгоритм с помощью ClipCursor(), чтобы восстановить используй : ClipCursor(nil); C TFastImg не работал, попробуй Graphic32;


Наверх

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