Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

icq: 512-765
skype: alexp.frl
По умолчанию

Цитата:
Сообщение от Q15 Посмотреть сообщение
Могу реализовать подобную задачу с помощью DragandDrop
как?
Alex11223 на форуме   Ответить с цитированием
Старый 16.12.2018, 21:12   #3
Q15
Новичок
 
Регистрация: 16.12.2018
Сообщений: 2
Репутация: 10
По умолчанию

Цитата:
Сообщение от 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, 21:37   #4
Terran
Профессионал
 
Аватар для Terran
 
Регистрация: 28.11.2007
Адрес: Беларусь, г.Могилёв
Сообщений: 1,521
Репутация: 547
По умолчанию

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

Код:

...
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 в 21:44. Причина: Подправил код под AlphaControls.
Terran вне форума   Ответить с цитированием
Ответ

Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие изображения с галереи 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 13:07


22:18.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru