مرحبا شباب سؤال صغير ...
كيف الغي عمل ال X الموجود على title bar
الغيها ما اخليها تطلع من البرنامج
مرحبا شباب سؤال صغير ...
كيف الغي عمل ال X الموجود على title bar
الغيها ما اخليها تطلع من البرنامج
تم تعديل هذه المشاركة بواسطة mak_hourani في 10 سبتمبر 2009 في 02:43
الطريقة السهلة هي الإشتراك في الحدث FormClosing للنموذج ثم تحديد الخاصية e.Cancel على True. هذه الطريقة ستمنع غلق النموذج حتى بطريقة برمجية يعني الدالة Close. يعني يجب أن تضع شرطا لقبول أو رفض غلق النموذج.
الطريقة الصعبة باستعمال دوال API لإلغاء تنشيط الزر X على شريط العنوان و قائمة النظام على النموذج. إذا كانت هي ضالتك سأنشر لك الحل.
تحياتي...
السلام عليكــم ورحمـة الله وبركاتــه ،،
هذا الكود يقوم بإلغاء تفعيل Disable لزر الإغلاق
Imports System.Runtime.InteropServices
Public Class Form1
<DllImport("user32.dll")> _
Private Shared Function GetSystemMenu(ByVal hwnd As IntPtr, ByVal bRevert As Integer) As IntPtr
End Function
<DllImport("user32.dll")> _
Private Shared Function GetMenuItemCount(ByVal hMenu As IntPtr) As Integer
End Function
<DllImport("user32.dll")> _
Private Shared Function RemoveMenu(ByVal hMenu As IntPtr, ByVal nPosition As Integer, ByVal wFlags As Integer) As Integer
End Function
<DllImport("user32.dll")> _
Private Shared Function DrawMenuBar(ByVal hwnd As IntPtr) As Integer
End Function
Private Const MF_BYPOSITION As Integer = &H400&
Private Const MF_REMOVE As Integer = &H1000&
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim hSysMenu As IntPtr = GetSystemMenu(Me.Handle, False)
If hSysMenu Then
Dim subMenusCount As Integer = GetMenuItemCount(hSysMenu)
RemoveMenu(hSysMenu, subMenusCount - 1, MF_BYPOSITION Or MF_REMOVE)
DrawMenuBar(Me.Handle)
Else
MsgBox("Cann't find the system menu.", MsgBoxStyle.Exclamation)
End If
End Sub
End Classإن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال
يا سلام عليك يا شبح , فنان :clapping:
طيب كيف بقدر اشيلها بالمرة , الكود السابق فقط يعمل لها Disable
و أعمل شكل الفورم كأنه User Control من غير اطار ازرق حتى :nose_patch:
تم تعديل هذه المشاركة بواسطة assaf_abdullah في 10 سبتمبر 2009 في 13:23
<EMBED src=http://www.abdelghafar.com/images/banners/bm2.swf width=486 height=60 type=application/x-shockwave-flash EMBED < menu="false" loop="true" quality="high">
السلام عليكم
عشان تلغى Close box من الظهور اساسا , يجب ان تجعل الخاصية Control Box للفورم False , وتجعل الخاصية text للفورم فارغة
وكدا هيشيل ال Title bar كله
لكن ما شوفتش طريقة تلغى ال close button بس
Hany Saad Mostafa
ITI (Information Technology Institute) l
SD Dept.-Teaching Assistant
---
اسألكم الدعاء بظهر الغيب
hanysaad كتب:السلام عليكمعشان تلغى Close box من الظهور اساسا , يجب ان تجعل الخاصية Control Box للفورم False , وتجعل الخاصية text للفورم فارغة
وكدا هيشيل ال Title bar كله
لكن ما شوفتش طريقة تلغى ال close button بس
فعلا كما قال هانى ,, لا توجد طريقة على حد علمى تحذف زر الإغلاق نهائيا
إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال
خلص شكرا على المعلومة ;)
<EMBED src=http://www.abdelghafar.com/images/banners/bm2.swf width=486 height=60 type=application/x-shockwave-flash EMBED < menu="false" loop="true" quality="high">
مرحباً اخواني الكرام،
هناك أيضاً طريقة أبسط, ولاتحتاج منك استخدام اي من الـ( APIs ) ولكنها لاتخفي رز الـ( X ) من شريط اللافتة بل تجعله عاطل :
Protected Overrides ReadOnly Property CreateParams[color= #009900;]([color= #009900;]) [color= #b1b100;]As [color= #990000;]System[color= #339933;].Windows[color= #339933;].Forms[color= #339933;].CreateParams
Get
Dim Param [color= #b1b100;]As CreateParams [color= #339933;]= MyBase[color= #339933;].CreateParams
Param[color= #339933;].ClassStyle [color= #339933;]+= [color= #cc66cc;]512
[color= #b1b100;]Return Param
[color= #990000;]End Get
[color= #990000;]End Propertyبالتوفيق :) .
تم تعديل هذه المشاركة بواسطة Bashar Rabat في 10 سبتمبر 2009 في 19:35
The important thing is not so much
that every child should be taught,
as that every child should be given the wish to learn.
مشكورين يا اخوان ....
شكرا جزيلا ....
محمد رضى كتب:الطريقة السهلة هي الإشتراك في الحدث FormClosing للنموذج ثم تحديد الخاصية e.Cancel على True. هذه الطريقة ستمنع غلق النموذج حتى بطريقة برمجية يعني الدالة Close. يعني يجب أن تضع شرطا لقبول أو رفض غلق النموذج.الطريقة الصعبة باستعمال دوال API لإلغاء تنشيط الزر X على شريط العنوان و قائمة النظام على النموذج. إذا كانت هي ضالتك سأنشر لك الحل.
تحياتي...
بالنسبة لهاد الكود مو هاد الي بدي احتاجه لأنه لما بدي اعمل
Me.close ()
ما راح تشتغل هادي الخاصيه شكرا الك
فكره جيده اخى بشار
و للعلم فإن الرقم 512 يمثل الثابت
CS_NOCLOSE = 0x200
و هو جعل الـ style الخاص بالـ class التى سيتم تسجيلها لهذه الفورم بدون زر close
مع الأخذ فى الإعتبار ان طريقة الأخ ghost تتيح لك التحكم فى فاعلية الزر close بمعنى انك تستطيع تفعيله او عدم تفعيله اثناء عمل البرنامج و بناءا على عملية معينه تقوم بها فى برنامجك، اما طريقة الأخ بشار فهى تمنع وجود الزر close من الأساس اى تقوم بحذفه من قائمة الـ system للنافذه و بالتالى لن تستطيع التعامل مع هذا الزر على الإطلاق (مع العلم انه يمكن التحايل على موضوع حذفه بإعادة اضافته بنفس إعداداته و لكن هذا موضوع اخر).
و الله ولى التوفيق
تم تعديل هذه المشاركة بواسطة Muhammad alaa في 11 سبتمبر 2009 في 00:38
مدونتي: C++ Tips and Tricks
Muhammad alaa كتب:فكره جيده اخى بشارو للعلم فإن الرقم 512 يمثل الثابت
CS_NOCLOSE = 0x200و هو جعل الـ style الخاص بالـ class التى سيتم تسجيلها لهذه الفورم بدون زر close
مع الأخذ فى الإعتبار ان طريقة الأخ ghost تتيح لك التحكم فى فاعلية الزر close بمعنى انك تستطيع تفعيله او عدم تفعيله اثناء عمل البرنامج و بناءا على عملية معينه تقوم بها فى برنامجك، اما طريقة الأخ بشار فهى تمنع وجود الزر close من الأساس اى تقوم بحذفه من قائمة الـ system للنافذه و بالتالى لن تستطيع التعامل مع هذا الزر على الإطلاق (مع العلم انه يمكن التحايل على موضوع حذفه بإعادة اضافته بنفس إعداداته و لكن هذا موضوع اخر).
و الله ولى التوفيق
شكراً لك أخي محمد على تقييم الفكرة،
يمكنك التحكم بتفعيل الزر ( Close ) في وقت التشغيل ( RunTime ) أيضاً, لكن سيكون عليك تصريح متغير عام ضمن صفه ليكون القيمة الحالية لتفعيل الـ( Close Button ), هناك طريقتان لتغير الحالة إحداها بتغير الخاصية ( WindowState ) إلى ( Maximize ) ومن ثم إلى ( Normal ) ولكن هذه الطريقة غير متقنة وبالأحرى لا أحد سيرغبها, لذلك يمكنك الإعتماد على الإجراء ( RecreateHandle ) وبذلك سيعمل بشكل سليم, جرب الـ( Code ) التالي :
[color= #339933;]<Global[color= #339933;].Microsoft[color= #339933;].VisualBasic[color= #339933;].CompilerServices[color= #339933;].DesignerGenerated[color= #009900;]([color= #009900;])[color= #339933;]> [color= #990000;]_
Partial [color= #000000; font-weight: bold;]Class Form1
Inherits [color= #990000;]System[color= #339933;].Windows[color= #339933;].Forms[color= #339933;].Form
[color= #0000ff;]'Form overrides dispose to clean up the component list.
[color= #0000ff;] <System.Diagnostics.DebuggerNonUserCode()> _
[color= #0000ff;] Protected Overrides Sub Dispose(ByVal disposing As Boolean)
[color= #0000ff;] If disposing AndAlso components IsNot Nothing Then
[color= #0000ff;] components.Dispose()
[color= #0000ff;] End If
[color= #0000ff;] MyBase.Dispose(disposing)
[color= #0000ff;] End Sub
[color= #0000ff;] 'Required by the Windows Form Designer
[color= #000000; font-weight: bold;]Private components [color= #b1b100;]As [color= #990000;]System[color= #339933;].ComponentModel[color= #339933;].IContainer
[color= #0000ff;]'NOTE: The following procedure is required by the Windows Form Designer
[color= #0000ff;] 'It can be modified using the Windows Form Designer[color= #339933;].
[color= #0000ff;]'Do not modify it using the code editor.
[color= #0000ff;] <System.Diagnostics.DebuggerStepThrough()> _
[color= #0000ff;] Private Sub InitializeComponent()
[color= #0000ff;] Me.CKDisbleCloseButton = New System.Windows.Forms.CheckBox
[color= #0000ff;] Me.SuspendLayout()
[color= #0000ff;] '
[color= #0000ff;]'CKDisbleCloseButton
[color= #0000ff;] '
Me[color= #339933;].CKDisbleCloseButton[color= #339933;].AutoSize [color= #339933;]= [color= #000000; font-weight: bold;]True
Me[color= #339933;].CKDisbleCloseButton[color= #339933;].Location [color= #339933;]= [color= #000000; font-weight: bold;]New [color= #990000;]System[color= #339933;].Drawing[color= #339933;].Point[color= #009900;]([color= #cc66cc;]12[color= #339933;], [color= #cc66cc;]12[color= #009900;])
Me[color= #339933;].CKDisbleCloseButton[color= #339933;].Name [color= #339933;]= [color= #0000ff;]"CKDisbleCloseButton"
Me[color= #339933;].CKDisbleCloseButton[color= #339933;].Size [color= #339933;]= [color= #000000; font-weight: bold;]New [color= #990000;]System[color= #339933;].Drawing[color= #339933;].Size[color= #009900;]([color= #cc66cc;]124[color= #339933;], [color= #cc66cc;]17[color= #009900;])
Me[color= #339933;].CKDisbleCloseButton[color= #339933;].TabIndex [color= #339933;]= [color= #cc66cc;]0
Me[color= #339933;].CKDisbleCloseButton[color= #339933;].Text [color= #339933;]= [color= #0000ff;]"Disable Close Button"
Me[color= #339933;].CKDisbleCloseButton[color= #339933;].UseVisualStyleBackColor [color= #339933;]= [color= #000000; font-weight: bold;]True
[color= #0000ff;]'
[color= #0000ff;] 'Form1
[color= #0000ff;]'
[color= #0000ff;] Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
[color= #0000ff;] Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
[color= #0000ff;] Me.ClientSize = New System.Drawing.Size(153, 41)
[color= #0000ff;] Me.Controls.Add(Me.CKDisbleCloseButton)
[color= #0000ff;] Me.Name = "Form1"
[color= #0000ff;] Me.Text = "Form1"
[color= #0000ff;] Me.ResumeLayout(False)
[color= #0000ff;] Me.PerformLayout()
[color= #0000ff;] End Sub
[color= #0000ff;] Friend WithEvents CKDisbleCloseButton As System.Windows.Forms.CheckBox
[color= #0000ff;]End Class
[color= #0000ff;]Public Class Form1
[color= #0000ff;] Private Sub CKDisbleCloseButton_CheckedChanged(ByVal sender As System.Object, ByVal e As Sy
stem.EventArgs) Handles CKDisbleCloseButton.CheckedChanged
[color= #0000ff;] MyBase.RecreateHandle()
[color= #0000ff;] End Sub
[color= #0000ff;] Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
[color= #0000ff;] Get
[color= #0000ff;] Dim Param As CreateParams = MyBase.CreateParams
[color= #0000ff;] If CKDisbleCloseButton IsNot Nothing Then
[color= #0000ff;] If CKDisbleCloseButton.Checked Then
[color= #0000ff;] Param.ClassStyle = 520
[color= #0000ff;] Else
[color= #0000ff;] Param.ClassStyle = 8
[color= #0000ff;] End If
[color= #0000ff;] Else
[color= #0000ff;] Dim DefaultValue As Int32 = 8
[color= #0000ff;] Param.ClassStyle = DefaultValue
[color= #0000ff;] End If
[color= #0000ff;] Return Param
[color= #0000ff;] End Get
[color= #0000ff;] End Property
[color= #0000ff;]End Classمرة أخرى ( شكراً ) .
بالتوفيق :) .
The important thing is not so much
that every child should be taught,
as that every child should be given the wish to learn.