![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перетаскивание изображения как в 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;