ورود

View Full Version : تغییر Font همه لیبل ها



Mohamad ghorbani
پنج شنبه 19 خرداد 1390, 16:40 عصر
سلام .
سوالم اینه که آیا میشه تمام لیبل های برنامه رو Font شون رو یکجا عوض کنیم؟
دستوری هست که بشه به راحتی این کارو کرد و براش کلی کد ننویسم؟
با تشکر ...

Mr'Jamshidy
پنج شنبه 19 خرداد 1390, 16:59 عصر
سورس ضمیمه شد
کد نوشته شد :بامزه:
موفق باشید

کد:

Private Sub Form_Load()
Dim objCtrl As Control
'Dim mFont As Font
'Set mFont = Me.Font

For Each objCtrl In Me.Controls
'If TypeName(objCtrl) = "Label" Then objCtrl.Font = mFont
If TypeName(objCtrl) = "Label" Then objCtrl.Font.Name = "Tahoma"
If TypeName(objCtrl) = "Label" Then objCtrl.Font.Bold = True
If TypeName(objCtrl) = "Label" Then objCtrl.Font.Italic = True
If TypeName(objCtrl) = "Label" Then objCtrl.Font.Underline = True
Next
End Sub


سورس:

Mohamad ghorbani
پنج شنبه 19 خرداد 1390, 21:18 عصر
سورس ضمیمه شد
کد نوشته شد :بامزه:
موفق باشید


با تشکر از شما ...
ولی اگه چندتا فرم داشته باشیم باید واسه همه فرم ها این کد رو بنویسی؟
یعنی با زدن یه دکمه کل فرم ها فونتش عوض شه؟

محسن واژدی
پنج شنبه 19 خرداد 1390, 22:04 عصر
با تشکر از شما ...
ولی اگه چندتا فرم داشته باشیم باید واسه همه فرم ها این کد رو بنویسی؟
یعنی با زدن یه دکمه کل فرم ها فونتش عوض شه؟

سلام علیکم
بایستی برنامه فوق را عمومی کنید، برای اینکار کافیست دستورات آقای Mr'Jamshidy را در یک روال و در ماژول قرار دهید؛
اول یک ماژول ایجاد و کد زیر را در آن کپی کنید:
Public Sub SetLabelsFont(fForm As Form)
Dim objCtrl As Control
'Dim mFont As Font
'Set mFont = Me.Font
For Each objCtrl In fForm.Controls
'If TypeName(objCtrl) = "Label" Then objCtrl.Font = mFont
If TypeName(objCtrl) = "Label" Then objCtrl.Font.Name = "Tahoma"
If TypeName(objCtrl) = "Label" Then objCtrl.Font.Bold = True
If TypeName(objCtrl) = "Label" Then objCtrl.Font.Italic = True
If TypeName(objCtrl) = "Label" Then objCtrl.Font.Underline = True
Next
End Sub

نمونه استفاده:
SetLabelsFont Me

موفق باشید

Mohamad ghorbani
جمعه 20 خرداد 1390, 00:31 صبح
سورس ضمیمه شد
کد نوشته شد :بامزه:
موفق باشید

ببخشید یه سوال دیگه:
اگه بخوایم به جای نام فونت، رنگ فونت رو عوض کنیم، باید به جای
If TypeName(objCtrl) = "Label" Then objCtrl.Font.Name = "Tahoma"
از :
If TypeName(objCtrl) = "Label" Then objCtrl.Font.color= "vbblue"
استفاده کنیم؟
اگه اینه باشه جواب نمیده.
لطفا راهنمایی کنید.

Mohamad ghorbani
جمعه 20 خرداد 1390, 00:48 صبح
ببخشید خودم جواب رو پیدا کردم!:لبخند:
If TypeName(objCtrl) = "Label" Then objCtrl.Forecolor= vbblue

Mr'Jamshidy
جمعه 20 خرداد 1390, 16:33 عصر
خوب خدا رو شکر که مشکل حل شد

اما تو نمونه ای که گزاشتم

Dim objCtrl As Control
'Dim mFont As Font
'Set mFont = Me.Font
For Each objCtrl In fFrom.Controls
'If TypeName(objCtrl) = "Label" Then objCtrl.Font = mFont
If TypeName(objCtrl) = "Label" Then objCtrl.Font.Name = "Tahoma"
If TypeName(objCtrl) = "Label" Then objCtrl.Font.Bold = True
If TypeName(objCtrl) = "Label" Then objCtrl.Font.Italic = True
If TypeName(objCtrl) = "Label" Then objCtrl.Font.Underline = True
Next


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

Dim objCtrl As Control
Dim mFont As Font
Set mFont = Me.Font
For Each objCtrl In fFrom.Controls
If TypeName(objCtrl) = "Label" Then objCtrl.Font = mFont
Next


حالا به جای Set mFont = Me.Font میتونید از روش های دیگه استفاده کنید و فانت رو مقدار دهی کنید مثلا

mFont.Name = "Tahoma"
mFont.Bold = True
mFont.Italic = True

و برای تغییر رنگ هم که خوشبختانه خودتون متوجه شدید که تو ویبی6 ربطی به فانت نداره و مربوط به شیئ میشه

برای تغییر به صورت عمومی هم که دوست عزیزمون mohsenvj (http://barnamenevis.org/member.php?104729-mohsenvj) توضیح کاملی دادن

موفق باشید