Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.26;
Скачать: CL | DM;

Вниз

Перемещение с PageControl на Frame2   Найти похожие ветки 

 
Viktop   (2004-12-04 10:05) [0]

В своём приложении я перемещаю рисунки по форме с помощью следующих процедур:
implementation
{$R *.DFM}
var
 Form1: TForm1;
 x0, y0: integer;
 move: boolean;
 rec: TRect; //хранит параметры картинки

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
 if button<>mbLeft then
   move:=false
 else
 begin
   move:=true;
   x0:=x;
   y0:=y;
   rec:=image1.BoundsRect; //запоминаем контур картинки
 end;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
 if move then
 begin
   Form1.Canvas.DrawFocusRect(rec); //рисуем рамку
   with rec do
   begin
     left:=Left+x-x0;
     top:=Top+y-y0;
     right:=right+x-x0;
     bottom:=bottom+y-y0;
     x0:=x;
     y0:=y; // изменяем координаты
   end;
   Form1.Canvas.DrawFocusRect(rec); // рисуем рамку на новом месте
 end;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
 Form1.Canvas.DrawFocusRect(rec);
 with image1 do begin
   setbounds(rec.left+x-x0,rec.top+y-y0,width,height); //перемещаем картинку
   move:=false;
 end;
end;

А теперь возникла необходимость перемещать компоненты с PageControl на Frame2. Подскажите, что надо изменить в коде.


 
Sun bittern ©   (2004-12-04 10:20) [1]

>> перемещать компоненты с PageControl на Frame2
Не совсем ясно чего нужно. drag&drop?


 
Viktop   (2004-12-04 11:06) [2]

Попробуте этот код и увидите как должно происодить перемещение (точнее у меня будет копирование, но это не столь важно).
В принципе ДА! drag&drop.


 
Sun bittern ©   (2004-12-04 17:31) [3]

В принципе ДА! drag&drop.

Тогда гляньте примеры: %Delphi%\Demos\Docking


 
Viktop   (2004-12-06 04:56) [4]

Это не подходит! В примере там просто фон меняется. А мне надо осуществить Drag&Drop с одного компонента формы на другой


 
Viktop   (2004-12-06 17:48) [5]

Может вопрос непонятен? Могу и попроще. На форме имеются 2 панели (Panel1 и Panel2). На одной из них находится объект Image1. Надо визуально перетащить этот рисунок на другую панель.


 
Sun bittern ©   (2004-12-09 17:45) [6]

>> Это не подходит! В примере там просто фон меняется.

Очень заблужаетесь :)

У всех компонент выставить DragMode = dmAutomatic
У компонент которые могут принимать картинку DockSite = True
У TImage.DragKind = dkDock.

Все!



 
Viktop   (2004-12-10 11:02) [7]

to Sun bittern
А что там (в примере %Delphi%\Demos\Docking) ещё делается?
Если выставить все эти свойства, то:
1. Перемещение происходит не визуально (как указано выше)
2. Картинка перемещается только в левый верхний угол панели
3. Если картинку попробовать кинуть на форму, а не на Panel, то она [картинка] появится в отдельном окне, которое можно закрыть, что не есть хорошо.


 
KSergey ©   (2004-12-10 11:22) [8]

Чтобы сделать визуальное перемещение между WinControl"ами - надо фактически создать окно в размер перемещаемого объекта (TWinControl или какой-нибудь его наследник, панель, например - у нее как раз бордюра нет), лежащее поверх всех, с копией перемещаемого объекта на нем. Его уже и двигать (Left/Top) за мышкой, а не просто на канве рисовать, т.к. это разные окна, канва у них - разная. Ну и в конце окно это прятать, объект - переносить.



Страницы: 1 вся ветка

Текущий архив: 2004.12.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
1-1103086828
Андерсон
2004-12-15 08:00
2004.12.26
Экспорт в Excel буленовское поле


1-1102668654
msm
2004-12-10 11:50
2004.12.26
Проблема с TDateTime


14-1102490694
AlexG
2004-12-08 10:24
2004.12.26
Важно ваше мнение!


1-1103080989
Bobby Digital
2004-12-15 06:23
2004.12.26
MouseMove


3-1101460045
b@mboZe
2004-11-26 12:07
2004.12.26
Утечка памяти в TADODataset.