Форум: "Основная";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c