Форум: "Основная";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];
ВнизПеремещение с 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.032 c