اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

اعمل شاشة دخول برنامجك بنفسك وسيبك من التقليد


الردود الموصى بها

بسم الله الرحمن الرحيم

وجدت كثيرا من الاعضاء تطلب هذا الموضوع كثيرا  وعندما وضعت  مثال لشاشة دخول بكلمة مرورظهر ليا مشرف كدا كالعادة وقالي البوقين دول

كنت أفضل يكون في موضوع مستقل لأن المشاركات الفرعية تندثر مع الوقت

لما تلاقي نفسك عملت ملف مميز زي كدا .. افتح موضوع جديد واشرح بالتفصيل (مش ترمي الملف وتجري ..) وبعد كدا في المشاركة الفرعية تضع رابط للموضوع ليستفيد أكبر عدد من الأعضاء

إذ أن المتابعين للمشاركات قلة .. ولكن هناك كثر في انتظار الموضوعات الجديدة للتعلم والاستفادة .. متنساش كلامي يا سكر زيادة

 

وانا حبيت اوجه له رسالة من هنا  واقول له  انا بحب الشاي سكر خفيف

المهم حبيبي الغالي فعلا صدق في كلامه  فا نخش في الموضوع وبلاش رغي بقي

اولا نفتح بقي ملف اكسيل  جديد ونخش محرر الاكواد  ونعمل يوزر فورم جديد

ونقوم بوضع  عدد

واحد  ليبل  عشان نتكب فيها كلمة المرور او رمز الحماية  او  أي حاجه في أي حاجه

اثنين تكست بوكس

الاول لكتابة المستخدم داخلها كلمة المرور اللي هيكتبها عند الدخول

الثاني مش مهم لينا  كل لزمته انه كل ما المستخدم يحط رقم  غلط يزود فيه رقم لحد لما يوصل للرقم المحدد لاغلاق البرنامج وتظهر رسالة تقوله GAME OVER

بمعني انه استنفذ كل المحاولات  وجاري اغلاق البرنامج

وواحد كومند   زرار يعني  عشان ندوس عليه للدخول

ز ما احنا شايفين

undefined

وطبعا متنسوش تحطه خلفيه حلوة كدا للفورم دا اهم حاجه عندي اه كله الا الجماليات

وموضوع الجماليات دا نعمله موضوع قريب ان شاء الله بس تكون عندكو لسعه فوتوشوب بس

وطبعا نخلي الخلفية علي وضع الاسترتش اه يعني الصورة تبقي لازقه في الفورم  كيبر تكبر معاه يصغر تصغر معاه  تمام كلنا عارفين الاسترتش كويس

زي ما احنا شايفين

undefined

نيجي بقي للاكواد

اول كود نحطه في  الجينرال بقي اول حاجه

Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "User32" (ByVal hWnd As Long) As Long
Const GWL_STYLE = -16
Const WS_CAPTION = &HC00000
Const WS_SYSMENU = &H80000

والكود التاني في حدث تهيئة اليوزر فورم

Private Sub UserForm_Initialize()
    Dim lngWindow As Long, lFrmHdl As Long
    lFrmHdl = FindWindow(vbNullString, Me.Caption)
    lngWindow = GetWindowLong(lFrmHdl, GWL_STYLE)
    lngWindow = lngWindow And (Not WS_CAPTION)
    Call SetWindowLong(lFrmHdl, GWL_STYLE, lngWindow)
   Call DrawMenuBar(lFrmHdl)
End Sub

 toolwindowودول لزوم الفشخرة والمنظره وعشان نقصقص البتاعه دي

ويضفي جمالا للفورمة

undefined

هي الخيارات بتاعتها متاحه في الفيجوال بيسك  عادي

زي كدا 

undefined

ننفض للحته دي 

نخش علي

 الكود اثالث

ودا هيبقي في تنشيط اليوزر فورم

Private Sub UserForm_Activate()
Application.WindowState = xlMaximized
  With Me
 .Height = Application.Height
 .Width = Application.Width
 .Left = Application.Left
 .Top = Application.Top
 End With
End Sub

ايه الكلام دا  

دا ياسيدي  بنقوله كبر لنا البرنامج ملئ الشاشة

    Maximized

    لما تفتح اليوزر فورم زي الشاطر خلي  مقاسات اليوزر فورم زي مقاسات البرنامج

واحنا مكبرين شاشة البرنامج يبقي كدا اليوزر فورم هيبقى كبير زي البرنامج تمام كدا

الكود الرابع

