PDA

View Full Version : سوال: چگونه فرم والد و فرزند را FORM CENTERING کنیم به همراه کد های نمونه ؟



narpco
سه شنبه 16 دی 1399, 14:43 عصر
یکی از مهترین موارد در طراحی پروژه های اکسس قرار گرفتن همه فرم ها در مرکز مانیتور بصورت اتوماتیک هست --فرض ما بر این است که فرم پدر ما FRM_MAIN هست
و بقیه فرم ها بر اساس باز شدن این فرم و ابعاد آن در مرکز مانیتورقرا می گیرند –
من چند روز هست که بدنبال ماژول یا کدی در این رابطه میگردم و دو فایل نمونه پروژه زیر را پیدا کردم که برای مثال قرا میدهم –
ولی هر کدام داستان خودشون رو دار و خطاهایی هم در اولین اجرا یا بعد از چند بار اجرا نشان میدهند و اینکه استفاده از گزینه AOUT CENTER خود فرم خیلی بدرد بخور نیست و ما نیاز به ماژول یا کد وی بی داریم که دقیق کار کنه

لینک فایل های دارای نمونه کد از منابع خارجی

https://s17.picofile.com/file/8420212542/center.rar.html (https://s17.picofile.com/file/8420212542/center.rar.html)

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


< هدف ما اینه که فرم ها دقیقا در در وسط صفحه نمایش قرا بگیرند حالا هر رزولوشنی که داشتن یا....
اگر رزولوشون رو بطور دستی تغییر دادیم بازم فرم ها بصورت خودکار در وسط صفحه قرا بگیرند
حداقل رزولوشنی که مورد نظر ماست 1280*720 هست با پایین تر از اون کاری نداریم
.کد نهایی باید روی آفیس نسخه 64 و 32 بصورت اتوماتیک شناسایی و اجرا بشه یعنی اینکه اول تشخیص بده بعد اجرا بشه
فایل های بالا فقط نمونه هستن شما اگر ماژول یا کدی دارید که بهتر عمل می کنند ممنون میشم بصورت نمونه بفرستید
اگر ما سایز به فرم داده بودیم مثلا

DoCmd.MoveSize , , 19200, 13780
همین ابعاد رو اجرا کنه و در سط قرار بده ...

7.کل فرم های دیگر نیز بر اساس باز شدن فرم پدر اولیه FRM_MAIN باز و CENTER شوند

فرض بر این است که برنامه نویس اندازه فرم ها را درست طراحی کرده و با توجه به اینکه برنامه اش در حداقل چه ابعادی باید اجرا شود عمل نموده است ///

نکته اخر اینکه تغییرات و نظرات خود را در قالب یک فایل اکسس ارائه بفرمایید تا تست و نتیجه گیری باشد

اگر شما تجربه و یا روش کاری دیگری به نظرتون میرسه در مورد موضوع این تاپیک و یا روش تجربی دیگه ممنون میشم با ما در میون بزارید


بسیار ممنونم

narpco
سه شنبه 16 دی 1399, 14:55 عصر
آدرس سایتی که نمونه فایل ها رو از اون تهیه کردم

https://www.utteraccess.com/topics/1397380

http://www.mendipdatasystems.co.uk/centre-form-on-screen/4595120135

padide55
چهارشنبه 17 دی 1399, 11:12 صبح
آدرس سایتی که نمونه فایل ها رو از اون تهیه کردم

https://www.utteraccess.com/topics/1397380

http://www.mendipdatasystems.co.uk/centre-form-on-screen/4595120135



سلام
فعلا این نمونه ابعاد مانیتور رو داشته باشید

