Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2018, 18:52   #1
Q15
 
Регистрация: 16.12.2018
Сообщений: 3
По умолчанию Открытие изображения перетаскиванием в программу

Доброго времени суток. Проблема следующая:
На форме есть несколько компонентов TImage1, TImage2, TImage3 и т.д. Как реализовать открытие изображения в компонентах путем перетаскивания самой картинки с рабочего стола в программу. Причем каждая картинка должна открываться в том компоненте TImage, на который ее собственно перетащили. Могу реализовать подобную задачу с помощью DragandDrop, но чтоб именно картинка открывалась в том компоненте, на который ее перетащили, не получается.
Q15 вне форума Ответить с цитированием
Старый 16.12.2018, 19:04   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от Q15 Посмотреть сообщение
Могу реализовать подобную задачу с помощью DragandDrop
как?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 16.12.2018, 20:12   #3
Q15
 
Регистрация: 16.12.2018
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
как?
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle, True);
end;


procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
CFileName: array [0 .. MAX_PATH] of char;
begin
  try
  If DragQueryFile(Msg.Drop, 0, CFileName, MAX_PATH) > 0 then
  // Получаем путь к файлу и открываем его
  begin
  if ExtractFileExt(CFileName) = '.jpg' then
  Form1.sImage1.Picture.LoadFromFile(CFileName);
  end;
  finally
  DragFinish(Msg.Drop); // отпустить файл
  end;
end;

Этот код открывает изображение в sImage1. Мне нужно, чтобы открывал в зависимости от того, на какой из компонентов я кидаю картинку (например, sImage3)
Q15 вне форума Ответить с цитированием
Старый 16.12.2018, 20:37   #4
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Доработайте код:

Код:
...
var
  Control: TControl;
...
  if ExtractFileExt(CFileName) = '.jpg' then
  begin
    Control := ControlAtPos(ScreenToClient(Mouse.CursorPos), false);
    if (Control is TsImage) then
      (Control as TsImage).Picture.LoadFromFile(CFileName);
  end;
Всегда рад помочь!

Последний раз редактировалось Terran; 16.12.2018 в 20:44. Причина: Подправил код под AlphaControls.
Terran вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие изображения с галереи vadim23409 Мультимедиа в Delphi 6 09.05.2014 12:03
Открытие изображения в полном размере в новом окне. HTML messiman HTML и CSS 1 30.03.2014 01:28
Проблема с перетаскиванием формы в Firemonkey arxlex Общие вопросы Delphi 2 16.04.2012 04:36
Открытие изображения в виде массива double-int Помощь студентам 1 12.04.2011 09:46
Открытие изображения по пути хранящегося в поле таблицы ? DenProx Microsoft Office Access 7 25.01.2010 12:07