PDA

View Full Version : سوال: هشدار برای تغییر رزولوشن سیستم



hosein3000
جمعه 28 تیر 1392, 22:52 عصر
سلام خدمت دوستان عزیز و مهندسان گرامی و با ارزوی قبولی طاعات و عبادات در ماه مبارک رضمان
رزولشون برنامه ای که من نوشتم دقیقا عین رزولشون لپ تابم هستش (1366*768)
و برنامه ام روی سیستم هایی که رزولشون انها پایین تر از این هستش ناقص نشون داده میشه یعنی قسمتهایی از فرم نشون داده نمی شه
سوالی که از دوستان دارم اینه که :
چطور می تونم کدی بنویسم که برنامه هنگام شروع چک کنه ببینه رزولوشن صفحه ایاهمون 1366*768 هستش یا نه . اگه رزولوشن همون باشه که کاری انجام نده ولی اگه رزولوشن پایین تر باشه یک اخطار بده که برای نمایش صحیح رزولوشن صفحه رو تنظیم کنین
ممنون میشم راهنماییم کنین
با تشکرات فراوان

saber67
جمعه 28 تیر 1392, 23:19 عصر
این سورسی که نوشتم و ضمیمه کردم کارت رو راه میندازه یه چیزیم اون ور تر!:چشمک:
نه تنها می تونی باهاش رزولوشن مانیتور کاربر رو به دست بیاری
می تونی رزولوشن رو تغییر هم بدی:لبخند: تا با سایز برنامه سازگار بشه

vbhamed
یک شنبه 30 تیر 1392, 19:26 عصر
سلام

بهتره شما برنامت رو طوري بنويسي كه در هر رزولوشني اجرا بشه چون اكثرا مانيتور LCD دارن و ممكنه نتونن توي اون رزولوشن برنامه شما برن

hosein3000
یک شنبه 30 تیر 1392, 21:04 عصر
سلام

بهتره شما برنامت رو طوري بنويسي كه در هر رزولوشني اجرا بشه چون اكثرا مانيتور LCD دارن و ممكنه نتونن توي اون رزولوشن برنامه شما برن
با تشکر
برنامه من تموم شده چون تو بعضی سیستم ها مشکل بوجود میاد به همین علت خواستم رزولوشن سیستم رو با برنامه ست کنم
خوب الان که برنامه ام تموم شده چطور می تونم کاری کنم که در هر رزولوشنی اجرا بشه؟
ممنون میشم راهنماییم کنین
مرسی

hosein3000
دوشنبه 31 تیر 1392, 21:22 عصر
این سورسی که نوشتم و ضمیمه کردم کارت رو راه میندازه یه چیزیم اون ور تر!:چشمک:
نه تنها می تونی باهاش رزولوشن مانیتور کاربر رو به دست بیاری
می تونی رزولوشن رو تغییر هم بدی:لبخند: تا با سایز برنامه سازگار بشه
من فقط میخوام توی یک پیغام اگه رزولشون سیستم پایین باشه اخطار بده و بعد از کاربر بخواد که رزولشون رو تغییر بده

miladatashin
دوشنبه 31 تیر 1392, 23:50 عصر
کاری که شما میخوای انجام بدی جالب نیست. شاید مانیتور یا گرافیک کاربر قدیمی بود و اصلا رو 1366 نمیتونست بره
ولی به هر حال با این کد میتونید اگه رزولشون سیستم پایین باشه اخطار بدید

If ((Screen.Width \ Screen.TwipsPerPixelX) < 1366) Then
...............
End If

vbhamed
سه شنبه 01 مرداد 1392, 10:13 صبح
با تشکر
برنامه من تموم شده چون تو بعضی سیستم ها مشکل بوجود میاد به همین علت خواستم رزولوشن سیستم رو با برنامه ست کنم
خوب الان که برنامه ام تموم شده چطور می تونم کاری کنم که در هر رزولوشنی اجرا بشه؟
ممنون میشم راهنماییم کنین
مرسی
سلام
بايد در رويداد Form_Resize اندازه كنترلهاتون رو با اندازه فعلي فرم تنظيم كنيد، البته كامپوننتها و سورسهاي آماده اي هستن كه اينكار رو انجام ميدن مثل ResizeXtra, ResizeWiard و ...

hosein3000
سه شنبه 01 مرداد 1392, 21:43 عصر
سلام
بايد در رويداد Form_Resize اندازه كنترلهاتون رو با اندازه فعلي فرم تنظيم كنيد، البته كامپوننتها و سورسهاي آماده اي هستن كه اينكار رو انجام ميدن مثل ResizeXtra, ResizeWiard و ...

