Witam.
Istnieje możliwość aby przez metodę drag and drop , po przeciągnięciu z windowsa do programu na np panel otrzymać lokalizację pliku?
Proszę o pomoc
0
0
http://4programmers.net/Forum/Delphi_Pascal/128312-Drag_and_drop?p=466070#id466070 i wiele innych na forum...
0
Ja tylko dodam, że przy właczonym UAC przeciągnie na okno może nie działać. Należy wykryć czy system operacyjny jest równy bądź wyższy wersją od Windows Vista (kod na to spokojnie do wygooglowania na ogromnej ilości stron www) i w takim przypadku użyć takiego kodu, a później już normalnie możemy obsłużyć komunikat WM_DROPFILES.
procedure SetDragAndDropOnSystemsWIthUAC(Wnd : HWND; IsEnabled : boolean);
type
TChangeWindowMessageFilter = function(Msg : Cardinal; Action : Word) : Bool; stdcall;
const
Msg_Add = 1;
WM_COPYGLOBALDATA = $49;
var
DllHandle : THandle;
ChangeWindowMessageFilter : TChangeWindowMessageFilter;
begin
DllHandle := LoadLibrary('user32.dll');
if DllHandle > 0 then
begin
ChangeWindowMessageFilter := GetProcAddress(DllHandle, 'ChangeWindowMessageFilter');
if Assigned(ChangeWindowMessageFilter) then
begin
DragAcceptFiles(Wnd, IsEnabled);
ChangeWindowMessageFilter(WM_DROPFILES, Msg_Add);
ChangeWindowMessageFilter(WM_COPYGLOBALDATA, Msg_Add);
end;
end;
end;