![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
И снова Drag&Drop [D5, WinXP]
cerber1 © (2004-11-29 23:45:00)Я понимаю что может уже тривиально, но как с помощью Drag&Drop перетаскивать Tshape по Tform?. Просьба предоставить рабочий(проверенный) код
easy (2004-12-01 00:31:00) [1]
> [3]
тык вам шашечки или ехать?..
Style (2004-11-30 23:15:00) [2]Установи Shape1.DragMode := dmAutomatic;
и добавь на форму следующий код.
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := true;
end;
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
Shape1.Left := x;
Shape1.Top := y;
end;
> И в догонку:
> почему у объектов класса Tshape нет хендла?
потому что это не TWinControl!
cerber1 (2004-11-30 22:41:00) [3]И в догонку:
почему у объектов класса Tshape нет хендла?
cerber1 (2004-11-30 22:38:00) [4]Я наверно не совсем жирными написал:
с помощью Drag&Drop
ибо предложенный способ мною уже давно реализован.
VMcL (2004-11-30 07:24:00) [5]>> easy © (30.11.04 00:04) [1]
Только downX и downY лучше, наверное, объявить как поле класса TForm1.
easy (2004-11-30 00:04:00) [6]
var
downX,downY:integer;
procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
downX:= X;
downY:= Y;
end;
procedure TForm1.Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (ssLeft in Shift) then
with Shape1 do begin
Left := X-downX+Left;
Top := Y-downY+Top;
end;
end;