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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2014, 19:46   #1
Evil-Racer
Пользователь
 
Регистрация: 03.11.2009
Сообщений: 10
Вопрос Drag and Drop, TImage и ScrollBox

Здравствуйте уважаемые. Сразу оговорюсь, много чего нагуглил, но мой попрос это не решило.

Вопрос такой:

На форме имеется следующее
ScrollBox1 внутри которого есть ScrollBox1a и ScrollBox1b. На ScrollBox1а лежит картинка Image1. Задача, посредством драг'н'дроп сделать возможность перетаскивать имэйдж с ScrollBox1а в ScrollBox1b и обратно, но при этом, изображение не должно перемещаться на просто ScrollBox1.

Алсо, есть ScrollBox2, который лежит сам по себе на форме. Так вот, этот имейдж должен еще уметь перемещаться на него. А так же важно, чтоб имейдж сохранил возможность перемещаться в пределах бокса где он лежит.

Теперь тупо, по-русски, хочу рисунок таскать с места на место в пределах бокса (это реализовал), иметь возможность перекинуть из бокса А в бокс Б и там же иметь возможность таскать его по боксу. И перекидывать вобще в левый бокс и там же елозить его.

Как мне это сделать?!
Evil-Racer вне форума Ответить с цитированием
Старый 16.05.2014, 20:12   #2
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Цитата:
Как мне это сделать?!
Меняй Parent.
doktor255 вне форума Ответить с цитированием
Старый 17.05.2014, 19:06   #3
Evil-Racer
Пользователь
 
Регистрация: 03.11.2009
Сообщений: 10
По умолчанию

Реализовал. Но тут возник вопрос другой, как присвоить ему парента напрямую из Sender (если правильно понял, то сендер это и есть объект, который принемает). То есть чтоб сендер стал парентом имэйджа?

Тупой вопрос, разобрался...

Последний раз редактировалось Evil-Racer; 17.05.2014 в 19:20.
Evil-Racer вне форума Ответить с цитированием
Старый 19.05.2014, 21:24   #4
Evil-Racer
Пользователь
 
Регистрация: 03.11.2009
Сообщений: 10
По умолчанию

Люди) А вообще реально из TImage получить путь, из которого загрузили Picture?

И еще вопрос. На панели несколько изображений, нажав на любое правой кнопкой запускается вот это:
procedure TfEdit.PreviewAtPanelRightClick(Sen der: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
По сути это OnMouseDown

Мне надо из сендера получить координаты Top и Left, но почему то не могу получитью когда делаю watch то компилятор тупо перепрыгивает этот участок, а значение остается 0.
Получаю так:
t:=TImage(sender).Top;

Что делаю не правильно?

На скрине в ватче видно что TImage(sender).Top имеет значение (правильное), но оно не присваевается
Изображения
Тип файла: jpg Безымянный.jpg (64.6 Кб, 122 просмотров)

Последний раз редактировалось Evil-Racer; 19.05.2014 в 22:16.
Evil-Racer вне форума Ответить с цитированием
Старый 20.05.2014, 09:23   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Что делаю не правильно?
Надо читать и анализировать все сообщения компилятора, а не только Error.
Цитата:
[Hint] anketaeditor.pas(107): Value assigned to 'f' never used
если оно не ненужно, то зачем тратить время и записывать.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 20.05.2014, 18:23   #6
Evil-Racer
Пользователь
 
Регистрация: 03.11.2009
Сообщений: 10
По умолчанию

Не понял о чем Ваш пост, и вобще мне ли. У меня компилятор не дает никаких варнингов, эрроров и хинтов. Все работает, кроме того, что TImage(sender).Top не отдает значения.

Кстати,
procedure TfEdit.PreviewAtPanelRightClick(Sen der: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
привязана к ДИНАМИЧЕСКИ созданному имейджу. Мож проблема в этом?
Evil-Racer вне форума Ответить с цитированием
Старый 20.05.2014, 18:36   #7
FleXik
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 770
По умолчанию

может я и не в тему напишу (т.к почти вообще ничего не понял), но есть компонент Drag&Drop -> http://melander.dk/delphi/dragdrop/ я его сам почти во всех проэктах использую. Evil-Racer, пробуй, возможно он тебе поможет, к тому же в архиве с компонентом лежит демка...
FleXik вне форума Ответить с цитированием
Старый 20.05.2014, 19:01   #8
Evil-Racer
Пользователь
 
Регистрация: 03.11.2009
Сообщений: 10
По умолчанию

FleXik спасибо, но не то.

Пытаюсь изловчиться так:
s:=(Sender as TComponent).Name;
t:=(FindComponent(s) as TImage).Top;

имя получаю, t не присваевается.. =(

Последний раз редактировалось Evil-Racer; 20.05.2014 в 19:03.
Evil-Racer вне форума Ответить с цитированием
Старый 20.05.2014, 19:58   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Дальше в коде процедуры к этому пресловутому t есть обращение? И покажите весь код процедуры
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.05.2014, 20:20   #10
Evil-Racer
Пользователь
 
Регистрация: 03.11.2009
Сообщений: 10
По умолчанию

Да, было обращение. Но уже не важно.
Реализовал так:
При динамическом создании обзывал имейдж как 'xImg'+(i) и параллельно вел двухмерный массив, где a[i][1]=top а[i][2] соответственно Left
В процедурке
s:=(Sender as TComponent).Name;
Delete(s, 1,4);
i:=StrToInt(s);
и дальше работал с массивом..., так оказалось проще))
Evil-Racer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Drag & Drop Проводник => ScrollBox iLnes Общие вопросы Delphi 4 07.03.2012 22:32
Выбор TImage в ScrollBox mrCloud Общие вопросы Delphi 1 13.05.2011 23:10
drag and drop kelty Помощь студентам 0 11.09.2009 23:00
Drag and Drop nusik Общие вопросы C/C++ 2 09.07.2009 11:09
Нужна помощь (Drag-And-Drop & Drag-Abd-Dock)) Arkuz Общие вопросы Delphi 1 18.04.2009 00:15