PDA

View Full Version : اندازه فرم اصلی



farideh_en
شنبه 01 تیر 1387, 15:28 عصر
با سلام
من تو برنامم WINDOWSATEبرابر wsMaximized قرار دادم و یه عنصر shapوسط این فرم دارم ولی وقتی این برنامه رو سیستم های مختلف که اندازه مونیتورا فرق میکنه اجرا میشه اندازه فرم درست ولی shap دیگه وسط فرم نیست بلکه گوشه مونیتور نمایش داده میشه.
ممنون میشم راهنماییم کنین.

B-Vedadian
شنبه 01 تیر 1387, 15:31 عصر
احتمالا تو رویداد OnFormResize، محل کامپوننت رو عوض نمیکنی. دلفی خودش شکل رو وسط فرم قرار نمیده باید با کد این کار رو بکنی.

farideh_en
شنبه 01 تیر 1387, 15:45 عصر
ممنون میشه بیشتر توضیح بدین

B-Vedadian
شنبه 01 تیر 1387, 17:06 عصر
باید با کد محل کامپوننت مورد نظر رو جابجا کنید


procedure TForm1.OnFormResize(Sender: TObject)
begin
Shape1.Left := (ClientWidth - Shape1.Width) div 2;
Shape1.Top := (ClientHeight - Shape1.Height) div 2;
end;

Hsimple11
شنبه 01 تیر 1387, 17:14 عصر
بهترین راه برای جلوگیری از تغییر Alignment کامپوننتی وقتی که فرم ممکنه تغییر کنه همانطور که دوستان گفتند استفاده از رویداد OnResize است. میتونید Top و Left مربوط به Shape خود را در این رویداد تعریف کنید :


MyShape.Left := (Myform.Width div 2) - (MyShape.Width div 2);
MyShape.Top := (Myform.Height div 2) - (MyShape.Heigh div 2) - عرض titilebar فرم ;

اگر برای فرم خود نوار عنوان را نگه داشته اید باید عرض آنرا از مقدار top کم کنید تا دقیقا وسط قرار گیرد.

موفق باشید...

mzjahromi
شنبه 01 تیر 1387, 18:06 عصر
اگر درست منظورتون رو فهمیده باشم باید از خاصیت anchors استفاده کنید

farideh_en
سه شنبه 04 تیر 1387, 11:21 صبح
ممنون از پاسختون.
ببینین من همچین برنامه ای دارم و تو بعضی صفحاتم عکسم هست میشه رو این کد بگین.
ممنونم.

farhad110
سه شنبه 04 تیر 1387, 11:30 صبح
سلام. از خاصيت anchors كه جناب جهرمي گفتند استفاده كنيد و همچنين براي حفظ موقعيت در اندازه هاي كوچك فرم از خصوصيت constrains استفاده كنيد.

farideh_en
سه شنبه 04 تیر 1387, 12:01 عصر
من می خوام که اندازه مونیتور فرق کرد shape,img,buuton بازم وسط فرم باشن.
برا anchors چه تنظیماتی انجام بدم و anchors همه عناصر باید تنظیم بشه؟

farhad110
سه شنبه 04 تیر 1387, 12:40 عصر
Anchors براي تنظيم فاصله كنترلهاي فرم نسبت به حاشيه هاست. اگر شما از anchors استفاده كنيد اندازه كنترل داخل فرم با تغيير اندازه فرم تغيير ميكنه و فاصله كنترل از حاشيه ها با توجه به تنظيمات شما كنترل ميشه. اما اگر نميخوايد كه اندازه كنترل با تغيير اندازه فرم تغيير كنه از كدي كه در پست شماره #4 همين تاپيك نوشته شده با كمي تغييرات استفاده كنيد (كه دقيقا وسط قرار بگيره)

farideh_en
چهارشنبه 05 تیر 1387, 18:31 عصر
ممنون برا همه عناصر روی فرم باید کد بنویسم

sma_mohseni
پنج شنبه 06 تیر 1387, 12:31 عصر
یا برای همه اینکار رو بکن یا اینکه همرو توی یه panel بزار و این کار رو برای panel انجام بده