سلام دوباره خدمت جناب بهرامی گرامی
کدهای اصلی که برای فرم های VB6 هست رو دیدم،کدهای نمونه فوق در زیر قرار میدهم که ملاحظه و بررسی بفرمائین
البته نمیتونم اون رو تست کنم - ظاهرا که درست هست دیگه،
با این وجود برای این که اونها رو در VBA استفاده کنین مناسب نیست
چون یک سری چیزهایی نیاز داره که اینجا نداریم.
شما بیاین از یک راه دیگه برین:
همون SystemParametersInfo رو برای گرفتن مشخصات فونت دیفالت ویندوز برای کپشن فرمها استفاده کنین.
البته الزاما اکسس از این فونت ممکنه استفاده نکنه - به تم و اینها بستگی داره،
ولی خب بیایم امیدوار باشیم که همینه.
بعد از کتابخونه gdi32 استفاده کنین
که یک فانکشن داره که مشخصات فونت رو میدین (مثل همین LOGFONT بجز اسم فونت که استرینگ ساده اس)
و یک فونت میسازه،
حالا یک فانکشن دیگه داره که با این فونت که ساختین و متنی که بهش میدین اندازه های باکس رندر اون رو حساب میکنه (به پیکسل و واسه screen)
- البته من جزئیات کار رو دیگه نیاوردم - (چون باید برم برتامه های 20 سال پیش رو بگردم یا گوگل/بینگ کنم یا از هوش ساختگی کمک بگیرم که شما نیازی به اینها ندارین)
یک بار هم همین پروسه رو برای متنی که فقط space ساده هست انجام مبدین تا اندازه اون هم داشته باشین.
وقتی اندازه رو داشتین مابقی کار دیگه ساده است:
در فرم یک روتین مینویسین که از روی insidewidth و اندازه باکس که بالا بدست آوردین
اندازه جای خالی رو محاسبه کنه (که البته اینم تقریبی هست چون بستگی به آیکون و کنترل باکس فرم هم داره)
و این اندازه رو نصف و به اندازه space تقسیم
و به اندازه بدست آمده space به سمت چپ trim شده کپشن فعلی بچسبونه
و این رو بعنوان کپشن فعلی بگذاره.
این روتین رو در form resize بگذارین و تمام.
=====
برای ریپورت هم همینه روش
فقط اونجا windowwidth باید باشه.
چه در فرم و چه در ریپورت با ریسایز کردن مقدار width عوض نمیشه
برای همین insidewidth یا windowwidth باید استفاده کنین.
========
بعد همه اینها نهایتا شما یک وسط-چین تقریبی دارین!
و بنظرم کلا چیزی نیست که ارزش وقت گذاشتن داشته باشه - مگر بعنوان یک چالش.
==========
برای بینندگان عبوری تاپیک:
اگر زمانی دیدین خواسته هایی دارین
که اکسس بصورت ذاتی نداره
و پیاده سازی اون نیاز به کارهای پیچیده و عجیب و غریب و غیرمتعارف داره
بدونین که یا انتخاب نادرستی کردین یا خواسته تون غیرمنطقیه!