PDA

View Full Version : بهم ریختگی در فرم



saleh_fartash
پنج شنبه 30 خرداد 1387, 15:05 عصر
سلام
من یک برنامه درست کردم که همه چیز منظم و قشنگ بود..
ولی یک روز که اون رو(exe) به دوستم دادم دیدم شده شهر آشوب! همهی عکس ها (png) جابه جا شده بودند و رنگ بعضی لیبل ها تغییر کرده بود و اندازه ی پنل ها تغییر کرده بود و و و و ...
حالا شما بگین اشکال از کجای کاره؟

Hsimple11
پنج شنبه 30 خرداد 1387, 16:15 عصر
با سلام

علت تغییر فرم و اجزای آن در برنامه شما علل مختلفی میتواند داشته باشد. اول از همه توجه داشته باشید که اگر از هر جزئی که به نوعی در برنامه شما embedded نمیشود استفاده کنید، بایستی آنرا مانند بسیاری از برنامه های دیگر و نه تنها دلفی، در کنار فایل اجرایی خود داشته باشید. برای مثال اگر از فونتهای خاصی در زمان طراحی استفاده کرده اید که در کامپیوتر دیگری وجود ندارند یا از برنامه یا plugin یا Engine خاصی استفاده کرده اید .... بایستی آنها را قبل از اجرای برنامه در کامپیوتر مورد نظر نصب کنید که معمولا این کار را با همان نرم افزاری که Setup برنامه خود را میسازید تعریف می کنند. مسئله بعد میتواند Resolution و سایز مانیتور کامپیوتر دیگر باشد. گاهی اگر این مسئله در کامپیوتر دیگری با کامپیوتر خودتان متفاوت باشد باعث دیده نشدن بخشهایی از فرم شما یا بهم ریختن آن می شود. در ضمن توجه داشته باشید که برای جلوگیری از تغییر اندازه فرم خود پارامترهای مربوط به آنرا در هنگام طراحی برنامه set کنید. مثلا اگر خاصیت BorderStyle فرم خود را bsSizeable قرار دهید فرم قابلیت تغییر اندازه پیدا خواهد کرد. نکته دیگر موقعیت قرار دادن کامپوننت ها بر روی فرم یا ... است. اگر موقعیت object ای قرار است ثابت باشد بهتر است از خواصی نظیر Align استفاده کنید یا موقعیت آنرا در runtime خود، با تعریف خواص Top و Left تعیین کنید. این کار مانع از بروز بعضی به هم ریختگیها می شود.

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

saleh_fartash
پنج شنبه 30 خرداد 1387, 16:33 عصر
با تشکر
embedded را در صورت امکان توضیح دهید.
Resolution هر دو دستگاه برابر(1152-864) است.
BorderStyle فرم noun است.
همیشه و برای همه object ها نمی توان ازAlign استفاده کرد.
در باره ی runtime هم باید بگم من حدود 200 تا object دارم و این اصلا عاقلانه نیست که برای همه top و left تعیین کنم.
بجز اینها در باره ی تغییر رنگ بعضی label ها چی میگید.
به نظ ر من مشکل از یک چیز دیگه مثل خود ویندوز آب می خوره.

Hsimple11
پنج شنبه 30 خرداد 1387, 16:54 عصر
اگر سیستم رنگ مانیتور شما یا ویندوز کامپیوتر دیگر رنگ خاصی را پشتابانی نکند نمیتواند آن را نشان دهد. مثلا اگر سیستم رنگی شما 32bit و دیگری 16bit باشد.

saleh_fartash
پنج شنبه 30 خرداد 1387, 17:43 عصر
رنگ سفید رو هر کامپیوتری اجرا می کنه.
تازه هنوز برای تغییر اندازه اشیا هم به نتیجه ی درستی نرسیدیم.

dkhatibi
پنج شنبه 30 خرداد 1387, 18:45 عصر
ویندوز را مجددا نصب کرده اید؟

saleh_fartash
پنج شنبه 30 خرداد 1387, 22:01 عصر
یعنی میگی من وقی برنامه رو به کاربر دادم بگم ویندوزت رو عوض کن.یعنی راه دیگه ای نداره؟

