منتديات روكشا     َولَوْلَا إِذْ دَخَلْتَ جَنَّتَكَ قُلْتَ مَا شَاءَ اللَّهُ لَا قُوَّةَ إِلَّا بِاللَّه

الرئيسية |  التسجيل  |  مركز رفع الملفات  |  الاتصال بنا  

 



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

الملاحظات

انشاء وتصميم وبرمجة البرامج برنامج الوورد اكسس اكسيل بوربوينت فيجوال بيسك برامج محاسبة برامج ادارة وتنظيم حسابات تنسيق الملفات

إضافة رد
 
أدوات الموضوع انواع عرض الموضوع
  #1  
قديم 03-24-2019, 05:05 AM

الصورة الرمزية الفارس

الفارس

.:: عضـو متميز ::.

 
تاريخ التسجيل: Feb 2019
الدولة: مصر
المشاركات: 837
معدل تقييم المستوى: 10
الفارس المعروف لدى الجميع بالتميز العالىالفارس المعروف لدى الجميع بالتميز العالىالفارس المعروف لدى الجميع بالتميز العالىالفارس المعروف لدى الجميع بالتميز العالىالفارس المعروف لدى الجميع بالتميز العالىالفارس المعروف لدى الجميع بالتميز العالى
الفارس غير متواجد حالياً
شرح نموذج الثاني Form2 قلب البرامج الذي سيقوم بحفظ صفحات الموقع

 




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

نموذج الثاني Form2 قلب البرامج الذي سيقوم بحفظ صفحات الموقع

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




بعد التوكل على الله نبدأ
سنقوم باستيراد بعض مجالات الاسماء للتعامل معها خلال الكود
كود :
كود PHP:
Imports System.Data.OleDb
Imports System
.Net
Imports System
.IO
Imports System
.Text.RegularExpressions
Imports System
.Text
Imports System
.Runtime
Imports System
.Runtime.InteropServices 
و بعض المتغيرات في بداية النموذج سنعرف الحاجة منها من خلال الشرح
كود :
كود PHP:
Public Class Form2
   Dim A
BCAs Integer
   Dim sourceString 
As String
   Dim cookies 
As New CookieContainer()
   
Dim Dt As New DataTable
   Dim PathStr 
As String
   Dim result 
