![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Переместить объект на форме
snake-as © (2007-10-11 15:17:00)Здравствуйте, эксперты.
Подскажите, пожалуйста, как во время выполнения программы перетащить некоторый объект, например Shape и узнать его начальные и конечные координаты.
Буду очень благодарен. Сергей.
AIK (2007-10-11 16:27:00) [1]
> а определить координаты - по MouseUp - конечные, ... блин.
> .. а как же определить начальные -))?
procedure TForm1.Shape1MouseDown(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:=Shape1.BoundsRect;
end;
end;
Leonid Troyanovsky (2007-10-11 16:22:00) [2]
> @!!ex © (11.10.07 16:14) [8]
> просто я против наездов без контрпримера.
Глобальные переменные - MD.
Некузяво мешать свои идентификаторы с дельфийскими.
--
Regards, LVT.
Ping (2007-10-11 16:22:00) [3]не идеальное и с багами
Он так и сделает. И впредь будет делать.
Если наезжаешь, так докажи, приведи свой код.
Все знают, что детские рисунки - это не больше, чем просто детские рисунки. Для этого не надо ходить в картинную галерею.
И заметь - я нигде не наезжал. Я акцентировал вниманиена потенциально "нехороших" местах. Наехал, в данном случае - ты.
@!!ex (2007-10-11 16:14:00) [4]> [5] Leonid Troyanovsky © (11.10.07 16:08)
Да это понятно.
просто я против наездов без контрпримера.
Если наезжаешь, так докажи, приведи свой код.
tytus (2007-10-11 16:13:00) [5]сорри
procedure TForm1.LVSectorMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
LVSector- TListView!
tytus (2007-10-11 16:09:00) [6]procedure TForm1.ListViewMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
LVSector.Perform(WM_SYSCOMMAND,$F012,0);
end;
как видно тут не Shape, но какая разница!
а определить координаты - по MouseUp - конечные, ... блин... а как же определить начальные -))?
Leonid Troyanovsky (2007-10-11 16:08:00) [7]
> AIK © (11.10.07 15:51) [3]
> @!!ex © (11.10.07 15:55) [4]
http://groups.google.com/group/borland.public.delphi.vcl.components.using/msg/f381a3a399b93b01
http://groups.google.com/group/borland.public.delphi.language.delphi.win32/msg/3fde0567b807cac8
--
Regards, LVT.
@!!ex (2007-10-11 15:55:00) [8]> [2] Ping (11.10.07 15:43)
Нормальное решение, не идеальное и с багами, вы можете предложить лучше или просто так наезжаете?
AIK (2007-10-11 15:51:00) [9]Непонял что тебя неустраивает?
Ping (2007-10-11 15:43:00) [10]var x0,y0:integer;
move:boolean;
rec: TRect;
кул...
if move then
кул!...
Скопнул в одном сайте непомню в каком
Это хорошо, что ты забыл. Не ходи туда больше.
AIK (2007-10-11 15:36:00) [11]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Shape1: TShape;
procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Shape1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
var x0,y0:integer;
move:boolean;
rec: TRect;
{$R *.dfm}
procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button<>mbLeft then move:=false
else begin
move:=true;
x0:=x;
y0:=y;
end;
end;
procedure TForm1.Shape1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if move then
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;
end;
procedure TForm1.Shape1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
with Shape1 do begin
setbounds(rec.left+x-x0,rec.top+y-y0,width,height);
move:=false;
end;
end;
end.
Скопнул в одном сайте непомню в каком