Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 2
Всего онлайн: 2
Зарегистрировано юзеров: 6358
Комментариев на сайте: 645
Новый юзер: Realtyvaday



Последние комментарии
c
Aqel прокомментировал "Урок 71 - Работа с сжатыми файлами":
GZip псевдоархив, на мой вопрос тоже не отвечают, как распаковать отдельные файлы/папки...
Pingitrus прокомментировал "Урок 71 - Работа с сжатыми файлами":
Есть еще кто нибудь живой на этом сайте, кто сможет помочь? Так то все работает, zip и rar распаковывает, но у меня есть файл dat который сжат GZip, почему то его не удается распаковать или так не получится так как этот файл не является архивом или является?)) пишет ошибку что неверная функция



Мы в соцсетях
c
Delphi
Урок 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;
   Тогда все будет работать. Проверяем:

Drag-and-drop


Drag-and-drop


Drag-and-drop
:)


   Осталось только сделать запуск приложения по клику и убрать огранку формы. Кликаем 2 раза на Image и пишем код:
	ShellExecute(Form1.Handle, nil, Pchar(F), nil, nil, SW_RESTORE); //Запускаем программу (путь = F)
   У Form1 свойство BorderStyle на bsNone, убираем огранку, свойство AlphaBlend True и AlphaBlendValue например 150. А также сделаем нашу форму по верх всех окон, свойство FormStyle на fsStayOnTop.

   Вот что получилось:

Показана
Жмем первый раз
Спрятана
Жмем второй раз


Удачи!
Встретимся в следующем уроке!


Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 17 Мая 2013
Просмотров: 10266

Урок 39 - Панель быстрого запуска (часть 1/2)

Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.



аватар Добавил: Programer [Новичок] Дата: 2013-05-23
Александр у вас лицензионная версия Delphi ?




аватар Добавил: Admin [Сэнсэй] vk.com/savelev_a_y Дата: 2013-05-23
А сам как думаешь?




аватар Добавил: jinded [Новичок] Дата: 2013-05-26
Admin скажите, если у вас место где можно спрашивать по программе delphy 7, я бы тут спросил но это не совсем по уроку )




аватар Добавил: Admin [Сэнсэй] vk.com/savelev_a_y Дата: 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 это ссылочка на я-диск с архивом. В архиве и готовый проект есть, и исходники. Ковыряйте, кому интересно.