PDA

View Full Version : دو خطي شدن Label بعد از رسيدن به انتها



سعید صابری
شنبه 08 اسفند 1388, 08:38 صبح
سلام
من يك ليبل روي يك پانل دارم كه متني برام نمايش ميدهد كه از طولش خبر ندارم به همين خاطر بيشتر اوقات متن بزرگتر از طول پانل باشه نصف متن نماش داده نمي شود. حالا ميخوام متنم به اندازه طول پانل رسيده دو خطي بشه. دوستان كسي راهي كامپوننتي چيزي واسه حل اين مشكل سراغ نداره؟

دلفــي
شنبه 08 اسفند 1388, 09:34 صبح
سلام
من يك ليبل روي يك پانل دارم كه متني برام نمايش ميدهد كه از طولش خبر ندارم به همين خاطر بيشتر اوقات متن بزرگتر از طول پانل باشه نصف متن نماش داده نمي شود. حالا ميخوام متنم به اندازه طول پانل رسيده دو خطي بشه. دوستان كسي راهي كامپوننتي چيزي واسه حل اين مشكل سراغ نداره؟

شما مي تونيد با بدست آوردن تعداد كاراكترهاي موجود در Lanbel با استفاده از تابع StrLen ، اگر تعداد كاراكترها بيشتر از تعداد مورد نظر شما بود در بين كاراكترهاتون از كاراكتر 13# استفاده كنيد :

اين هم از مثالش :


procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
S:String;
begin
S := '';
for i:=1 to StrLen(Pchar(Label1.Caption)) do
begin
if i = 4 then
S := S + #13;
S := S + Label1.Caption[i];
end;
Label1.Caption := S;
end;

سعید صابری
شنبه 08 اسفند 1388, 09:43 صبح
ممنون دوست عزيز
مشكل من طول پانل است يعني طول ليبل بيشتر از طول پانل بشه بعد دو خطي بشه

دلفــي
شنبه 08 اسفند 1388, 10:01 صبح
ممنون دوست عزيز
مشكل من طول پانل است يعني طول ليبل بيشتر از طول پانل بشه بعد دو خطي بشه

براي اين كار هم مي توني خاصيت AutoSize رو برا Label در حالت True قرار بدي و با اضافه كردن كاراكتر به كاراكتر در Label.Caption و مقايسه Width ليبيل با پنل ، اگه طول Label از Panel بيشتر بود از كاراكتر 13# استفاده كني .

موفق باشي ...

سعید صابری
شنبه 08 اسفند 1388, 10:11 صبح
autosize را true كردم ولي اندازه panel بر حسب پيكسل است و طول ليبل بر حسب كاراكتر. چطوري بفهميم كدوم كاراكتر در انتها قرار گرفته كه از بعد از اون شيف بديم پايين؟

Felony
شنبه 08 اسفند 1388, 10:20 صبح
خاصیت WordWarp لیبلتون رو True کنید و خاصیت Autosize اون رو False کنید ، حالا لیبلتون رو به اندازه پنل بزرگ کنید ، از این پس متن وقتی به انتها سطر اول رسید به صورت خودکار به خط بعدی شکسته میشود .

امید امرایی
شنبه 08 اسفند 1388, 10:24 صبح
سلام
من يك ليبل روي يك پانل دارم كه متني برام نمايش ميدهد كه از طولش خبر ندارم به همين خاطر بيشتر اوقات متن بزرگتر از طول پانل باشه نصف متن نماش داده نمي شود. حالا ميخوام متنم به اندازه طول پانل رسيده دو خطي بشه. دوستان كسي راهي كامپوننتي چيزي واسه حل اين مشكل سراغ نداره؟

به جای چک کردن تعداد کاراکتر ها شما کافیه اگر براتون مقدوره خصوصیت Align لیبل رو به صورت دلخواه تنظیم کنید مثلا alTop و اگر مقدور نیست طول لیبل رو همواره برابر با طول پنل قرار بدید.
خصوصیت AutoSize لیبل رو برابر با False و خصوصیت WordWrap رو برابر True قرار بدید

سعید صابری
شنبه 08 اسفند 1388, 10:27 صبح
خاصیت WordWarp لیبلتون رو True کنید و خاصیت Autosize اون رو False کنید ، حالا لیبلتون رو به اندازه پنل بزرگ کنید ، از این پس متن وقتی به انتها سطر اول رسید به صورت خودکار به خط بعدی شکسته میشود .

ممنون از همگي درست شد