ورود

View Full Version : سوال: قرار گرفتن همیشگیه فرم برنامم در پایین سمت راست



Mask
یک شنبه 09 آبان 1389, 12:50 عصر
با سلام
فرم اصلی برنامم بنا به اقتضا همیشه پایین صفحه دسکتاپ روی نوار taskbar قرار میگیره.
حالا با شرایطی که در برنامه هست طولش کم میشه و به سمت چپ کوچک میشه.
من میخام برعکس باشه.
یعنی به سمت راست کوچک بشه.
در ضمن با تغییر رزولوشن به هم نریزه.
الان نمیدونم چرا با اینکه موقعیت فرمم روی آیتم باتن یا پایین هست بازم وقتی که برنامم اجرا میشه میاد وسط صفحه.(البته وقتی روش کلیک میکنم میپره پایین)
چطوری باید همیشه پایین سمت راست روی سر try باشه فرمم.
ممنون. از دوستان.

Mahmood_M
یک شنبه 09 آبان 1389, 14:21 عصر
وقتی اندازش رو تغییر دادید باید دوباره مکانش رو هم تغییر بدید و به سمت راست بیاریدش ، قبلا بحث شده (http://www.barnamenevis.org/forum/showthread.php?t=228489) ...

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

Mask
دوشنبه 10 آبان 1389, 17:30 عصر
ممنون
اما سوال من این نبود
سوالم اینه که فرمم چطوری در تمامی رزولوشن ها مقدار Align فرمم برابر با alBottom و alRight باشه.
وقتی این کار رو میکنم.
فرمم کامل باز میشه.
میخام Align بر روی این دوحالت باشه اما فرمم از سمت راست تا وسط صفحه باشه.
ممنون.

Mahmood_M
دوشنبه 10 آبان 1389, 19:14 عصر
ولی باز هم جواب همون هست ، فرمتون رو بعد از تغییر اندازه به سمت راست بیارید ، یعنی مقدار Left فرم رو برابر با مقدار زیر قرار بدید ( عرض صفحه منهای عرض فرم ) :

Left := Screen.Width - Form1.Width;
برای پایین آوردن فرم هم به همین ترتیب ...
می تونید در هر لحظه رزولوشن رو چک کنید تا اگر تغییر کرد ، دوباره فرم رو به جای دلخواه ببرید ! راهی نیست که با تغییر رزولوشن خود برنامه به سمت چپ بره ...

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

Felony
دوشنبه 10 آبان 1389, 19:34 عصر
برای آگاهی برنامتون از تغییر رزولیشن میتونید Message Handler مربوط به فرم برنامتون رو بازنویسی کنید و پیغام WM_DISPLAYCHANGE رو بررسی کنید ، یه نمونه براتون نوشتم :

اعلان :

Procedure WNDProc(var Message: TMessage); Override;


بازنویسی :

procedure TForm1.WNDProc(var Message: TMessage);
begin
if Message.Msg= WM_DISPLAYCHANGE then
ShowMessage('Display resolution changed');
inherited;
end;