ورود

View Full Version : آیا امکان دارد در یک فرم یک فونت لیبل را اتوماتیک بزرگ و کوچک بشه ؟



Valadi
دوشنبه 04 تیر 1386, 10:25 صبح
فرض کنیم در یک فرم یک لیبل دارم و این لیبل و یک Edit1 حالا می خواهیم وقتی متنی را در Edit1 تایپ می کنیم در لیبل نشان بدهد (تا اینجا کار مشکلی ندارم و مشکل از این جا به بعده) حالا می خوام با توجه به متن Edit1 فونت لیبل (بصورت اتوماتیک ) سایزش تغییر کند یعنی اگر متن کم تر از طول لیبل بود سایز فونت بزرگتر و بر عکس

MNosouhi
دوشنبه 04 تیر 1386, 11:05 صبح
procedure TForm1.Edit1Change(Sender: TObject);
begin
if Length(Edit1.Text)<length(Label1.Caption) then
Label1.Font.Size:=20
else
Label1.Font.Size:=10
end;

Valadi
دوشنبه 04 تیر 1386, 11:10 صبح
جناب MNosouhi
مرسی از راهنماییتان اما من می خوام خودش به صورت اتوماتیک با شه من دیگه سایز فونت را تعریف نکنم و ضمنا طول لیبل مشخصه
شاید فونت بین این دو باشه یعنی سایز 15 باشد حالا چه کار کنیم ؟؟؟؟؟!!!!؟؟؟؟

arshia_
دوشنبه 04 تیر 1386, 13:50 عصر
هیچ اتوماتیکی وجود نداره
ولی کد به همون روشی حکه گفته شد باید نوشته بشه
شما می تونید حالتهای زیادی رو در شرط بنویسید تا اندازه دقیقا اونی باشه که شما تمایل دارید

MNosouhi
دوشنبه 04 تیر 1386, 15:46 عصر
طول لیبل مشخصه شاید فونت بین این دو باشه یعنی سایز 15 باشد حالا چه کار کنیم ؟؟؟؟؟
منظورتون رو نفهمیدم ،

SYNDROME
دوشنبه 04 تیر 1386, 16:37 عصر
با سلام


شما می تونید حالتهای زیادی رو در شرط بنویسید تا اندازه دقیقا اونی باشه که شما تمایل دارید
البته می تونه روشی باشه.
ولی بهتر از یک دستور ریاضی استفاده کنم.
مثلا طول رشته را از یک size فونت ثابت کم کنی.


100-(Size*2)

البته این یک مثال بودی با این روش هر یک کاراکتری که بزنی از سایزت کم می شود.
ولی باید چک کنی زمانی که طول رشته به یک حد رسید دیگر کم نکنی چون فونت خیلی ریز می شود و یا منفی می شود.

Valadi
دوشنبه 04 تیر 1386, 16:45 عصر
حداقل متن 35 کاراکتر است و گفته جناب SYNDROME

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

یعنی هیچ راهی نیست ؟؟

Valadi
دوشنبه 04 تیر 1386, 16:49 عصر
منظورتون رو نفهمیدم ،

منظورم اینه که شما یک شرط را برقرار کردید بود که اگر بیشتر از طول لیبل شد سایز فونت 10 و اگر نشد سایز فونت 20
حالا بین این دو ؟؟؟؟؟؟

Mahmood_M
دوشنبه 04 تیر 1386, 18:46 عصر
سلام

منظورم اینه که شما یک شرط را برقرار کردید بود که اگر بیشتر از طول لیبل شد سایز فونت 10 و اگر نشد سایز فونت 20
حالا بین این دو ؟؟؟؟؟؟

ولی اندازه فونت به صورت طولی زیاد نمیشه ، یعنی کشیده نمی شه ...
یه راهش اینه که شما اصلا اندازه لابل رو تغییر ندید ، بلکه فقط اندازه فونت رو به اندازه دلخواه قرار بدید و خاصیت AutoSize لیبل رو هم True کنید ، اون وقت با تغییر اندازه Font ، سایز لیبل هم به همون اندازه تغییر میکنه ...
ولی اگر مشکلتون با برعکس این موضوع حل میشه ، یعنی اول اندازه لیبل تغییر کنه و بعد Font ، فکر نکنم امکان پذیر باشه ، چون این موضوع به چند تا چیز بستگی داره که رابطه خاصی با هم ندارند ، مثلا طول رشته لیبل ، حروف به کار رفته در لیبل ( مثلا حرف L ، حدود 5 تا به طول لیبل اضافه می کنه و حرف I حدود 2 تا ) ، ارتفاع لیبل ، Font لیبل و ...
البته هیچ چیز غیر ممکن نیست ... !
فکر کنم اگه فونت مربوط به لیبلتون فقط یک فونت باشه و در طول اجرای برنامه تغییر نکنه و طول رشته هاتون هم یک مقدار ثابت باشند ، بتونید یک رابطه بین تغییر اندازه اونها پیدا کنید ...
درضمن :
از خاصیت WordWrap هم میتونید استفاده کنید ، اگه میخواید طول لیبلتون ثابت باشه ، میتونید اون خاصیت رو True کنید تا ارتفاع لیبل زیاد بشه ...

موفق باشید ...