میشه بیشتر توضیح بدین

M.T.P
چهارشنبه 09 مرداد 1392, 14:01 عصر
کسی از دوستان برای مشکل من نظری نداره؟

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

مثال:

Sub SetPosition()
cmdOk.Move PixelToTwipX(10), PixelToTwipY(10)
End Sub

Function PixelToTwipX(nPixel As Long) As Single
PixelToTwipX = (nPixel * Screen.TwipsPerPixelX)
End Function

Function PixelToTwipY(nPixel As Long) As Single
PixelToTwipY = (nPixel * Screen.TwipsPerPixelY)
End Function

vbhamed
چهارشنبه 09 مرداد 1392, 17:34 عصر
سلام
اين يك نمونه
البته اگر خواستيد تغيير سايز فونت رو حذف كنيد يا فقط براي اشياي خاص اعمال كنيد چون معمولا در اشيائي مثل گرايد فقط تغيير سايز كفايت مي‌كنه

108252

hosein3000
چهارشنبه 09 مرداد 1392, 20:30 عصر
با تشکر از جنابعالی
ولی برای من در مورد استفاده از این روش یه مشکل هست و اون اینکه فرم های نرم افزار من زیاده و اسامی کنترل ها رو یکنواخت انتخاب نکرده ام و برای هر یک از کنترل ها نام خاصی وجود داره یعنی کنترل ها اونقدر زیاده که الان نمی تونم دوباره نامگذاریش کنم
چطوری با این روش می تونم ازش استفاده کنم؟؟

vbhamed
چهارشنبه 09 مرداد 1392, 21:47 عصر
سلام
براي استفاده از اين كد شما نياز به تغيير هيچ چيزي روي فرمهات نداري
تنها كاري كه بايد كني اضافه كردن كدهاي داخل Form_Resize و Form_Load به اول همين متدها در فرمهاي خودتون هست
همچنين اون قسمت Private Type Position و متغيرهاي زيرش رو هم بالاي كد فرمتون بنويسيد
دكمه cmdCancel و cmdOriginal هم نياز نيست در فرمهاي شما باشه

اما يك نكته:
معمولا در حالت واقعي نياز نيست روي همه فرمها اين عمل انجام بشه و ضمنا اينكه يك چيزي باشه كه خيلي ساده به همه فرمها اضافه بشه و همشون اين حالت رو پيدا كنند اصلا نتيجه جالبي نداره
ممكنه شما فرمهايي داشته باشي كه بعضي اشياء اونها نبايد تغيير سايز داده بشن
يا بعضي ها فقط بايد عرضشون عوض بشه مثلا نوار آدرس يك مرورگر وب
يا بعضي اشياء فونتشون نبايد تغيير سايز داده بشه و موارد ديگه ...

اون كامپوننت ResizeWizard و ResizeXtra كه گفتم اين موارد رو هم پشتيباني مي‌كنن ولي بايد همه اشياء همه فرمها رو بهش معرفي كنيد، همين كد رو هم مي‌تونيد گسترش بديد ولي بايد وقت بيشتري بزاريد اما حداقل ديگه معرفي تك تك اشياء رو نمي‌خواد

hosein3000
پنج شنبه 10 مرداد 1392, 20:29 عصر
من فقط می خوام در رزولوشن های پایین تر از رزولوشن من برنامه ام بصورت کامل دیده بشه نه اینکه اشیا رو ریسایز کنم

vbhamed
جمعه 11 مرداد 1392, 01:34 صبح
سلام
رزولوشن پايينتر يعني صفحه كوچكتر و صفحه كوچكتر يعني اشياء كوچكتر
پس بايد اشياء Resize بشن
البته بايد ديد تعريف شما از Resize چيه
اگر منظورتون چيزي شبيه Zoom هست بايد بگم نه و در پست آخر توضيح دادم مثلا اگر عرض صفحه 1366 پيكسل باشه يك تكست باكس داريم كه 1100 پيكسل عرض داره و اگر عرض صفحه بشه 1024 عرض تكست باكس ميشه 758 يعني 266 تا كمتر از عرض فرم (البته اين ارقام مثال هستن) در اين مورد فقط عرض تكست باكس ما تغيير مي‌كنه و هيچ Zoom اي اتفاق نيفتاده

ولي براي بعضي اشياء هم لازمه كاري شبيه Zoom انجام بديم كه ميشه تغيير عرض و ارتفاع و مكان و سايز فونت همگي با هم اين به برنامه شما بستگي داره