Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.03.2014, 15:58
Аватар для kuzduk
kuzduk kuzduk вне форума
Прохожий
 
Регистрация: 17.02.2012
Сообщения: 37
Репутация: 10
Восклицание Drag&Drop файлов: Shift - вырезаем, Alt - делаем ярлык. КАК?

Drag&Drop-нуть файлы из своей программы в проводник или из проводника в свою программу можно с помощью вот этих модулей: kuDrag и kuDrop

Скачать Demo можно здесь: http://kuzduk.ru/delphi



Подскажите пожалйста, как допрограммировать чтоб: при перетаскивании при удержании Shift - вырезалось, а при Alt - ярлык содавался?

Последний раз редактировалось kuzduk, 22.03.2024 в 00:08.
Ответить с цитированием
  #2  
Старый 14.03.2014, 00:57
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Очевидно в момент перетаскивания отслеживать состояние клавиш-модификаторов
Код:
...
var
State : TKeyboardState;
...

GetKeyboardState(State);
if ((State[vk_Shift] and 128) <> 0) then ... // Shift 
if ((State[vk_Control] And 128) <> 0) then ... // Ctrl
if ((State[vk_Menu] and 128) <> 0) then ... // Alt

...
можно ещё определить "даунтизьм" левого или правого шифта
Код:
if ((Word(GetKeyState(VK_LSHIFT{VK_RSHIFT})) and $8000) <> 0) then ...
ну а дальше...

Создать ярлык для файла
Код:
 uses ShlObj, ActiveX, ComObj;

procedure CreateShortCut(ShortCutName, Parameters, FileName: string);
var
ShellObject: IUnknown;
ShellLink: IShellLink;
PersistFile: IPersistFile;
FName: WideString;
begin
ShellObject := CreateComObject(CLSID_ShellLink);
ShellLink := ShellObject as IShellLink;
PersistFile := ShellObject as IPersistFile;
with ShellLink do
   begin
     SetArguments(PChar(Parameters));
     SetPath(PChar(FileName));
     SetWorkingDirectory(PChar(extractfilepath(FileName)));
     FName := ShortCutName;
     PersistFile.Save(PWChar(FName), False);
   end;
end;
Отправить файл в корзину
Код:
...
var
Struct: TSHFileOpStruct;
Err: HRESULT;
begin
with Struct do
begin
   Wnd := Handle;
   wFunc := FO_DELETE;
   pFrom := 'c:\1.txt';
   pTo := nil;
   fFlags := FOF_ALLOWUNDO;
   fAnyOperationsAborted := True;
   hNameMappings := nil;
   lpszProgressTitle := nil;
end;

Err := SHFileOperation(Struct);
if Err <> S_OK then ShowMessage(SysErrorMessage(Err));

...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:48.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter