راستش دیروز اومدم از طریق یک سری API Declares و تابع GetStringWidth برای انجام اینکار اقدام کردم ولی در حالت ریسایز نمودن فرم متوجه شدم انجام اینکار برای فرم های اکسس ظاهراً نتیجه بخش نمی باشه ؛ چون وقتی عرض فرم از یک اندازه خاصی بزرگتر میشه متن کپشن بطور کامل نمایش داده نمیشه .
روش جدید رو در فرم نمونه ضمیمه اعمال کرده ام . در فرم نمونه ضمیمه بعد از اجرای فرم ملاحظه خواهی نمود که متن کپشن تقریبا در وسط قرار گرفته ولی اگر فرم رو از طریق پائین نگه داشتن موس و کشیدن لبه سمت راست آن به سمت بیرون ریسایز نمائین متن کپشن کوتاهتر میشه تا جائیکه متن کاملاً غیر قابل نمایش میشه
سلام دوباره
خدمت جناب بهرامی گرامی
1- این که وقتی پهنای فرم از یک اندازه ای بیشتر میشه،
کپشن رو ناقص نشون میده بخاطر محدودیت ذاتی اندازه خود کپشن هست : 128 کارآکتر
پس شما چک کنین که اگه اندازه رشته با اون space قبلش از 128 بیشتر شد،
از تعداد space ها همون اندازه کم کنین،
اینجوری دیگه آخر کپشن رو نمیبره.
البته بهتره واسه منفی بودن هم چک و به 0 تبدیلش کنین.
2- یک کاری که میتونین بکنین این هست که بجای space (کاراکتر با کد 20 هگز)
از space های دیگه استفاده کنین که پهنای بیشتری دارن (در نتیجه تعداد کمتری نیازه)
مثلا از em space استفاده کنین (کد هگز 2003) و با سعی و خطا ببینین theSpaces رو به چند باید تقسیم کنین (3 مناسبه).
3- حالا درسته که تقریبی هست محاسبات،
ولی از سیستم بگیرین مشخصات فونت کپشن فرم رو
و بجای
lngTitle = GetStringWidth(strText, "Tahoma", 8)
همون رو بدین به تابع CreateFont (البته شما اینو استفاده نکردین)
فونت های کپشن معمولا segui و trebuchet و ... هست.
4- اون 130 نمیدونم از کجا اومده
theSpaces = (Frm.WindowWidth - lngTitle) / 130
ولی GetTextExtentPoint32 اندازه رو به pixel برمیگردونه
که برای تبدیلش به cm باید به 567 تقسیم بشه