Форум: "Основная";
Текущий архив: 2003.08.07;
Скачать: [xml.tar.bz2];
ВнизDrag&Drop with my Image Найти похожие ветки
← →
Fiend (2003-07-23 15:24) [0]Здрасте Уважаемые!
понадобилось мне сделать перетаскивание элеменотов окна способом Drag&Drop. Сделалось. Но вот потом у пользователя появилась мечта видеть во время перетаскивания объекта евоенное изображение. Нашёл пример - сделал. Но есть казус: изображение показывается только над теми контролами, у которых в стиле присутствует csDisplayDragImage.
У всех контролов его нет, потому надо программно устанавливать. И как то мне не очень нравится технология. у меня просто очень много окон в программе и над любым из них может происходить перетаскивание. Это что же в каждом окне, например при его создании, всем контролам менять стиль? как то некрасиво.
Может есть что то более изящьное?
Подскажите пожалуйста!!!
← →
Набережных С. (2003-07-23 19:24) [1]На вскидку:
TImgDragObject = class(TDragObjectEx)
private
function GetControlAtMousePos: TControl;
protected
procedure WndProc(var Msg: TMessage); override;
end;
function TImgDragObject.GetControlAtMousePos: TControl;
var
P: TPoint;
Wnd: HWND;
WinControl: TWinControl;
begin
Result:=nil;
GetCursorPos(P);
Wnd:=WindowFromPoint(P);
if Wnd <> 0 then
begin
WinControl:=FindControl(Wnd);
if WinControl <> nil then
begin
P:=WinControl.ScreenToClient(P);
Result:=WinControl.ControlAtPos(P, true, false);
if Result = nil then Result:=WinControl;
end;
end;
end;
procedure TImgDragObject.WndProc(var Msg: TMessage);
var
Control: TControl;
Stl: TControlStyle;
begin
Control:=GetControlAtMousePos;
try
if Control <> nil then
begin
Stl:=Control.ControlStyle;
Control.ControlStyle:=Stl + [csDisplayDragImage];
end;
inherited;
finally
if Control <> nil then Control.ControlStyle:=Stl;
end;
end;
Тестируй и дорабатывай сам.
← →
Набережных С. (2003-07-23 19:30) [2]Да, и в WndProc можно , пожалуй, добавить провеку на WM_MOUSEMOVE и если не оно, то просто inherited
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.08.07;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.008 c