PDA

View Full Version : پرش در هنگام Create فرم



Hsimple11
سه شنبه 08 مرداد 1387, 11:38 صبح
سلام.

یه مشکل کوچیک پیدا کردم و اونم اینکه...
وقتی میخوام فرمم رو تو RunTime Create کنم؛ قبل از اینکه Show کنم Top و Left اون رو تعیین میکنم که دقیقا همون جایی میخوام نمایش داده بشه. اما موقع طراحی فرمم تو اون موقعیت نیست که و جابجا شده. حالا مشکل اینه که وقتی Show می کنم صفحه پرش پیدا میکنه تا از جای موقع Design به Top و Left ای که بهش دادم بره و نمایش داده بشه.

با تشکر...

Hsimple11
چهارشنبه 09 مرداد 1387, 00:10 صبح
دوستان اگر نظری دارند ممنوم میشم. چون نمیشه فرمهام رو در زمان طراحی دقیقا در سرجایی که باید Create و Show بشن قرار بدم.

با تشکر...

Mahmood_M
چهارشنبه 09 مرداد 1387, 03:11 صبح
احتمالا خاصیت Visible مربوط به فرمی که میخواید ایجاد کنید ، در زمان طراحی True هست ، اگه این طور هست باید اون رو False کنید تا فرم در زمان ساخته شدن نمایش داده نشه ، یعنی اگه خاصیت Visible فرم True باشه و شما اون رو Create کنید ، فرم خود به خود نمایش داده خواهد شد ، یا میتونید در زمان طراحی خاصیت Visible فرم رو False کنید یا اینکه بعد از Create ابتدا Visible رو False کرده و بعد مقادیر Top و Left رو بدید و بعد دوباره Visible رو True کنید ...
مثلا :

FRM := TForm2.Create(Application);
FRM.Visible := False;
FRM.Top := 20;
FRM.Left := 20;
FRM.Show;

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

Hsimple11
چهارشنبه 09 مرداد 1387, 13:33 عصر
با تشکر.

اما جدا از اون مسئله بازهم مقداری پرش در هنگام Free و Create شدن وجود داره. مخصوصا وقتی چندین بار این عمل Create و Free شدن تکرار بشود. طبیعی هم هست وقتی Free میشه و دوباره بعد از Create میخواهد Show شود.

میخواستم ببینم راه حل ، راخ حل که نه، ترفندی برای این موضوع تجربه کرده اید که با Free و Create کردنهای متوالی یک فرم این پرش مخصوصا وقتی فرم کنترلهای زیادی دارد محسوس نباشد.

با تشکر...

Mahmood_M
چهارشنبه 09 مرداد 1387, 13:40 عصر
شما از کدی که در بالا گذاشتم استفاده کردید ، یا اینکه در هنگام ساخت فرم خاصیت Visible اون رو False کردید ؟
اگه خاصیت Visible فرم در زمان طراحی False باشه دیگه پرش نباید داشته باشه ...
خاصیت Visible فرم رو در زمان طراحی False کنید و کد رو به صورت زیر بنویسید :

FRM := TForm2.Create(Application);
FRM.Top := 20;
FRM.Left := 20;
FRM.Show;

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

Hsimple11
چهارشنبه 09 مرداد 1387, 15:37 عصر
خیلی ممنونم بله مشکل حل شد. البته False کردن Visibility در زمان اجرا و یا طراحی تفاوتی ندارد. من در مورد Create و Free کردنهای متوالی فقط خواستم ببینم آیا راه حلی برای اینکه وقتی اینکار بصورت پشت سر هم انجام میشه وجود داره چون به هر حال با هر بار آزاد کردن و ساختن فرم یکبار Hide و Show میشه و کمی پرش پیدا میکنه. که میشه با هم رنگ کردن فرم یا کنترل پشت اون این مسئله رو حل کرد که همین کار رو انجام دادم.

باز هم ممنون.