Private Sub CommandButton1_Click()
If TextBox1.Text = "123" Then
Me.Hide
Else
am = am + 1
MsgBox " لقد استخدمت   " & am & "   محاولة من اصل 5  محاولات, vbCritical, "elmalak_elhazen_yasser@yahoo.com"
If am = 5 Then
MsgBox "لقد استنفذت جميع المحاولات"
ActiveWorkbook.Save
ActiveWorkbook.Close
End If
End If
End Sub

اكيد دماغكو لفت معايا معلش انا شرحي علي قده استحملوني

دا كود 

بيقول اذا كانت التكست بوكس واحد بتساوي 123

اذن ياعم اخفيني من وشك  ويظهر معاك ملف الاكسيل عادي

طيب اذا ما حصلشي بقي نعمل ايه

تعالا بقي  am  

دي اسم التكست بوكس اتنين بس انا غيرته الى am

 ندوس علي التكست بوكس اتنين ونغيره من هنا 

undefined

ومننساش نخفى التكست بوكس دا من هنا

undefined

واحد فكيك بقي يقول ليه am

اقوله ياناصح دول اول حرف من اسيل واول حرف من محمد  ولادي تمام يامعلم

محدش يشتم ولا يضرب :dance1:

 المهم بقي  ان am

بتساوي نفسها + 1 تمام

اه قبل ما انسى نخلي قيمة am دي 

بصفر نكتب جواها صفر عشان لما يعد يعد من بعد الصفر

يعني كل ما المعلم يدوس غلط يزود رقم واحد وتطلع رسالة تقوله وصلت لكام محاولة

ولما يوصل للمحاولة الخامسة يقوله بالسلامة ياحبي 

انا هقفل وانام

وتمام كدا زي الفل والكلام خدنا والدرس خلص 

شفتوا انتو مش مصحصحين ازاي 

نسينا نحط كود فتح الفورم في حدث فتح الملف

Private Sub Workbook_Open()
UserForm1.Show
End Sub

 وبعدين انا مش هحط امثلة 

زي واحد صاحبي وحبيبي بيقول انكم لازم تتعبوا شوية وتعملوها بنفسكوا بدل ما تخدو كوبي وبست وخلاص

للحديث بقية باذن الله لاستكمال اضافات تانيه

اتمنى من الله ان ينفعكم هذا الشرح 

تقبلو تحياتي ياسر العربي

قلت اضيف صورة الكود لكمعشان ميبقاش ليكو حجه

undefined

 

  • Like 9
رابط هذا التعليق
شارك

اعذروني انا شرحت الموضوع دا سريع كدا عشان مشغول ومش فاضي 

 

وياريت اللي يطبق الشرح يحط لينا المثال هنا بقي عشان نشوف العباقرة

 

  • Like 1
رابط هذا التعليق
شارك

12 minutes ago, الصـقر said:

كبير من يومك يا كبير

:signthankspin::signthankspin::signthankspin:

خلى بالك من التاتش

تقبل تحياتى

 

دا انا عمال اصلح في التاتشات ياجدع الواحد لازم يتفرغ وهو بيكتب موضوع انا بتقع مني حاجات من الاستعجال

تشكر حبيبي

  • Like 1
رابط هذا التعليق
شارك

حبيبى الغالى / ياسر العربى

فى البداية رائع جدا جدا

بس إنت ليه مستعجل

عايزين نستمتع بالشرح بالتفصيل

عالعموم سلمت يمينك وجزيت خير الجزاء على كل ما تقدمه

  • Like 2
رابط هذا التعليق
شارك

7 minutes ago, م / ياسر فتحى البنا said:

حبيبى الغالى / ياسر العربى

فى البداية رائع جدا جدا

بس إنت ليه مستعجل

عايزين نستمتع بالشرح بالتفصيل

عالعموم سلمت يمينك وجزيت خير الجزاء على كل ما تقدمه

مشكور اخي ياسر فتحي علي مروركم الكريم وباذن الله  تجدو الشرح الوافي

 

رابط هذا التعليق
شارك

اخي الحبيب ياسر العربي

هو دا الشغل اللي بجد ..اللي عايز يتعلم هيطبق بنفسه .. ولو قابلته مشكلة مش هيغلب إنه يسأل في النقطة اللي مش واضحة بالنسبة له

أحسنت أحسنت أحسنت (ومتخافش مفيش ضرب ...كله شتيمة بس)

تقبل وافر تقديري واحترامي

  • Like 2
رابط هذا التعليق
شارك

20 minutes ago, ياسر خليل أبو البراء said:

اخي الحبيب ياسر العربي

