PDA

View Full Version : سوال: استفاده از یک فونت



ali-a2
دوشنبه 26 تیر 1391, 23:36 عصر
با سلام

میخواستم بپرسم راهی هس کـه همه ی دکمه ها , Textbox ها و .... دارای یک فونت اندازه باشن و نیاز نباشه هر دکمه ای یا تکست باکسی که میزارم دوباره فونتشو عوض کنم ؟ روشی غیر از Select All کردن ؟

the king
دوشنبه 26 تیر 1391, 23:55 عصر
با سلام

میخواستم بپرسم راهی هس کـه همه ی دکمه ها , Textbox ها و .... دارای یک فونت اندازه باشن و نیاز نباشه هر دکمه ای یا تکست باکسی که میزارم دوباره فونتشو عوض کنم ؟ روشی غیر از Select All کردن ؟
با کد نویسی که میشه اما معمولا اولین کاری که بعد از ساختن فرم انجام می دهم اینه که فونت اش رو مشخص کنم.
هر کنترلی که داخل یک فرم یا هر کنترل دیگری قرار بگیره، بصورت پیشفرض از فونت اون فرم یا کنترل والد اش استفاده می کنه.
اما بعد از اینکه روی فرم قرار گرفت مشخصات فونت اش ثبت میشه و دیگه کاری با فونت والد اش نداره و اگه قبلا فوت والد رو
تنظیم نکرده بودید ناچار هستید که فونت کنترل جدید رو تغییر دهید.

ali-a2
سه شنبه 27 تیر 1391, 00:07 صبح
ممنون جناب The - King ولی من منظورم بعد از گذاشتن کنترل هاست ، تو اون وضعیت غیر از Select All دیگه روشی نیس ؟

the king
سه شنبه 27 تیر 1391, 00:37 صبح
ممنون جناب The - King ولی من منظورم بعد از گذاشتن کنترل هاست ، تو اون وضعیت غیر از Select All دیگه روشی نیس ؟
عرض کردم که هست، با کد نویسی. پروژه تان را باز کنید. در منوی Project روی گزینه Add User Control کلیک کنید و در زبانه New دکمه Open را انتخاب کنید.
کد زیر رو داخل UserControl1 بنویسید :

Private mBaseFont As StdFont

Public Property Get BaseFont() As StdFont
Set BaseFont = mBaseFont
End Property

Public Property Set BaseFont(ByRef value As StdFont)
Set mBaseFont = value
Dim p As Object
Dim c As Object
Dim index As Integer
Set p = Extender.Parent
On Error GoTo LErr
For index = 0 To p.Controls.Count - 1
Set c = p.Controls.Item(index)
If Not (c Is Extender) Then
Set c.Font = mBaseFont
End If
LNext:
Next
Exit Property
LErr:
Resume LNext:
End Property

Private Sub UserControl_InitProperties()
Set mBaseFont = Ambient.Font
End Sub

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
Set mBaseFont = PropBag.ReadProperty("BaseFont", Ambient.Font)
End Sub

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
PropBag.WriteProperty "BaseFont", mBaseFont
End Sub


بعد پنجره طراحی ظاهر و کد این UserControl1 را ببندید تا بشه به فرم ها اضافه اش کرد (تا زمانی که پنجره هایش باز باشه غیر فعاله).
در پنجره Toolbox که لیست کنترل ها هست، یک آیکون جدید اضافه شده، یک نمونه اش را در یک بخش خالی فرم اضافه کنید که
اسم پیشفرض اش UserControl11 خواهد بود. این UserControl11 در مشخصه هایش یک مشخصه BaseFont دارد، اون فونت را
تغییر دهید، هر چی کنترل روی فرمه یهو فونت شون عوض میشه. هر وقت لازم اش نداشتید مجددا از روی فرم حذف اش کنید.

M.T.P
سه شنبه 27 تیر 1391, 00:45 صبح
بهترین روش برای یکپارچه کردن فونت همه فرم ها استفاده از روش زیر است.

روال زیر رو توی یک ماژول کپی کنید:


Sub SetFont(cForm As Form)
On Error Resume Next
Dim obFont As StdFont
Dim ctl As Object

Set obFont = New StdFont

obFont.Name = "Tahoma"
obFont.Size = 10
obFont.Bold = True
obFont.Charset = 178

For Each ctl In cForm.Controls
Set ctl.Font = obFont
Next ctl

Set obFont = Nothing
End Sub

حالا برای هر چند تا فرم که دارید کافیه فقط تو رویداد Form_Load هر فرم بنویسید:


Private Sub Form_Load()
SetFont Me
End Sub

با این حال هر وقت تصمیم داشتید فونت پروژتون رو عوض کنید فقط و فقط کافیه اسم فونت رو که در روال بالا من Tahoma گذاشتم
به فونت مورد نظرتون تغییر بدید مثلا Arial

M.T.P
سه شنبه 27 تیر 1391, 19:26 عصر
یکی از مشکلاتی که بعضی از دوستان با نوشته های فارسی دارن اینه که بصورت صحیح نمایش داده نمیشه و اون به خاطر Charset فونت کنترل هست
در زیر عدد مربوط به Charset هر یک از زبان های مختلف رو ببینید:


Western = 1
Greek = 161
Turkish = 162
Vietnamese = 163
Hebrew = 177
Arabic = 178
Baltic = 186
Cyrillic = 204
Thai = 222
Central European = 238

و برای ما فارسی زبان ها 178 هست که در روال SetFont اعمال شد.

vbhamed
چهارشنبه 28 تیر 1391, 00:51 صبح
سلام

يك راه ديگه هم هست، فايل با پسوند frm مربوط به فرمتون رو با نوت پد باز كنيد و خطوط مربوط به Font رو يكجا با فونت جديد Replace كنيد و سپس ذخيره كنيد و بعد پروژه رو در وي بي باز كنيد
البته حتما قبلش يك كپي از كل پروژه بگيريد مخصوصا فايلهاي پسوند log

در اينصورت تو حالت طراحي هم فونت جديد تنظيم شده هست