Hsimple11
پنج شنبه 30 خرداد 1387, 22:06 عصر
کسی نگفت وقتی به کاربر دادی بگی ویندوزت رو عوض کن. ایشون منظورشون این بود که به هم ریختگی فرمت ممکنه ناشی از بهم رختن خود ویندوز باشه که با عوض کردن تصحیح بشه.
فکر میکنم بهتر باشه رسمی تر صحبت کنیم...

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

dkhatibi
پنج شنبه 30 خرداد 1387, 23:25 عصر
بعضی وقتا اگر تو Regional تنظیمات منطقه ای را درست تنظیم نکرده باشم این مشکل پیش می آد.

SYNDROME
جمعه 31 خرداد 1387, 00:16 صبح
آیا بر روی کامپیوترهای دیگر هم اجرا کرده اید و این مشکل را دارد؟
یا بر روی همین سیستم فقط مشکل وجود دارد؟
موفق باشید

saleh_fartash
جمعه 31 خرداد 1387, 11:17 صبح
بعضی وقتا اگر تو Regional تنظیمات منطقه ای را درست تنظیم نکرده باشم این مشکل پیش می آد.
منظورت تنظیمات زبان؟
آره

Hsimple11
جمعه 31 خرداد 1387, 11:47 صبح
نه منظور regional options است.

saleh_fartash
جمعه 31 خرداد 1387, 12:02 عصر
اگر منظورتون standard a format بله ایران وfarsi است.

sma_mohseni
شنبه 01 تیر 1387, 12:10 عصر
یه راه مطمئن برای اینکه خیالت از ثابت موندن فرمت راحت بشه اینکه که در oncreate فرم یکبار همه آبجکتها رو (مخصوصا تصاویر) رو مجددا بچینی. اینطوری


image1.top:=100;
image1.left:=100;
panel1.top=125;
panel1.left=235;



البته میتونی اعداد رو نسبت به هر آبجکتی که میدونی ثابت میمونه بسنجی مثلا اینطوری


image1.top:= image2.top+100;
image1.left:=image2.left+100;


اینطوری خیالت راحته که تو هر ریزولیشن و تو هر دستگاهی آبجکتها دقیقا همانطور که میخواهی چیده میشوند
این راه رو امتحان کن ارزششو داره.

MohsenTi
شنبه 01 تیر 1387, 21:00 عصر
من یه نظر مطرح کنم !
اگر بخواد با تغییر رزولیشن اندازه فرم تغییر کنه اونوقت کار شما بدتر فرم را به هم میزنه.
اگر بخواهیم ارتفاع و عرض منیتر را بر اساس رزولیشن بگیریم کدی هست ؟!

saleh_fartash
شنبه 01 تیر 1387, 21:23 عصر
یه راه مطمئن برای اینکه خیالت از ثابت موندن فرمت راحت بشه اینکه که در oncreate فرم یکبار همه آبجکتها رو (مخصوصا تصاویر) رو مجددا بچینی.
خوب دوست عزیز اگر بحث رو مطالعه کرده باشی جوابتو می گیری.

sma_mohseni
یک شنبه 02 تیر 1387, 11:08 صبح
خوب دوست عزیز اگر بحث رو مطالعه کرده باشی جوابتو می گیری.

حق با شماست :)

sma_mohseni
یک شنبه 02 تیر 1387, 11:12 صبح
اگر بخواهیم ارتفاع و عرض منیتر را بر اساس رزولیشن بگیریم کدی هست ؟!

ClientWidth , ClientHeight
Screen.Height , Screen.Width

saleh_fartash
شنبه 08 تیر 1387, 16:44 عصر
کسی نمی دونست که باید برای حل این مشکل چه کار کرد.

h.gheidrlou
جمعه 01 خرداد 1394, 16:00 عصر
این مشکل را منم داشتم به این نتیجه رسیدم که در ابتدای برنامه که میخوام پروژه را شروع کنم رزولیشن یستم خودم را به پایین ترین حد بیارم یعنی 1024و768 وبرنامه را بنویسم بعدش دیگه فکر کنم با رزولیشن بالاتر مشکلاتم کمتر باشه