هو دا الشغل اللي بجد ..اللي عايز يتعلم هيطبق بنفسه .. ولو قابلته مشكلة مش هيغلب إنه يسأل في النقطة اللي مش واضحة بالنسبة له

أحسنت أحسنت أحسنت (ومتخافش مفيش ضرب ...كله شتيمة بس)

تقبل وافر تقديري واحترامي

تسلملي حبيبي علي مرورك السكر دا :rol:

واشتم ياعم الشتيمة مش بتلصق 

:signthankspin:

  • Like 1
رابط هذا التعليق
شارك

بسم الله الرحمن الرحيم

اليوم سنشرح عمل شاشة دخول ولكن

باسم مستخدم وكلمة مرور

بسم الله نبدأ

بالشكل الموضح يوجد

المشار لهم بالسهم الأخضر  7 label

السهم الأحمر    1 textbox

السهم الأسود     1 combobox

وزر دخول      وزر خروج

وطبعا اتنين image  لشعار الشركة

undefined

بعد تصميم نفس الشكل السابق

نقوم بعمل شيت جديد اسمه users

undefined

undefined

كما بالصورة

بعد تسمية الشيت وخصوصا برمجيا  مثل التحديد الأحمر

نضيف البيانات كالأتي

Capture.JPG.8efb534c70e99ec3510e113f8907

نيجي بقي للاكواد

اولا كما تعلمنا في الدرس السابق نقوم بوضع هذه الاكواد في اليوزرفورم

في general))

Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "User32" (ByVal hWnd As Long) As Long
Const GWL_STYLE = -16
Const WS_CAPTION = &HC00000
Const WS_SYSMENU = &H80000

في حدث تهيئة الفورم

Private Sub UserForm_Initialize()
    Dim lngWindow As Long, lFrmHdl As Long
    lFrmHdl = FindWindow(vbNullString, Me.Caption)
    lngWindow = GetWindowLong(lFrmHdl, GWL_STYLE)
    lngWindow = lngWindow And (Not WS_CAPTION)
    Call SetWindowLong(lFrmHdl, GWL_STYLE, lngWindow)
    Call DrawMenuBar(lFrmHdl)
End Sub

في حدث الاغلا

ق

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If unloadmode = vbFormControlMenu Then
Cancel = True
MsgBox "غير مسموح"
End If
End Sub

اما في حدث تنشيط الفورم فنقوم باضافة اكواد ربط الليبل الخاصة ببيانات الشركة  بالخلايا التي تحتوي علي البيانات

Private Sub UserForm_Activate()
Application.WindowState = xlMaximized
Application.Visible = False
Label1.Caption = users.[e1]
Label2.Caption = users.[e2]
Label3.Caption = users.[e3]
  With Me
 .Height = Application.Height
 .Width = Application.Width
 .Left = Application.Left
 .Top = Application.Top
 End With
End Sub

وفي زر الخروج

Private Sub CommandButton2_Click()
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub

تبقي لنا الكود الاهم

وهو زر الادخال

Private Sub CommandButton1_Click()
On Error GoTo 86
If Application.WorksheetFunction.VLookup(ComboBox1.Value, users.Range("a2:l0"), 2, 0) = TextBox1.Text Then
Me.Hide
Application.Visible = True
MsgBox ComboBox1.Value & " مرحبا بك/   ", , "elmalak_elhazen_yasser@yahoo.com"
 Else
86
Label7= Label7+ 1
MsgBox " لقد استخدمت  " & Label7 & " محاولة من اصل  5  محاولات" ,vbCritical, "elmalak_elhazen_yasser@yahoo.com"
If Label7= 5 Then
MsgBox "لقد استنفذت جميع المحاولات"
ActiveWorkbook.Save
ActiveWorkbook.Close
End If
End If
End Sub

استخدمنا هنا دالة vlookup للبحث والمقارنة عن المستخدم وكلمة المرور

ان لم يحقق الشرط يتم التحويل الى عدد المحاولات  ومنها الى اغلاق البرنامج

وطبعا زي كل مره ننسى نحط كود في حدث فتح الملف

Private Sub Workbook_Open()
 Userform1.Show   
End Sub

وطبعا لسه مش ربطنا الكمبوكس اللي فيها اسم المستخدم

عشان نسهل عليكم نعملها بالطريقة التقليدية وبعدين نبقي نعملها باحترافيه شوية

undefined

نحدد الكمبوكس ونكتب اسم الشت والرينج اللي فيه اسم المستخدم كما موضح بالصورة  المظلل بالاحمر

