Урок 40 - Панель быстрого запуска (часть 2/2)
В этом уроке мы доработаем панель быстрого запуска и добавим функцию Drag-and-drop.
Первым мы сделаем перетаскивание файлов. Кинем на форму компонент Image и объявим функцию после ключевого слова private в описании класса Form1:
... private { Private declarations } procedure WmDropFiles( var Msg: TWMDropFiles); message WM_DropFiles; ...Она будет срабатывать когда из системы придет сообщение о перетаскивании какого-нибудь файла на форму программы. Нажимаем комбинацию клавиш Ctrl-Shift-C и появляется шаблон этой функции, заполняем его, но перед этим нужно еще создать глобальные переменные:
CFileName: array[0..MAX_PATH] of Char; // Переменная с именем перетаскиваемого файла F: string; //Это для удобства
procedure TForm1.WmDropFiles(var Msg: TWMDropFiles); var icon: hicon; //Иконка файла iconindex: word; begin try if DragQueryFile(Msg.Drop,0, CfileName, Max_Path)> 0 then //Если перетащили файл begin F:=CfileName; // Конвертируем Array of Char -> String Label1.Caption:=ExtractFileName(F); // Получаем имя файла из его полного пути Msg.Result:=0; end; finally DragFinish(Msg.Drop); //Говорим что приняли файл end; iconindex:=1; //получаем картинку из файла Image1.Picture.Icon.Handle:= ExtractAssociatedIcon(HInstance, Pchar(F), iconIndex); DrawIcon(Canvas.Handle,10,10,icon); //Рисуем картинку end;Еще надо добавит в uses модуль ShellApi и в обработчик OnCreate добавит строчку:
DragAcceptFiles(handle, true); // Включаем режим Drag-and-drop end;Тогда все будет работать. Проверяем:
:)
Осталось только сделать запуск приложения по клику и убрать огранку формы. Кликаем 2 раза на Image и пишем код:
ShellExecute(Form1.Handle, nil, Pchar(F), nil, nil, SW_RESTORE); //Запускаем программу (путь = F)У Form1 свойство BorderStyle на bsNone, убираем огранку, свойство AlphaBlend True и AlphaBlendValue например 150. А также сделаем нашу форму по верх всех окон, свойство FormStyle на fsStayOnTop.
Вот что получилось:
Жмем первый раз |
Жмем второй раз |
Удачи!
Встретимся в следующем уроке!
Добавил(а): Programer | Дата: 2013-05-23 | |
Александр у вас лицензионная версия Delphi ?
|
Добавил(а): Admin | Дата: 2013-05-23 | |
А сам как думаешь?
|
Добавил(а): jinded | Дата: 2013-05-26 | |
Admin скажите, если у вас место где можно спрашивать по программе delphy 7, я бы тут спросил но это не совсем по уроку )
|
Добавил(а): Admin | Дата: 2013-05-26 | |
Skype: mafik2121_rus
|
Добавил(а): alexdudchenko | Дата: 2013-05-29 | |
Здравствуйте, не подскажите пожалуйста а как добавить несколько ярлыков в компонент Panel :?. Спасибо)
|
Добавил(а): Klesh | Дата: 2013-05-29 | |
Вместо переменной CFileName сделать массив размером 2 ([0..1]) и при перетаскивании смотреть, если 1 элемент массива свободен ( = ' ), то записать в первую ячейку путь и загрузить картинку в первый Image, если нет то во вторую и во второй Image. И добавить второй Image, в обработчике OnClick открывать программу из второй ячейки.
|
Добавил(а): igrok | Дата: 2013-10-30 | |
Делаю всё точно так же, даже windows такой же стоит), но при перетаскивании ничего не происходит. Перепроверил 3 раза.
|
Добавил(а): ventura69 | Дата: 2015-03-17 | |
А можно поподробнее о массиве на n компонентов? Пробовал создать массив с 6-го урока, но запутался... С института не дружу с массивами и матрицами, как это ни печально.
|
Добавил(а): ventura69 | Дата: 2015-03-17 | |
Все, до чего дотумкал:
procedure TForm1.WmDropFiles(var Msg: TWMDropFiles);
var
icon: hicon;
iconindex: word;
begin
try
if DragQueryFile(Msg.Drop,0, mas (i), Max_Path)> 0 then
begin
var mas: array[1..2] of string;
i:integer;
begin
mas[i]:=CfileName;
for i:=1 to 2 do
Msg.Result:=0;
end;
finally
DragFinish(Msg.Drop);
end;
iconindex:=1;
for i := 1 to 2 do
... и на этом все. Дальше мысль умерла...
|
Добавил(а): ventura69 | Дата: 2016-09-22 | |
Печально, что хорошая идея захирела: ни поддержки, ни помощи, ни развития нет...
Я ведь азы кодинга с этого сайта брал.
Вот, взгрустнулось, выбрал время и накидал небольшую панельку за час. Можно сказать: на коленке. Выкладываю для любознательных. Писал не ХЕ7. Код не оптимизировал (пусть будет дз для желающих ).
https://yadi.sk/d/YAag_sDDvWujt это ссылочка на я-диск с архивом. В архиве и готовый проект есть, и исходники.
Ковыряйте, кому интересно.
|
No results found.