Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.10.2011, 03:17
Demonuka Demonuka вне форума
Новичок
 
Регистрация: 10.05.2011
Адрес: г. Смоленск
Сообщения: 55
Версия Delphi: 7
Репутация: 10
Восклицание Проблема с ClientToParent

Есть форма (Form1), на ней панель (Panel1), на панели картинка, загруженная в имэйдж (Image1). Задача- таскать имэйдж по панели. Для этого пересчитываю координаты имэйджа:
Код:
procedure TForm1.ImMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
Po:TPoint;
begin
if dvig=true then begin
Po:=ClientToParent(point(x,y));
  Im[i].Left:=Po.X;
  Im[i].Top:=Po.Y;
  end;
end;
И не работает...
Ответить с цитированием
  #2  
Старый 05.10.2011, 03:32
Demonuka Demonuka вне форума
Новичок
 
Регистрация: 10.05.2011
Адрес: г. Смоленск
Сообщения: 55
Версия Delphi: 7
Репутация: 10
По умолчанию

Сори за неточность....имэйдж не Image1, а Im[i].
Ответить с цитированием
  #3  
Старый 05.10.2011, 06:18
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

можно так
PHP код:
procedure TForm1.Image1MouseMove(SenderTObjectShiftTShiftStateX,
  
YInteger);
var
  
Po:TPoint;
  
whoTImage;
begin
  who 
:= (Sender as TImage);

  if 
who.Tag <> 1 then Exit;

//  Po:= (Sender as TImage).ClientToParent(point(x,y));
  
Po := who.Parent.ScreenToClient(who.ClientToScreen(point(x,y)));

  
who.Left:=Po.who.Width div 2;
  
who.Top:=Po.who.Height div 2;
end;

procedure TForm1.Image1MouseDown(SenderTObjectButtonTMouseButton;
  
ShiftTShiftStateXYInteger);
begin
  
(Sender as TImage).Tag := 1;
end;

procedure TForm1.Image1MouseUp(SenderTObjectButtonTMouseButton;
  
ShiftTShiftStateXYInteger);
begin
  
(Sender as TImage).Tag := 0;
end
Ответить с цитированием
  #4  
Старый 05.10.2011, 06:48
Lucky192 Lucky192 вне форума
Прохожий
 
Регистрация: 04.10.2011
Сообщения: 28
Репутация: 1351
По умолчанию

Цитата:
Сообщение от Demonuka
Есть форма (Form1), на ней панель (Panel1), на панели картинка, загруженная в имэйдж (Image1). Задача- таскать имэйдж по панели. Для этого пересчитываю координаты имэйджа:
И не работает...

И правильно что не работает. Координаты получаете в системе Form1 и вызываете TForm1.ClientToParent. Т.е. переводите их в систему родителя Form1. А нужно в систему Panel1.

В таких случаях лучше вызывать сначала Form1.ClientToScreen, а затем Image1.Parent.ScreenToClient. И получите координаты в системе родителя Image1, что и нужно...
Ответить с цитированием
  #5  
Старый 05.10.2011, 23:37
Demonuka Demonuka вне форума
Новичок
 
Регистрация: 10.05.2011
Адрес: г. Смоленск
Сообщения: 55
Версия Delphi: 7
Репутация: 10
По умолчанию

Спасибо, Pyro..)) Ты крут..)) И тебе Lucky...Ты тоже прав..))
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:21.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025