الى شاشة دخول اخرى باذن الله

مع تحياتي ياسر العربي 

اي مشاكل تواجهكم يرجى ابلاغنا لحلها

 

 

 

  • Like 2
رابط هذا التعليق
شارك

12 minutes ago, marwa1974 said:

والجديد  فى البرمجة يعمل ايه 

طيب الى مش فاهم يعمل ايه

نخش الاول هنا ناخد بدايات

http://www.officena.net/ib/topic/64472-بداية-الطريق-لإنقاذ-الغريق/

وكمان ندخل هنا 

http://www.officena.net/ib/topic/64037-سلسلة-علمنى-كيف-اصطاد-الفورم-forms/

 وبعدين نيجي هنا ونستفسر  عن النقط اللي مش مفهومه

ولو في اسئلة كتير نعمل موضوع مستقل  ونمشي فيه خطوة خطوة 

تمام 

وشكرا

رابط هذا التعليق
شارك

52 دقائق مضت, ياسر العربى said:

بسم الله الرحمن الرحيم

اليوم سنشرح عمل شاشة دخول ولكن

باسم مستخدم وكلمة مرور

بسم الله نبدأ

بالشكل الموضح يوجد

المشار لهم بالسهم الأخضر  7 label

السهم الأحمر    1 textbox

السهم الأسود     1 combobox

وزر دخول      وزر خروج

وطبعا اتنين image  لشعار الشركة

undefined

بعد تصميم نفس الشكل السابق

نقوم بعمل شيت جديد اسمه users

undefined

undefined

كما بالصورة

بعد تسمية الشيت وخصوصا برمجيا  مثل التحديد الأحمر

نضيف البيانات كالأتي

Capture.JPG.8efb534c70e99ec3510e113f8907

نيجي بقي للاكواد

اولا كما تعلمنا في الدرس السابق نقوم بوضع هذه الاكواد في اليوزرفورم

في general))


Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar Lib "User32" (ByVal hWnd As Long) As Long
Const GWL_STYLE = -16
Const WS_CAPTION = &HC00000
Const WS_SYSMENU = &H80000

في حدث تهيئة الفورم


Private Sub UserForm_Initialize()
    Dim lngWindow As Long, lFrmHdl As Long
    lFrmHdl = FindWindow(vbNullString, Me.Caption)
    lngWindow = GetWindowLong(lFrmHdl, GWL_STYLE)
    lngWindow = lngWindow And (Not WS_CAPTION)
    Call SetWindowLong(lFrmHdl, GWL_STYLE, lngWindow)
    Call DrawMenuBar(lFrmHdl)
End Sub

في حدث الاغلا

ق


Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If unloadmode = vbFormControlMenu Then
Cancel = True
MsgBox "غير مسموح"
End If
End Sub

اما في حدث تنشيط الفورم فنقوم باضافة اكواد ربط الليبل الخاصة ببيانات الشركة  بالخلايا التي تحتوي علي البيانات


Private Sub UserForm_Activate()
Application.WindowState = xlMaximized
Application.Visible = False
Label1.Caption = users.[e1]
Label2.Caption = users.[e2]
Label3.Caption = users.[e3]
  With Me
 .Height = Application.Height
 .Width = Application.Width
 .Left = Application.Left
 .Top = Application.Top
 End With
End Sub

وفي زر الخروج


Private Sub CommandButton2_Click()
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub

تبقي لنا الكود الاهم

وهو زر الادخال


Private Sub CommandButton1_Click()
On Error GoTo 86
If Application.WorksheetFunction.VLookup(ComboBox1.Value, users.Range("a2:l0"), 2, 0) = TextBox1.Text Then
Me.Hide
Application.Visible = True
MsgBox ComboBox1.Value & " مرحبا بك/   ", , "elmalak_elhazen_yasser@yahoo.com"
 Else
86
Label7= Label7+ 1
MsgBox " لقد استخدمت  " & Label7 & " محاولة من اصل  5  محاولات" ,vbCritical, "elmalak_elhazen_yasser@yahoo.com"
If Label7= 5 Then
MsgBox "لقد استنفذت جميع المحاولات"
ActiveWorkbook.Save
ActiveWorkbook.Close
End If
End If
End Sub

استخدمنا هنا دالة vlookup للبحث والمقارنة عن المستخدم وكلمة المرور

ان لم يحقق الشرط يتم التحويل الى عدد المحاولات  ومنها الى اغلاق البرنامج

وطبعا زي كل مره ننسى نحط كود في حدث فتح الملف