narpco
چهارشنبه 17 دی 1399, 11:30 صبح
[QUOTE=padide55;2439134]سلام
فعلا این نمونه ابعاد مانیتور رو داشته باشید[/QUO

ممنون خوب بود ...برای شناسایی اطلاعات مانیتور ......

narpco
چهارشنبه 17 دی 1399, 11:38 صبح
خیلی کد در اینترنت هست در این مورد منتها خیلی قدیمی هستن مربوط به سال 2005 تا 2000

و کمی هم خطا دارن و 32-64 رو با هم ...پوشش نمیدن

padide55
چهارشنبه 17 دی 1399, 11:42 صبح
[QUOTE=padide55;2439134]سلام
فعلا این نمونه ابعاد مانیتور رو داشته باشید[/QUO

ممنون خوب بود ...برای شناسایی اطلاعات مانیتور ......

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

بعد محاسبات رو باید اعمال کنید .

eb_1345
چهارشنبه 17 دی 1399, 19:36 عصر
هدف ما اینه که فرم ها دقیقا در در وسط صفحه نمایش قرا بگیرند حالا هر رزولوشنی که داشتن یا....


اگر رزولوشون رو بطور دستی تغییر دادیم بازم فرم ها بصورت خودکار در وسط صفحه قرا بگیرند
حداقل رزولوشنی که مورد نظر ماست 1280*720 هست با پایین تر از اون کاری نداریم
.کد نهایی باید روی آفیس نسخه 64 و 32 بصورت اتوماتیک شناسایی و اجرا بشه یعنی اینکه اول تشخیص بده بعد اجرا بشه
اگر ما سایز به فرم داده بودیم مثلا

DoCmd.MoveSize , , 19200, 13780
همین ابعاد رو اجرا کنه و در سط قرار بده ...

سلام
نمونه ضمیمه رو بررسی بفرما!

narpco
چهارشنبه 17 دی 1399, 20:50 عصر
سلام
نمونه ضمیمه رو بررسی بفرما!


سلام برادر شب خوش ممنون از زحمت شما

بخش اول مرکزیت فرم اول فک نکنم مشکلی داشته باشه


من یک فرم 2 ساختم او در آنلود این کد رو هم اضافه کردم --
CenterFrm Me
در فرم یک .....یک دکمه گذاشتم و گفتم فرم 2 رو باز کن

ولی در مرکز باز نشد طبق عکس زیر

https://s16.picofile.com/file/8420383534/SSSSS.png

حالا هدف ما اینه که فرم ها همه در مرکزیت صفحه باز بشن یا در مرکزیت فرم اول
به نظرم منطقی اینه که فرم اول در مرکز صفحه باز بشه و فرم های دیگه با تو جه به ابعاد فرم پدر (شماره 1) باز بشن

یه کدی هم داره هر چی فک می کن میادم نمیاد چی بود که میگه فرم های 2 به بعد هر کدوم باز شد نسبت به مرکزیت ابعاد فرم پدر باز شود سه خط کد بود تو ان لود همه فرم ها میزاشتیم یا چیزی شبیه به این

حالا ممنون میشم راهنمایی بفر ماییدبرای رسیدن به این مقصود .... راه منطقی چیه و راه حلش چی هست ..بسیار سپاسگزارم

eb_1345
چهارشنبه 17 دی 1399, 23:01 عصر
سلام برادر شب خوش ممنون از زحمت شما

بخش اول مرکزیت فرم اول فک نکنم مشکلی داشته باشه


من یک فرم 2 ساختم او در آنلود این کد رو هم اضافه کردم --
CenterFrm Me
در فرم یک .....یک دکمه گذاشتم و گفتم فرم 2 رو باز کن

ولی در مرکز باز نشد طبق عکس زیر

https://s16.picofile.com/file/8420383534/SSSSS.png

حالا هدف ما اینه که فرم ها همه در مرکزیت صفحه باز بشن یا در مرکزیت فرم اول
به نظرم منطقی اینه که فرم اول در مرکز صفحه باز بشه و فرم های دیگه با تو جه به ابعاد فرم پدر (شماره 1) باز بشن

یه کدی هم داره هر چی فک می کن میادم نمیاد چی بود که میگه فرم های 2 به بعد هر کدوم باز شد نسبت به مرکزیت ابعاد فرم پدر باز شود سه خط کد بود تو ان لود همه فرم ها میزاشتیم یا چیزی شبیه به این

حالا ممنون میشم راهنمایی بفر ماییدبرای رسیدن به این مقصود .... راه منطقی چیه و راه حلش چی هست ..بسیار سپاسگزارم



نمونه اصلاح شده بعدی رو بررسی بفرما !

narpco
پنج شنبه 18 دی 1399, 09:53 صبح
سلام و صبح بخیر و سپاس فرآوان از شما و وقتی که گذاشتین ....

من فقط تحلیل کنم که خودم بهتر بفهمم در ماژول میگه فرم اصلی رو در مرکز باز کن با توجه به ابعادش و هر فرمی بجز فرم اصلی بود در مرکز فرم اصلی باز کن
درست فهمیدم ؟

به هر حال بسیار خوشحالیم که همراه ما هستید ......ارادتمند مرام و منش شما هستیم ....:تشویق:

eb_1345
پنج شنبه 18 دی 1399, 11:34 صبح
سلام و صبح بخیر و سپاس فرآوان از شما و وقتی که گذاشتین ....

من فقط تحلیل کنم که خودم بهتر بفهمم در ماژول میگه فرم اصلی رو در مرکز باز کن با توجه به ابعادش و هر فرمی بجز فرم اصلی بود در مرکز فرم اصلی باز کن
درست فهمیدم ؟

به هر حال بسیار خوشحالیم که همراه ما هستید ......ارادتمند مرام و منش شما هستیم ....:تشویق:


سلام
خواهش میکنم
تحلیل کد بصورت تئوری :
برای اینکه فرم های شما در وسط فرم اصلی قرار بگیرند باید فاصله آنها از سمت چپ و بالا بدست آوریم . حالا باید به چه نحو عمل کنیم ؟
فاصله از سمت چپ :
اول بیا عرض فرم (فرم فرزند) را از عرض فرم اصلی کم کن و آن را بر 2 تقسیم کن . چرا اینکار را انجام دادیم ؟ با این کار میخواهیم فاصله مساوی فرم فرزند را از دو طرف چپ و راست نسبت به فرم اصلی بدست آوریم ؛ این فاصله که بدست آمد حالا می گوئیم این عدد باید با فاصله سمت چپ خود فرم اصلی اضافه شود
فاصله از سمت بالا:
فاصله از سمت بالا هم به همان صورت فاصله از سمت چپ بدست می آید منتها در اینجا بجای عرض ارتفاع فرم (WindowHeight) را باید ملاک عمل قرار دهیم
شرط مخالف بودن فرمی که باید در وسط قرار بگیرد با فرم اصلی هم کاملاً واضح است که فرمی که باید در وسط فرم اصلی قرار بگیرد خود فرم اصلی نمیتواند باشد . البته در تابع فوق خیلی نیاز به این شرط وجود ندارد و میتوانید آن را حذف نمائید.

ضمناً بنده بنا به این فرض که اندازه فرم اصلی نسبت به اندازه دیگر فرم ها بزرگتر یا مساوی است شرط بزرگتر یا مساوی بودن اندازه فرم اصلی نسبت به اندازه دیگر فرم ها را در تابع فوق قید نکردم

narpco
پنج شنبه 18 دی 1399, 13:14 عصر
امروز داشتم کدهای منابع خارجی رو با کد های شما مقایسه میکردم

به یک نتیجه خیلی مهم رسیدم
اینکه چقدر کد نویسی بلد باشی ده درصد ماجراست
نود درصد قدرت تحلیل و روش حل مسئله است
و اینکه شما با بسیار کوتاه تر به حل مسئله رسیدید و ساده تر ......
جای تبریک داره خدایی ..این سرعت مغز شما ......:تشویق:





ضمناً بنده بنا به این فرض که اندازه فرم اصلی نسبت به اندازه دیگر فرم ها بزرگتر یا مساوی است شرط بزرگتر یا مساوی بودن اندازه فرم اصلی نسبت به اندازه دیگر فرم ها را در تابع فوق قید نکردم
منطق برنامه نویسی اینه که شما سایر فرم ها رو -همونطور که فرمودین- مساوی یا کوچیکتر از فرم پدر طراحی کنید وغیر از این که کلا غلطه داستان طراحی فرم ها .....

narpco
پنج شنبه 18 دی 1399, 13:50 عصر
این فیلم کوتاه هم خدمات شما بزرگوار
https://s17.picofile.com/file/8420450884/fffff.rar.html