PDA

View Full Version : بدست آوردن موقعيت x و y كرسر موس



Mask
جمعه 15 آبان 1388, 16:16 عصر
با سلام به همه دوستان
بنده با يه دستور ساده x,y موس رو در كل صفحه دستاپ بدست ميارم.
اما مي خام نقطه 0و0 من گوشه فرمم باشه و x, y كرسر موس رو در فرمم مي خام.
در ضمن دوستان اگه ممكنه موقعيت كرسر موس در مثلا يه شكل image رو هم بفرماييد چطوري بدست بيارم.
يعني گوشه سمت چپ بالاي شي ايميجم 0و0 باشه و كلا مختصات x,y كرسر رو در شي داشته باشم البته مختصات بر اسا طول و عرض شيئم.
ممنون از دوستان

Felony
جمعه 15 آبان 1388, 16:31 عصر
میتونید از رویداد OnMouseMove فرم استفاده کنید که بهتون X و Y فعلی اشاره گر در فرم رو میده ، اگر هم نمیخواین از این رویداد استفاده کنید کافیه با یه فرمول ریاضی بسیار ساده مختصات اشاره گرتون رو در صفحه پیدا کنید ، اینها چیزهایی نیستند که نیاز به کدنویسی داتشه باشه و فقط یکم فکر کردن میخواد :

برای X :

Form1.Caption:=IntToStr(Mouse.CursorPos.X-Form1.Left);

برای Y :

Form1.Caption:=IntToStr(Mouse.CursorPos.Y-Form1.Top);

در مورد عکس هم همینطور میتونید با یک فرمول ساده مختصات رو نسبت به فرم برنامه به دست بیارید .

mossaferin
یک شنبه 17 آبان 1388, 15:47 عصر
سلام

همونطور که دوستمون گفتن (SilverSoft (http://barnamenevis.org/forum/member.php?u=63881)) از راه های محاسباتی امکان پذیره ولی راههای دیگه ای هم داره



procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
var
sc,new,scr:tpoint;
begin
scr.x:=Mouse.CursorPos.x;
scr.y:=Mouse.CursorPos.y;
new:=form1.ScreenToClient(scr);
sc:=form1.ClientToScreen(new);

Label1.Caption:='Original Form position : '+inttostr(X)+','+inttostr(Y);
Label2.Caption:='calculated form position : '+inttostr(new.X)+','+inttostr(new.Y);
Label3.Caption:='Screen position : '+inttostr(scr.X)+','+inttostr(scr.Y);
Label4.Caption:='calculated screen position : '+inttostr(sc.X)+','+inttostr(sc.Y);
end;

vcldeveloper
یک شنبه 17 آبان 1388, 18:10 عصر
ما مي خام نقطه 0و0 من گوشه فرمم باشه و x, y كرسر موس رو در فرمم مي خام.
در ضمن دوستان اگه ممكنه موقعيت كرسر موس در مثلا يه شكل image رو هم بفرماييد چطوري بدست بيارم.
يعني گوشه سمت چپ بالاي شي ايميجم 0و0 باشه و كلا مختصات x,y كرسر رو در شي داشته باشم البته مختصات بر اسا طول و عرض شيئم.
همه کنترل های دلفی دو متد با نام های ScreenToClient و ClientToScreen دارند. متد ScreenToClient یک مختصات مربوط به کل دسکتاپ را میگیره، و یک مختصات جدید نسبت به موقعیت همان کنترل را برمیگردانه. متد ClientToScreen هم یک مختصات مربوط به نقطه ایی در داخل آن کنترل را میگیره، و مختصات آن نقطه نسبت به کل دسکتاپ را برمیگردانه.