ورود

View Full Version : یافتن موقعیت اشیا



Delphi 2010
جمعه 15 اسفند 1393, 23:10 عصر
با عرض سلام خدمت همه دوستان

یه سوال برای بنده پیش اومده، سوال کوچیکی هستش ولی تا حالا بهش بر نخورده بودم

ما وقتی می خوایم موقعیت یک شی رو روی فرم خودمون بدست بیاریم از دستور زیر استفاده می کنیم


Control.Top
Control.Left


حالا اگه فرم کوچیک بشه یا کنترلی داخل پنل باشه نمیشه موقعیت واقعی اون شی رو توی صفحه نمایش بدست آورد

1- در کل میخوام موقعیت یک شی رو براساس صفحه مانیتور بدست بیارم نه خود فرم (شی از سمت چپ و بالا صفحه نمایش چه موقعیتی داره) ؟؟؟؟؟؟؟؟؟؟؟
2- موقعیت اون شی از لبه فرم حتی اینکه داخل پنل یا جای دیگه باشه؟؟؟؟؟؟؟؟؟؟؟؟

یوسف زالی
شنبه 16 اسفند 1393, 00:27 صبح
سلام.
ClientToScreen
و دستورات مشابه.
اگر نتونستی پیدا کنی یا باهاش مشکل داشتی بگو نمونه کد برات بگذارم.

Delphi 2010
شنبه 16 اسفند 1393, 07:50 صبح
با عرض سلام مجدد

آقا مجتبی طبق کدی که شما دادید جستجو کرده بودم و نتیجه ای نرسیدم
کدهاش نامفهوم بود برام

ممنون میشم نمونه کدی ارائه کنید فداتون بشم

یوسف زالی
شنبه 16 اسفند 1393, 10:08 صبح
آقای تاجیک رو خدا بیامرزه :قهقهه:

مثال:


object Panel1: TPanel
Left = 100
Top = 100
Width = 469
Height = 269
Caption = 'Panel1'
TabOrder = 1
object Panel2: TPanel
Left = 50
Top = 50
Width = 375
Height = 175
Caption = 'Panel2'
TabOrder = 0
object Label1: TLabel
Left = 20
Top = 20
Width = 32
Height = 13
Caption = 'Label1'
end
end
end






Label1.ClientToParent(Point(0, 0), Self)

golbafan
شنبه 16 اسفند 1393, 10:34 صبح
سلام
از کد زیر هم میشه استفاده کنید:

var: p,p2:tpoint;
begin
p.x:=lable1.left;
p.y:=lale1.top;
p2:=ClientToScreen(p); //مختصات بر اساس صفحه نمایش
end;

Delphi 2010
شنبه 16 اسفند 1393, 11:37 صبح
سلام علیکم
ممنونم بابت کدهاتون
جواب داد دوستان

حالا یه مسیله دیگه وقتی یک شی داخل یه پنل داشته باشیم Left و Top از لبه Panel محاسبه میشه
اون رو چطوری بدست بیاریم که از لبه فرم Left و Top چقدر هست؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟

golbafan
شنبه 16 اسفند 1393, 12:05 عصر
سلام علیکم
ممنونم بابت کدهاتون
جواب داد دوستان

حالا یه مسیله دیگه وقتی یک شی داخل یه پنل داشته باشیم Left و Top از لبه Panel محاسبه میشه
اون رو چطوری بدست بیاریم که از لبه فرم Left و Top چقدر هست؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟


کافیه با مقدار موقعیت parent اش جمع بزنید...


if control.Hasparent=true then
p.x:=control.left+control.parent.left;
p.y:=control.top+control.parent.top;

یوسف زالی
شنبه 16 اسفند 1393, 13:30 عصر
مثالی که زدم برای فرم بود.
در حالت کلی نیاز به هیچ عملی ندارید.
ClientToScreen
ClientToParent
کافیه کنترل مورد نظر و Parent ی که می خواهید نسبت بهش اندازه گیزی کنید بهش پاس بدید.