الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل هناط طريقة لتغيير الخط الموجود في عنوان النموذج ؟

مغلق
بدأه hfsh80 في 14 فبراير 2008 · 4 رد · 777 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

طريقة تغيير الخط في الـ Label والـ TextBox معروفة ، ولكن ماذا عن عنوان النموذج نفسه ؟

هل هناك طريقة لتغيير الخط واللون في العنوان ؟

مع الشكر والتقدير للجميع

#2

يرفع رفع الله قدركم :)

#3

السلام عليكم

الذي أعرفه أن نوع الخط للنوافذ العامة ولون إطار النافذة يتحكم فيها نظام التشغيل الذي هو الويندوز.

ولكن هناك طرق أخرى منها أن تجعل النافذة بدون إطار وتقوم بنفسك برسم شكل النافذة وتجعل لها إطار باللون الذي تريد على أن تكتب كود التحكم في تحريك النافذة وغلقها وتصغيرها لتبدو مقبولة للمستخدم للبرنامج.

أرجو أني قد أفدتك بمعلومتي المتواضعة.

#4

نعم ممكن باستخدام أدوات الرسم GDI

انظر الكود التالي كمثال عن كيفية القيام بعدة تغييرات على نص عنوان النافذة

Public Class Form1

	' Declare System functions from USER32.DLL System Library
	<Runtime.InteropServices.DllImport("user32.dll")> _
	Public Shared Function SendMessage(ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, Optional ByRef lParam As Integer = 0) As Integer
	End Function

	<Runtime.InteropServices.DllImport("user32.dll")> _
	Public Shared Function GetWindowDC(ByVal hWnd As IntPtr) As IntPtr
	End Function

	<Runtime.InteropServices.DllImport("user32.dll")> _
	   Public Shared Function ReleaseDC(ByVal hWnd As IntPtr, ByVal hDC As IntPtr) As Int32
	End Function

	' Declare WM_NCPAINT system message nedded by our code
	Const WM_NCPAINT As Integer = &H85

	' Overriding WndProc to redraw form's title text
	Protected Overrides Sub WndProc(ByRef m As Message)
		' Resend the messages to the base class
		MyBase.WndProc(m)

		' if the message is WM_NCPAINT then draw our own title text
		If m.Msg = WM_NCPAINT Then
			Dim hdc As IntPtr = GetWindowDC(m.HWnd)
			Dim g As Graphics = Graphics.FromHdc(hdc)
			Dim rDraw As Rectangle = Me.ClientRectangle
			Me.Text = ""
			Dim fon As Font = New Font(Me.Font.FontFamily.Name, _titleFontSize, FontStyle.Bold)
			g.DrawString(_TitleText, fon, _TitleTextColor, _Xpos, _Ypos)
			ReleaseDC(Me.Handle, hdc)
		End If
	End Sub

	' Field and property for changing font size
	Private _titleFontSize As Short = 9
	Public Property TitleFontSize() As Short
		Get
			Return _titleFontSize
		End Get
		Set(ByVal value As Short)
			If value > 0 Then
				_titleFontSize = value
				' send the WM_NCPAINT message to update the titile text
				SendMessage(Me.Handle.ToInt32, WM_NCPAINT, 1)
			End If
		End Set
	End Property

	' Field and property for changing the Title Text
	Private _TitleText As String = "Some Title"
	Public Property TitleText() As String
		Get
			Return _TitleText
		End Get
		Set(ByVal value As String)
			_TitleText = value
			SendMessage(Me.Handle.ToInt32, WM_NCPAINT, 1)
		End Set
	End Property

	' Field and Property for changng the title text color
	Private _TitleTextColor As Brush = Brushes.AliceBlue
	Public Property TitleTextColor() As Brush
		Get
			Return _TitleTextColor
		End Get
		Set(ByVal value As Brush)
			_TitleTextColor = value
			SendMessage(Me.Handle.ToInt32, WM_NCPAINT, 1)
		End Set
	End Property

	' You Can Control The X Position Of text
	Private _Xpos As Integer = 25
	Public Property TitleText_X_Position() As Integer
		Get
			Return _Xpos
		End Get
		Set(ByVal value As Integer)
			If value > 0 Then
				_Xpos = value
				SendMessage(Me.Handle.ToInt32, WM_NCPAINT, 1)
			End If
		End Set
	End Property

	' You Can Control The Y Position Of text
	Private _Ypos As Integer = 8
	Public Property TitleText_Y_Position() As Integer
		Get
			Return _Ypos
		End Get
		Set(ByVal value As Integer)
			If value > 0 Then
				_Ypos = value
				SendMessage(Me.Handle.ToInt32, WM_NCPAINT, 1)
			End If
		End Set
	End Property

	Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
		' Test the new title text properties
		Me.TitleText = "I can do it"
		Me.TitleFontSize = 11
		Me.TitleTextColor = Brushes.Bisque
		Me.TitleText_X_Position = 50
		Me.TitleText_Y_Position = 5
	End Sub

End Class

كما يوجد مثال قديم في المنتدى في الموضوع ينطلق من نفس مبدأ فكرتك عمل عنوان للفورم على سطرين

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 16 فبراير 2008 في 12:39

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#5

معلومات قيمة جداً أشكركم جميعا على هذه الجهود الكبيرة .

الفكرة نجحت و الفضل يعود لله ثم لكم بالرغم من أن الكثير من الأسطر لم أفهمها لأني مبتدأ نوعاً ما ومع ذلك أنا في شوق كبير لفهم ما يجري :)

تحياتي لكم جميعا

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…