Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.11;
Скачать: CL | DM;

Вниз

ClientToScreen;   Найти похожие ветки 

 
$Hic0 ©   (2003-07-28 17:10) [0]

В общем такое дело... есть код...


procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var p : TPoint;
begin
p.x:=x;
p.y:=y;
p:=Image1.ClientToScreen(p);
Label1.Caption:=IntToStr(p.x)+";"+IntToStr(p.y);
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Label2.Caption:=IntToStr(x)+";"+IntToStr(y);
end;


ClientToScreen сильно врет, или я что-то не так делаю, но после того как курсор входит в область Image1, координаты полученные с помощью полученных таким образом от настоящих, примерно на пару сотен пикселей. Конечно скорее всего я что-то не так делаю, но что? :)
Заране спасибо!


 
$HiC0 ©   (2003-07-28 17:12) [1]

простите, немного коряво выразился :) Я хотел сказать что координаты полученные с помощью этого методa отличаются от реальных на пару сотен пикселей. Спасибо!


 
KSergey ©   (2003-07-28 17:13) [2]

Стоп. А с чем эти координаты сравниваются? Ведь для формы (FormMouseMove) - координаты выводятся относительно формы (пересчета я не вижу), а для картинки - экранные...
Что-то тут не то... Так что с чем сравниваем?


 
$HiC0 ©   (2003-07-28 17:17) [3]

С координатами формы....
опс... так ведь форма и screen это не одно и тоже... вот блин, переработался.
Но как тогда сравнивать с координатами формы, мне нужно чтобы по любой точке
Image1 я мог узнать где эта точка находится на форме... вот блин тоже тоерия
относительности в действии :)


 
KSergey ©   (2003-07-28 17:23) [4]

$HiC0 © (28.07.03 17:17)
Но как тогда сравнивать с координатами формы, мне нужно чтобы по любой точке
Image1 я мог узнать где эта точка находится на форме...


1) Чтобы не городить огорол гарантированный результат

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var p : TPoint;
begin
p.x:=x;
p.y:=y;
p:=Image1.ClientToScreen(p);
p:=ScreenToClient(p); // т.е. метод формы
Label1.Caption:=IntToStr(p.x)+";"+IntToStr(p.y);
end;

2) Если есть уверенность, что Image лежит именно на форме и всегда там будет (без прослоек в виде всяких панелей), т.е. ее Parent точно форма - то можно скорректировать координатами формы, но там еще заголовок, толщина бордюра - короче заморочек много... Лучше 1, другого я не смог придумать


 
$HiC0 ©   (2003-07-28 17:27) [5]

Spasibo. <5==> B> GB> =C6=> :)



 
KSergey ©   (2003-07-28 17:33) [6]

<5==> B> GB> =C6=> :)
Это хорошо или сухари сушить? Или это уже не поможет...


 
default ©   (2003-07-28 17:35) [7]


procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin

Label1.Caption:=IntToStr(Image1.Left + X) + " : " +
IntToStr(Image.Top + Y);

end;



 
KSergey ©   (2003-07-28 17:52) [8]

default © (28.07.03 17:35)

Это все прикольно, если картинка непосредственно на форме лижит... Это мой 2-й пункт, только я не то ляпнул по поводу координаты формы прибавить - конечно же картинки, наврал.
Но если там неизвесное кол-во парентов - то надо всех их прибывлять, а это уже не смешно. Потому мне 1-й вариант и приглянулся больше.


 
default ©   (2003-07-28 17:58) [9]

KSergey © (28.07.03 17:52)
ну TImage всё равно на каком-то Parent-е лежит, вот и обрабатывать его OnMouseMove
не совсем понимаю проблему(


 
default ©   (2003-07-28 18:02) [10]

KSergey © (28.07.03 17:52)
всё понятно



Страницы: 1 вся ветка

Текущий архив: 2003.08.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
1-33175
Alexsum
2003-07-25 16:28
2003.08.11
richedit и popupmenu. Определение позиции в тексте.


14-33286
XobBIT
2003-07-24 11:10
2003.08.11
В чем разница между MS Visual Studio .Net и MS Visual C++ .Net


4-33398
IKvasnitsky
2003-06-10 11:41
2003.08.11
Вопрос о функции AdjustTokenPriveleges


1-33184
Sesh
2003-07-28 20:12
2003.08.11
Работа с датами


8-33227
Lister
2003-04-16 16:26
2003.08.11
Анимированная форма