Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2011, 21:46   #1
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию Как запомнить координаты Image?

Здравствуйте.
Подскажите пожалуйста, как сделать, чтобы при нажатии на клавишу 'V' картинка (Image1) возвращалась в координаты (X,Y), где последним был сделан клик курсором?

Вот пример кода, при запуске программы картинка (Image1) двигается по таймеру, и при клике мышкой она перемещается в координаты курсора, и дальше продолжает двигаться...
Надо чтобы при нажатии клавиши 'V' картинка возвращалась в исходную позицию.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, pngimage, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Timer1: TTimer;
    procedure FormClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
 X,Y:Integer;
implementation

{$R *.dfm}

procedure TForm1.FormClick(Sender: TObject);
var
 Pos: TPoint;

begin
  GetCursorPos(Pos);
   Image1.Left:= (Pos.X-38)- Form1.Left;
   Image1.Top:= (Pos.y-40) - Form1.top;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
 var
 Pos: TPoint;
  begin
if  Key= Ord('V') then begin
 Image1.Left:= (Pos.X);
 Image1.Top:= (Pos.Y);
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Image1.Left:=  Image1.Left+1;
end;

end.

Последний раз редактировалось werrey; 21.07.2011 в 21:49.
werrey вне форума Ответить с цитированием
Старый 21.07.2011, 22:18   #2
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Timer1: TTimer;
    procedure FormClick(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Timer1Timer(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
   X0,Y0,X,Y:Integer;

implementation

{$R *.dfm}

procedure TForm1.FormClick(Sender: TObject);
var
 Pos: TPoint;
begin
  GetCursorPos(Pos);

   Image1.Left:= (Pos.X-38)- Form1.Left;
   Image1.Top:= (Pos.y-40) - Form1.top;
end;


procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
 Pos: TPoint;
  begin

if  Key= Ord('V') then begin
 Image1.Left:=X0;
 Image1.Top:=Y0;
end;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
Image1.Left:=  Image1.Left+1;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
X0:=X; // вот тут был последний клик
Y0:=Y;
end;

end.
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Старый 21.07.2011, 22:27   #3
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию

Что-то не работает Ваш код, при нажатии на клавишу 'v' картинка не возвращается в последнюю по клику позицию, точнее вообще никак не реагирует(
werrey вне форума Ответить с цитированием
Старый 21.07.2011, 22:48   #4
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

почему у меня работает?
Вложения
Тип файла: rar click.rar (206.0 Кб, 41 просмотров)
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Старый 21.07.2011, 23:08   #5
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию

Спасибо Вам большое, вроде разобрался.
werrey вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить текущие координаты курсора? Eros Общие вопросы C/C++ 1 19.05.2010 00:00
как получить координаты курсора Juffin Общие вопросы Delphi 2 12.05.2010 20:05
как узнать координаты курсора nikleb Общие вопросы C/C++ 2 29.10.2008 23:36
как определить координаты курсора snaem Общие вопросы .NET 0 23.04.2008 22:27
Координаты курсора Haster Win Api 8 06.08.2007 12:04