As String String.Empty 
حدث تحميل النموذج
كود :
كود PHP:
   Private Sub Form2_Load(sender As System.ObjectAs System.EventArgsHandles MyBase.Load
       
Try

           
Me.KindBindingSource.DataSource LoadDataSet()
           
Me.KindBindingSource.DataMember "Kind"
           '
           Me.PostBindingSource.DataSource = KindBindingSource
           Me.PostBindingSource.DataMember = "Kind_post"
           '
           
Me.InfoBindingSource.DataSource PostBindingSource
           Me
.InfoBindingSource.DataMember "Kind_Info"
           '
           Me.AttachBindingSource.DataSource = InfoBindingSource
           Me.AttachBindingSource.DataMember = "Info_Attach"

           '
           
BindingFileds()
           
'
           CreaeDt()
           BindingNavigatorAddNewItem3.Enabled = False

       Catch ex As Exception
           MsgBox(ex.ToString)
       End Try

   End Sub 
تم شرحه سابقا عند التعامل مع النموذج Form1 مع زيادة طفيفة تتعلق بالجزئية CreaeDt
و هو اجراء بسيط لانشاء جدول سنحتاجه خلال العمل كما يلي
كود :
كود PHP:
   ''' <summary>
   ''' 
اجراء بناء جدول خاص لتحميل المرفقات
   
''' </summary>
   ''' 
<remarks></remarks>
   Private 
Sub CreaeDt()
       
Dt = New DataTable
       Dt
.Clear()
       
Dim Urlcol As New DataColumn("Urlcol"System.Type.GetType("System.String"))
       
Dim Namecol As New DataColumn("Namecol"System.Type.GetType("System.String"))
       
Dt.Columns.Add(Urlcol)
       
Dt.Columns.Add(Namecol)
   
End Sub 
اجراء ربط الكائنات BindingFileds

كود :
كود PHP:
   'ربط الكائنات
   Private Sub BindingFileds()
       Try
           Me.KindTextBox.DataBindings.Add(New Binding("Text", KindBindingSource, "Kind"))
           Me.Not1TextBox.DataBindings.Add(New Binding("Text", KindBindingSource, "Not1"))
           '
           
Me.ponameTextBox.DataBindings.Add(New Binding("Text"PostBindingSource"poname"))
           
'
           Me.InfonameTextBox.DataBindings.Add(New Binding("Text", InfoBindingSource, "Infoname"))
           Me.UrlInfoTextBox.DataBindings.Add(New Binding("Text", InfoBindingSource, "UrlInfo"))

           '
           
ComboBox1.DataSource KindBindingSource
           ComboBox1
.DisplayMember "kind"
           
ComboBox1.ValueMember "Id"
           '
           ComboBox2.DataSource = PostBindingSource
           ComboBox2.DisplayMember = "poname"
           ComboBox2.ValueMember = "id_k"
           '
           
ComboBox3.DataSource InfoBindingSource
           ComboBox3
.DisplayMember "Infoname"
           
ComboBox3.ValueMember "IdInfo"
           '
           ListBox2.DataSource = AttachBindingSource
           ListBox2.DisplayMember = "AttachName"
           ListBox2.ValueMember = "AttachPath"


       Catch ex As Exception
           MsgBox(ex.ToString)
       End Try

   End Sub 
السيناريو المتبع في العمل سيكون كالتالي
بعد تحميل النموذج سنكون امام عمليات اضافة للاصناف و الفروع المشتقة منها و كذلك المقالات المشتقة من كل فرع
وهي عملية روتينية ناقشناها في البند السابق عند التعامل مع Form1
الجديد في الموضوع اننا سنكون امام صفحات HTML سنقوم بتخزينها في قاعدة البيانات من صفحة المستعرض مباشرة
و سنقوم ايضا بتخزين المرفقات المرتبطة بالمقال المعروض في المتصفح
طبعا التخزين ليس ضمن القاعدة بل في مجلد ضمن مسار البرنامج و اسمه AttachMents
بينما سيتم تخزين اسم الملف و مساره فقط في جدول في القاعدة
سيتم الدخول تلقائيا للموقع وفق اعدادات مسبقة انت تقوم بادخالها في نموذج خاص سنناقشه لاحقا
على اي حال لن اسهب كثيرا في الشرح هنا لانني ساقوم بالشرح مع كل خطوة تستلزم الشرح
ساضع الاكواد الخاصة بالادوات (الحذف و الحفظ و التعديل) بشكل عادي دون شرحها لاننا اصبحنا نعرف شرحها كما سبق

كود :
كود PHP:
   'زر اضافة نوع
   Private Sub BindingNavigatorAddNewItem_Click(sender As System.Object, e As System.EventArgs) Handles BindingNavigatorAddNewItem.Click
       Try
           KindBindingSource.CancelEdit()
           KindBindingSource.AddNew()
           A = KindBindingSource.Position
           KindTextBox.Focus()
       Catch ex As OleDb.OleDbException
           MsgBox(ex.ToString)
       End Try
   End Sub 
كود :
كود PHP:
   'عند اضافة فرع
   Private Sub InfoBindingSource_AddingNew(sender As Object, e As System.ComponentModel.AddingNewEventArgs) Handles InfoBindingSource.AddingNew
       Try
           KindBindingSource.EndEdit()
       Catch ex As OleDb.OleDbException
           MsgBox(ex.ToString)
       End Try
   End Sub 
كود :
كود PHP:
   'زر اضافة فرع
   Private Sub BindingNavigatorAddNewItem1_Click(sender As System.Object, e As System.EventArgs) Handles BindingNavigatorAddNewItem1.Click
       Try
           PostBindingSource.CancelEdit()
           PostBindingSource.AddNew()
           B = PostBindingSource.Position
           ponameTextBox.Focus()
       Catch ex As OleDb.OleDbException
           MsgBox(ex.ToString)
       End Try
   End Sub 
كود :
كود PHP:
 'عند اضافة مقال
   Private Sub PostBindingSource_AddingNew(sender As Object, e As System.ComponentModel.AddingNewEventArgs) Handles PostBindingSource.AddingNew
       Try
           Me.KindBindingSource.EndEdit()
           ponameTextBox.Focus()
       Catch ex As OleDb.OleDbException
           MsgBox(ex.ToString)
       End Try
   End Sub 

كود :
كود PHP:
   'زر اضافة مقال
   Private Sub BindingNavigatorAddNewItem3_Click(sender As System.Object, e As System.EventArgs) Handles BindingNavigatorAddNewItem3.Click
       Try
           If sourceString = String.Empty Then
               MsgBox("لا يوجد مقالات محملة")
               Exit Sub
           End If
           InfoBindingSource.CancelEdit()
           InfoBindingSource.AddNew()

           InfonameTextBox.Text = WebBrowser1.DocumentTitle
           UrlInfoTextBox.Text = WebBrowser1.Url.AbsoluteUri
           '
           
BindingNavigatorAddNewItem3.Enabled False

           
'===================
           Dim w1 As Integer = 0
           Using Con
               Dim sw1 As String = "Select Count(IdInfo) AS IdCount From Info Where UrlInfo Like '" & UrlInfoTextBox.Text & "'  "

               Dim MatchCommand As New OleDbCommand(sw1, Con)

               If Con.ConnectionString = Nothing Then Con.ConnectionString = ConnectionString
               Con.Open()
               '
               
w1 MatchCommand.ExecuteScalar
               
'
           End Using
           '
           
If w1 >= 1 Then
               MsgBox
(" هذه المقالة موجودة و متوفرة في القاعدة لن يتم حفظها  "MsgBoxStyle.Exclamation MsgBoxStyle.MsgBoxRight MsgBoxStyle.OkOnly"تخزين المقال ")
               
InfoBindingSource.CancelEdit()
               Exit 
Sub
           End 
If

           
'==================
           C = InfoBindingSource.Position
       Catch ex As OleDb.OleDbException
           MsgBox(ex.ToString)
       End Try
   End Sub 
هذا الكود يحتاج القليل من الشرح وهو كالتالي
عمليا عند اضافة مقال انا اقوم باضافته من المتصفح
لذلك ساختبر اذا كان المتصفح فعلا يحتوي على معلومات للصفحة المعروضة ؟ ساشرحه في الاسفل مع اجراء تحميل الصفحة
اذا كان المتصفح يحوي فعلا على معلومات ساقوم عندها باضافة اسم الموضوع و رابطه ايضا الى جدول المقالات
من خلال الصفحة المعروضة في المتصفح
عملية الاضافة لن تتم هكذا و الا اصبح لدي كم كبير من الصفحات المتشابهة
لذا جعلت عملية الاضافة تتم بعد التاكد ان الصفحة الحالية ليست مخزنه لدي في القاعدة وفق رابط الصفحة

سانتقل الان الى حدث اكتمال تحميل الصفحة في المستعرض لارتباطه بالكود السابق
عند اكتمال تحميل الصفحة انا قمت بوضع كود يقوم بنسخ محتويات الصفحة الى المتغير النصي sourceString
وهو مشمول في الاجراء التالي
كود :
كود PHP:
   'اكتمال تحميل الصفحة
   Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
       Try
           sourceString = WebBrowser1.DocumentText
           '
           
TxtUrl.Text e.Url.ToString
           ToolStripStatusLabel2
.Text "    /    " WebBrowser1.DocumentTitle
           Me
.Text WebBrowser1.DocumentTitle
           CollectAttachments
(ListBox1)


           If 
sourceString String.Empty Or sourceString.Length <= 14 Then
               BindingNavigatorAddNewItem3
.Enabled False
           
Else
               
BindingNavigatorAddNewItem3.Enabled True
               
Exit Sub
           End 
If


       Catch 
ex As Exception
           MsgBox
(ex.ToString)
       
End Try
   
End Sub 
اعرف انني سادخل في متاهة شرح لاننا سنتفرع من اجراء الى اخر و كلها ترتبط ببعضها لذا وجب عليك ان تركز معي و ان تعذرني ان فاتني شرح جزئية معينة.
كما تلاحظ انا قمت بنسخ محتويات الصفحة الى المتغير sourceString
مع بعض الاسطر التي تخص المستعرض مثل عرض اسم الموضوع الحالي في اسفل البرنامج و اعلاه
ثم اختبرت طول المتغير النصي لاقوم بتمكين عملية الاضافة من عدمها
للمعلومات ان طول النص الافتراضي للمستعرض هو 13 على ما اعتقد لانه يحتوي على Tag
<\HTML><HTML> فارغ بدون محتويات و يبدأ بالتوسع مع وجود معلومات فعلية داخله
الكود ايضا يحتوي على دالة اخرى CollectAttachments باختصار مهمتها جلب المرفقات عند اكتمال تحميل الصفحة ساشرحه عند وروده

نكمل باقي عمليات الاضافة


كود :
كود PHP:
   'عند اضافة مرفق
   Private Sub AttachBindingSource_AddingNew(sender As Object, e As System.ComponentModel.AddingNewEventArgs) Handles AttachBindingSource.AddingNew
       Try
           InfoBindingSource.EndEdit()
       Catch ex As OleDb.OleDbException
           MsgBox(ex.ToString)
       End Try
   End Sub 
اما عملية اضافة معلومات المرفقات الى جدول المرفقات في القاعدة فهي عملية متزامنه مع تحميل المرفق الى مجلد التخزين سناتي اليها لاحقا

عمليات الحذف سنؤجل الحديث عنها الان لانها عمليه طويله تجري باتجاهين القاعدة من جهة و الملفات المخزنة من جهة اخرى

نكمل مع باقي الاكواد

كود :
كود PHP:
   'تصفح
   Private Sub BtnBrowse_Click(sender As System.Object, e As System.EventArgs) Handles BtnBrowse.Click

       Try

           If Not Regex.IsMatch(TxtUrl.Text, "^((ht|f)tp(s?)\:\/\/|~/|/)?([\w]+:\w+@)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?((/?\w+/)+|/?)(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?") Then
               MessageBox.Show("موقع غير صحيح")
               Exit Sub
           Else
               SiteLogin(TxtUrl.Text.Trim)

           End If

       Catch ex As Exception
           Return
       End Try


   End Sub 
الكود السابق للدخول الى صفحة المطلوبة وهو يختبر اولا ان الرابط المدخل هو تنسيق صحيح لروابط المواقع
ثم بعدها ينتقل الى دالة خاصة SiteLogin و هي لب العمل في البرنامج وهي تقوم بتسجيل الدخول الى الموقع ثم الانتقال الى الصفحة المطلوبة


كود :
كود PHP:
   Private Sub SiteLogin(ByVal Url As String)
       
'رابط الدخول من الاعدادت
       Dim LoginUrl As String = My.Settings.LoginUrl
       '
حاوية الكوكيز
       Dim cookieContainer 
As New CookieContainer()
       
'انشاء طلب للدخول
       Dim LoginRequest As HttpWebRequest = DirectCast(WebRequest.Create(LoginUrl), HttpWebRequest)
       LoginRequest.CookieContainer = New CookieContainer
       LoginRequest.ContentType = "application/x-www-form-urlencoded"
       LoginRequest.Method = "POST"
       LoginRequest.KeepAlive = True
       LoginRequest.AllowAutoRedirect = True
       LoginRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1"
       '
البارمترات من الاعدادت
       Dim formParams 
As String My.Settings.Parmms

       Dim bytes 
As Byte() = Encoding.UTF8.GetBytes(formParams)
       
'كتابة البيانات
       LoginRequest.ContentLength = bytes.Length
       Using os As Stream = LoginRequest.GetRequestStream()
           os.Write(bytes, 0, bytes.Length)
       End Using
       '
تحصيل الكوكيز من الموقع و تخزينه في الحاوية
       cookieContainer 
GetUriCookieContainer(New Uri(LoginUrl))
       
'جعل حاوية الطلب تحتضن الكوكيز
       LoginRequest.CookieContainer = cookieContainer
       '
حاوية عامة للكوكيز على مستوى كل الطلبات
       cookies 
= New CookieContainer
       cookies 
cookieContainer


       
'استقبال الرد و تخزين الكوكيز
       Dim cookdisc As String
       Using httpWebResponse = DirectCast(LoginRequest.GetResponse(), HttpWebResponse)
           cookies.Add(httpWebResponse.Cookies)
           For Each cook As Cookie In httpWebResponse.Cookies
               result += cook.Name + "=" + cook.Value & ";"
               cookdisc = cook.Name + "=" + cook.Value & ";"

               InternetSetCookie(Url, cookdisc, cook.Expires)

           Next

       End Using
       WebBrowser1.Navigate(Url)

   End Sub 
الشرح
متغير نصي يحمل رابط صفحة الدخول من الاعدادات
انشاء حاوية كوكيز تقوم باحتضان الكوكيز اثناء عملية الطلب و الرد
انشاء طلب مع اعطائه رابط صفحة الدخول
تفريغ حاوية الكوكيز الخاصة بالطلب
بعض المعلومات المطلوب ارسالها مع الطلب و هي تعلميات قياسية خاصة بصفحات الويب يمكنك ايجاد هذه المعلومات عند فتح مصدر اي صفحة ويب و هي كثيرة ليس المكان لشرحها
طريقة الطلب هي ادخال معلومات Post
المحافظة على الطلب حي يرزق مع تفعيل الارتداد و اعادة التوجيه وفق رد الملقم
معلومات قياسية اخرى تتعلق بالمتصفحات يمكنك الاستغناء عنها في بعض المواقع UserAgent
FormsParms متغير نصي يحمل معلومات الادخال الضرورية في الموقع و ناخذها من الاعدادات
مصفوفة من النوع Byte ستحمل بيانات الدخول وفق الترميز Utf8 الى الموقع
بدأ عملية كتابة بيانات المصفوفة في الموقع
GetUriCookieContainer هي دالة خاصة ستقوم بجلب الكوكيز من الموقع بعد استقبال رد المصادقة على الدخول و هي تستخدم مكاتب API .
ملئ حاوية الكوكيز الخاصة بالطلب بالكوكيز التي حصلنا عليها وفق الدالة السابقة و كذلك ملئ الحاوية العامة التي على مستوى البرنامج بالكوكيز اللازمة cookies
الاكواد اللاحقة يمكنك الاستغناء عنها اذ انني احببت ابقائها لتعرف طريقة الحصول على كل قيم الكوكيز و تستفيد منها كأن تخزنها او تعرضها؟
اخيرا التوجه الى الصفحة المطلوبة بعد ان تمت المصادقة على دخولنا
طبعا هناك سطر مسؤول عن توريث الكوكيز للمستعرض و هو السطر التالي


كود :
كود PHP:
               InternetSetCookie(Urlcookdisccook.Expires
كود :
كود PHP:
   ''' <summary>
   ''' 
اجراء استخدمه عند الحاجة و هو للحصول على الكوكيز من الرابط
   
''' </summary>
   ''' 
<param name="uri">الرابط</param>
   
''' <returns>يعود بحاوية الكوكيز</returns>
   ''' 
<remarks>APi الدالة تستخدم مكاتب</remarks>
   Public 
Shared Function GetUriCookieContainer(uri As Uri) As CookieContainer
       Dim cookies 
As CookieContainer Nothing
       Dim datasize 
As Integer 8192 16
       Dim cookieData 
As New StringBuilder(datasize)
       
'
       If Not InternetGetCookieEx(uri.ToString(), Nothing, cookieData, datasize, InternetCookieHttponly, IntPtr.Zero) Then
           If datasize < 0 Then
               Return Nothing
           End If

           cookieData = New StringBuilder(datasize)
           If Not InternetGetCookieEx(uri.ToString(), Nothing, cookieData, datasize, InternetCookieHttponly, IntPtr.Zero) Then
               Return Nothing
           End If
       End If
       If cookieData.Length > 0 Then
           cookies = New CookieContainer()
           cookies.SetCookies(uri, cookieData.ToString().Replace(";"c, ","c))
       End If
       Return cookies 

الكود السابق يسيتخدم مكاتب API ساضعها هنا
كود :
كود PHP:
#Region "Get Set Cookies By APi"
   
<DllImport("wininet.dll"CharSet:=CharSet.AutoSetLastError:=True)>
   Private 
Shared Function InternetSetCookie(lpszUrlName As StringlpszCookieName As StringlpszCookieData As String) As Boolean
   End 
Function

   Private Const 
InternetCookieHttponly As Int32 = &H2000
   
<DllImport("wininet.dll"CharSet:=CharSet.AutoSetLastError:=True)> _
   
Private Shared Function InternetGetCookieEx(pchURL As StringpchCookieName As StringpchCookieData As StringBuilderByRef pcchCookieData As UIntegerdwFlags As IntegerlpReserved As IntPtr) As Boolean
   End 
Function

#End Region 
بعد دخولنا و عرض الصفحة اصبحنا الان امام صفحة معروضه في المتصفح
سنقوم الان بالتقاط المرفقات وفق الاجراء التالي
كود :
''' <
كود PHP:
summary>
   
''' اجراء تحصيل المرفقات من الصفحة و تجميعها في اللست بوكس
   ''' 
</summary>
   
''' <param name="list"></param>
   ''' 
<remarks></remarks>
   Private 
Sub CollectAttachments(ByVal list As ListBox)
       Try
           
Dt.Rows.Clear()
           
ProgressBar1.Value 0
           
If (WebBrowser1.Document IsNot NothingThen
               Dim Elems 
As HtmlElementCollection
               Dim WebOC 
As WebBrowser WebBrowser1
               
'
               '
               
Elems WebOC.Document.GetElementsByTagName("a")
               For 
Each elem As HtmlElement In Elems
                   Dim NameStr 
As String elem.GetAttribute("href")

                   If ((
NameStr IsNot Nothing) And (NameStr.Length <> 0)) Then

                       
'(.zip/.rar/.pdf) This Only For CodeProject Now
                       If NameStr.ToLower().Contains("attachment.php?") Or
                           NameStr.ToLower().Contains(".zip") Or
                           NameStr.ToLower().Contains(".rar") Or
                           NameStr.ToLower().Contains(".doc") Or
                           NameStr.ToLower().Contains(".docx") Or
                           NameStr.ToLower().Contains(".pdf") Then

                           Dim siteUri As New Uri(NameStr)
                           Dim ContentStr As String = elem.InnerText
                           '
===========
                           If 
siteUri.AbsoluteUri.LastIndexOf("/") And Not (NameStr.ToLower().Contains("attachment.php?")) Then
                               ContentStr 
siteUri.AbsoluteUri.Substring(siteUri.AbsoluteUri.LastIndexOf("/") + 1)
                           
End If

                           
Dim row As DataRow Dt.NewRow
                           row
("Urlcol") = siteUri
                           row
("Namecol") = ContentStr
                           Dt
.Rows.Add(row)
                           
'
                           list.DataSource = Dt
                           list.DisplayMember = "Namecol"
                           list.ValueMember = "Urlcol"

                       End If
                   End If
               Next
           End If

       Catch ex As WebException
           MsgBox(ex.ToString)
       End Try

   End Sub 


و هو اجراء عادي يستخدم المكتبة RegularExpressions للبحث في مستند HTML عن العناصر التي تحتوي على المرفقات و من ثم الحصول على اسم المرفق ان امكن ؟؟؟؟ و كذلك الرابط
و بعدها ندخل اسم المرفق و رابطه في جدول خاص لنستخدمه لاحقا.
اسم المرفق؟؟؟؟ العملية كثيرا شاقة مع اختلاف بنية المواقع و كثرة استخدام السكربتات من كل شكل و لون و الكثير الكثير جعلني اعيد صياغة الكود عشرات المرات هنا و مازالت المفاجئات تتكرر
بعد تعبئة الجدول سنقوم باضافة عناصره الى ListBox1 ليصبح لدينا شكل سهل و بسيط للتعامل مع الملفات و تحميلها فقط من خلال تحديدها من ListBox1 و من ثم زر Download .



إقرأ أيضا:

نموذج ادخال الاكواد Form1 الجانب العملي جانب التصميم و الربط مع النماذج



رد مع اقتباس
قديم 03-24-2019, 01:36 PM   #2

ابن الوليد

.:: ادارة المنتدي ::.

الصورة الرمزية ابن الوليد

تاريخ التسجيل: Nov 2018
الدولة: مصر
المشاركات: 1,628
معدل تقييم المستوى: 10
ابن الوليد has much to be proud ofابن الوليد has much to be proud ofابن الوليد has much to be proud ofابن الوليد has much to be proud ofابن الوليد has much to be proud ofابن الوليد has much to be proud ofابن الوليد has much to be proud ofابن الوليد has much to be proud of
إرسال رسالة عبر MSN إلى ابن الوليد إرسال رسالة عبر Yahoo إلى ابن الوليد إرسال رسالة عبر Skype إلى ابن الوليد
افتراضي

احسنت في الشرح ياغالى

نتظر جديدك

ابن الوليد غير متواجد حالياً  

رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)


الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 
أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
طريقة التحكم فى اخفاء أو اظهار أي أداة على صفحات بلوجر ابن الوليد ركن تطوير وإدارة المواقع العام 0 03-13-2019 12:22 AM
تخطيط و تصميم صفحات الموقع باحترافية ابن الوليد ركن تطوير وإدارة المواقع العام 0 03-08-2019 11:42 AM
شرح طريقة تحويل صفحات الخطأ 404 إلى الرئيسية ابن الوليد ركن تطوير وإدارة المنتديات العربية 0 02-02-2019 06:25 PM
قصة الذي فاخر بآبائه الكفرة ابن الوليد المنتدي الاسلامي 0 12-16-2018 07:34 PM
قصـة الرجل الذي استلف ألف دينار ابن الوليد المنتدي الاسلامي 0 12-16-2018 07:34 PM

 

RSS RSS 2.0 XML MAP HTML

الساعة الآن 06:45 PM

نبذة عن المنتدى

روابط مفيدة

إعلانات نصية

روابط الموقع

منتديات روكشا لتقنية المعلومات تقدم كل ما هو جديد ومفيد في عالم البرامج سواء جاهزة أو طرق وشروحات برمجة وتصميم وسوف تجدون أقسام عديدة ومختصة لكل ما تبحث عنه



Powered by vBulletin® Copyright ©2000 - 2019,