![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Drag&Drop [D6, WinXP]
ALEIIIKA © (2004-07-14 08:56:00)Столкнулся со следующей проблемой: есть две формы, на каждой расположено по TImage, в которых нарисована таблица, обе формы одного приложения и обе видимы.
Проблема заключается в следующем: нужно поменять информацию в ячейках, следующим способом: нужную ячейку в одной форме выбрать нажав левую кнопку мыши и тащить на другую форму и в нужном месте отпустить.
В процессе программирования следующее:
нажатие и перетаскивание программируется легко, а вот вторая форма не обрабатывает перемещение над ней мыши (так как не активна) до момента пока не станет активна (то есть пока над ней не отпущу кнопку).
Пробовал использоватьDragDropиDragOver, но т.к. перемещение ячеек может быть не только между формами, но и на одной из форм, реализация этого не получается.
Какими еще вариантами можно реализовать сие действие! Всем спасибо.
ALEIIIKA (2004-07-14 13:57:00) [1]Все разобрался на второй форме рисовалось все на форме а не на Image, поэтому Drag&Drop не работал. Всем спасибо.
ALEIIIKA (2004-07-14 13:27:00) [2]Таблица рисуется в Image (StringGrid - не подходит НИ КАК)
IXT (2004-07-14 12:39:00) [3]А я не понял, причем тут TImage и таблица?
MBo (2004-07-14 12:32:00) [4]OnDragDrop/Over все это решает. Непонятно, в чем заморочки.
ALEIIIKA (2004-07-14 12:05:00) [5]Так работает я знаю, но мне надо то чтобы не только с формы на форму, а примерно вот так (Образная запись):
c Form1.image1(X, Y) на Form2.image1(X1, Y1)
Form2.image1(X, Y) -> Form1.image1(X1, Y1)
Form1.image1(X, Y) -> Form1.image1(X1, Y1)
Form2.image1(X, Y) -> Form2.image1(X1, Y1)
Достаточно такого алгоритма работы
OnMouseDown ( Form1.image1(X, Y) ) // здесь легко даеются X и Y
OnMouseUp ( Form2.image1(X1, Y1) ) // а вот здесь их не получить.
MBo (2004-07-14 09:12:00) [6]Не вижу проблем - чудесно работает перетаскивание с Label1 первой формы и Label2 второй формы на Label1 второй:
procedure TForm2.Label1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept:=Source is TLabel;
end;
procedure TForm2.Label1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
Caption:=IntToStr(GetTickCount)+TControl(Source).Name;
end;