Private Sub Workbook_Open()
 Userform1.Show   
End Sub

وطبعا لسه مش ربطنا الكمبوكس اللي فيها اسم المستخدم

عشان نسهل عليكم نعملها بالطريقة التقليدية وبعدين نبقي نعملها باحترافيه شوية

undefined

نحدد الكمبوكس ونكتب اسم الشت والرينج اللي فيه اسم المستخدم كما موضح بالصورة  المظلل بالاحمر

الى شاشة دخول اخرى باذن الله

مع تحياتي ياسر العربي 

اي مشاكل تواجهكم يرجى ابلاغنا لحلها

 

 

 

السّلام عليكم و رحمة الله و بركاته

ألف شكر أستاذنا القدير "ياسر العربي" على الشّروحات المميّزة .. الشّافية و الكافية

جزاك الله خيرًا و زادها بميزان حسناتك

فائق إحتراماتي

1.jpg.71a0d6704ba27b28a0b7035aa3f54d9b.j

 

رابط هذا التعليق
شارك

3 hours ago, سعد عابد said:

اخى ياسر العربى

اتتبع مواضيعك بشغف

جزاك الله خيرا

مواضيعك ممتازة يستفيد منها المبتدئ والمتوسط والمحترف

وفقكم الله

شاكر لك مرورك العطر هذا اخي الغالي سعد عابد

ومتابعتك هذه تزيد من قيمة مواضيعي

لك مني كل الشكر والتقدير

1 hour ago, م / ياسر فتحى البنا said:

هاتفضل رائع أخى الحبيب

ياسر العربى

سأكتفى بقول

زادك الله من العلم الكثير والكثير

مااروعك انت اخي الغالي ياسر فتحي

انت الداعم والمحفز والذي ينير اضواء المنتدى بلمساته الجميلة وحسن الكلام

لك مني كل الاحترام

 

  • Like 1
رابط هذا التعليق
شارك

أخي ياسر السلام عليكم

عمل جميل ورائع تستحق الشكر والإعجاب و

الأكواد واضحة...لكننا نطمع بكرمكم فتشرح لنا الأحداث التي ذكرتها.

  1. حدث جنرال
  2. حدث تهيئة الفورم
  3. حدث اﻹغلاق.

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

  • Like 1
رابط هذا التعليق
شارك

13 hours ago, محمد حسن المحمد said:

أخي ياسر السلام عليكم

عمل جميل ورائع تستحق الشكر والإعجاب و

الأكواد واضحة...لكننا نطمع بكرمكم فتشرح لنا الأحداث التي ذكرتها.

  1. حدث جنرال
  2. حدث تهيئة الفورم
  3. حدث اﻹغلاق.

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

اخي الغالي ابو يوسف  حبيبي

كل الشكر والتقدير لمروركم العطر هذا 

واما بالنسبة للاحداث هل تريد شرح الحدث نفسه ام ما يحدث بداخل الحدث من اوامر

ولكم مني كل الاحترام

رابط هذا التعليق
شارك

السلام عليكم أخي الحبيب ياسر ...يسّر الله لك طريق الخير.

اقتباس
19 دقائق مضت, ياسر العربى said:

واما بالنسبة للاحداث هل تريد شرح الحدث نفسه ام ما يحدث بداخل الحدث من اوامر

 

شرح الحدث هل هو قبل اليوزر فورم ...أقصد ما الإجراء الذي سنقوم به للوصول إلى حدث جنرال مثلاً ؟ 

 تقبل تحياتي العطرة.

 

رابط هذا التعليق
شارك

34 minutes ago, محمد حسن المحمد said:

السلام عليكم أخي الحبيب ياسر ...يسّر الله لك طريق الخير.

 

تفضل اخي الغالي كل حدث وطريقة الوصول له

معلش بقي نبقي نحط صوتنا في وقت تاني باذن الله

 

شكل الحدث واختياره.rar

  • Like 2
رابط هذا التعليق
شارك

6 ساعات مضت, ياسر العربى said:

تفضل اخي الغالي كل حدث وطريقة الوصول له

معلش بقي نبقي نحط صوتنا في وقت تاني باذن الله

 

شكل الحدث واختياره.rar

السّلام عليكم و رحمة الله و بركاته

بارك الله فيك أستاذنا الفاضل " ياسر العربي " على الفيديو و الشّرح الرّائعيْن

استفدنا كثيرًا من بعض المفاهيم الغامضة

جزاك الله خيرًا و زادها بميزان حسناتك

فائق إحتراماتي

  • Like 1
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • اضف...

Important Information