على كل حال بما انك وجدت الحل من مشاركة الاخ شكر الله له هذا اهم شيء.
لكن انا مستغرب ان المثال لم يعمل عندك.
هل شغلت المشروع ام انك نسخت اكواد معينة!
نسخت فقط الاكواد بالمشاركة رقم 6 لم أضف عيهم و لم أنقص منهم شيءا
بالمرة الاولى يشتغل عادي
أما المرة الثانية فيعطيني خطا و ما يشتغل
بعد الاطلاع على الحل الذي وضعه الأخ(
justforit) :
وجدت البرنامج يعمل ولكن كان ينقصه كود التحقق(ربما ظن أنك ستدرك ذلك وتضعه أنت)..
مثلا في كود الحفظ تعدل الجزئية إلى :
PHP كود :
Dim pic As New IO.FileInfo(Me.PictureBox1.ImageLocation)
If IO.File.Exists(Title_Logo) Then
IO.File.Delete(Title_Logo)
End If
وفي كود الحذف يعدل إلى :
PHP كود :
If IO.File.Exists(Title_Logo) Then
IO.File.Delete(Title_Logo)
Me.PictureBox1.Image = My.Resources.Nopicture
End If
MsgBox("تمت عملية الحذف بنداح", MessageBoxButtons.OK, MessageBoxIcon.Information)
كل الطرق تؤدي إلى روما ...
بالنسبة لـ الاستعانة بمكتبة (Stream) لم أكن أعتمد عليها من قبل، بل كنت أكتب الكود مباشرة مع أداة الصور..
ولكن مرة نصح أحد الأساتذة بها عندما يتعلق الأمر بحذف الصور، كي لا تقع بمشكلة العنصر المستخدم من قبل مستخدم آخر..
ولازلت أمشي على نصيحته ..
السلام عليكم
شكرا جزيلا اخ Taha Okla على المعلومات القيمة التي تفيدنا بها بارك الله فيك و زادها بموازين حسناتك
فعلا الان بعد هذه التعديلات صار يشتغل كلو تمام بارك الله فيك
الاستعجال و التركيز في اشياء اخرى ظنا مني ان السائل ربما يحتاجها لاحقا هذا هو سبب نقص الحل اللتي اقدمها للاخوة
هذا اذا انا فهمت كل السؤال
مثلا بهذا المثال انظر للموديول كتبت اكواد تحريك الفورم عبر النقر على عناصر محددة مثل
Panel Label PictureBox
كذل ك اضفت مؤقت يقرر متى يمكن ازرار الحفظ و الحذف للصورة بناءا على تواجد رابط الصورة
يتم التعامل مع رابط الصورة و اسنادها الى
ImageLocation الخاصية التابة لـ PictureBox1
و هكذا
التالي اكواد الموديول:
PHP كود :
Module Module1
Dim scw As Integer = Screen.PrimaryScreen.WorkingArea.Right
Dim sch As Integer = Screen.PrimaryScreen.WorkingArea.Bottom
Dim ax, ay As Integer, dr As Boolean
Public myform As Form = Nothing
Public picspath As String = IO.Path.GetDirectoryName(Application.ExecutablePath) & "\FolderImage\"
Public Title_Logo As New IO.FileInfo(picspath & "My_Logo.jpg")
Public picfolder As String = IO.Path.GetDirectoryName(Title_Logo.FullName)
Public Sub rep(f As Form)
If f.Left < 0 Then f.Left = 0
If f.Top < 0 Then f.Top = 0
If f.Right > scw Then f.Left = scw - f.Width
If f.Bottom > sch Then f.Top = sch - f.Height
End Sub
Public Sub mdown(sender As Object, e As MouseEventArgs)
If e.Button = MouseButtons.Left Then
dr = True
ax = sender.MousePosition.X - myform.Left
ay = sender.MousePosition.Y - myform.Top
End If
End Sub
Public Sub mmove(sender As Object, e As MouseEventArgs)
If dr Then
myform.Left = sender.MousePosition.X - ax
myform.Top = sender.MousePosition.Y - ay
End If
End Sub
Public Sub mup(sender As Object, e As MouseEventArgs)
dr = False
rep(myform)
End Sub
Public Sub mcontrols(f As Control)
If TypeOf f Is Form Then
AddHandler f.MouseDown, AddressOf mdown
AddHandler f.MouseMove, AddressOf mmove
AddHandler f.MouseUp, AddressOf mup
End If
For Each c As Control In f.Controls
mcontrols(c)
If TypeOf (c) Is Panel Or TypeOf (c) Is Label Or TypeOf (c) Is PictureBox Then
AddHandler c.MouseDown, AddressOf mdown
AddHandler c.MouseMove, AddressOf mmove
AddHandler c.MouseUp, AddressOf mup
End If
Next
End Sub
Public Function Isimage(img As String) As Boolean
Try
Dim im As New Bitmap(img)
Return True
Catch ex As Exception
Return False
End Try
End Function
End Module
و التالي اكواد الفورم بشكل كامل:
PHP كود :
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
myform = Me
mcontrols(myform)
If Title_Logo.Exists = False Then
Me.PictureBox1.Image = My.Resources.bgp1
Else
Me.PictureBox1.ImageLocation = Title_Logo.FullName
End If
If IO.Directory.Exists(picfolder) = False Then
IO.Directory.CreateDirectory(picfolder)
End If
End Sub
Private Sub Form1_Activated(sender As Object, e As EventArgs) Handles Me.Activated
myform = Me
End Sub
Private Sub btnclose_Click(sender As Object, e As EventArgs) Handles btnclose.Click
Hide()
Close()
End Sub
Private Sub btnmin_Click(sender As Object, e As EventArgs) Handles btnmin.Click
Me.WindowState = FormWindowState.Minimized
End Sub
Private Sub btnselectimage_Click(sender As Object, e As EventArgs) Handles btnselectimage.Click
Dim o As New OpenFileDialog
If o.ShowDialog = DialogResult.OK Then
If Isimage(o.FileName) Then
Me.PictureBox1.ImageLocation = o.FileName
Else
MsgBox("الملف المحدد ليس صورة")
End If
End If
End Sub
Private Sub btndelimage_Click(sender As Object, e As EventArgs) Handles btndelimage.Click
If Title_Logo.Exists Then
Title_Logo.Delete()
End If
Me.PictureBox1.Image = My.Resources.bgp1
MsgBox("تم حذف الصورة و عرض الصورة الافتراضية", MsgBoxStyle.Exclamation, "")
End Sub
Private Sub btnsaveimage_Click(sender As Object, e As EventArgs) Handles btnsaveimage.Click
If Me.PictureBox1.ImageLocation.Trim <> "" Then
Dim pic As New IO.FileInfo(Me.PictureBox1.ImageLocation)
If Title_Logo.Exists Then Title_Logo.Delete()
pic.CopyTo(Title_Logo.FullName)
MsgBox("تم نسخ الصورة لمسار المجلد")
End If
End Sub
End Class
بعد السيد الفاضل justforit
برجاء تعديل الكود لكي الاحتفاظ وعرض الصور المخزنة وايضا حذف الصورة المحددة
إقتباس :الاستعجال و التركيز في اشياء اخرى ظنا مني ان السائل ربما يحتاجها لاحقا هذا هو سبب نقص الحل اللتي اقدمها للاخوة
هذا اذا انا فهمت كل السؤال
هي ليست مشكلتك أو مشكلة أي من يريد المساعدة،
أنت قدمت الحل المناسب والصحيح، أما الأكواد الكمالية هي مشكلة من يطلب الحل..
إن كان يجهل الأساسيات (فلا حل معه يجدي نفعاً)--
الكثير يجهل الأساسيات وتراه يسأل عن قواعد البيانات وليس أي أسألة بل أسألة تحتاج وقت لتنفيذيها فكيف إذا طلب شرح جزء منها..
البرمجة لا تكن بالتقليد وتكرار كتابة الأكواد إلا بعد فهم الأساسيات (والتطبيق عليها)...
المبرمج إن لم يستطع قراءة الكود قبل تنفيذه، من الصعب عليه تصحيح الأخطاء التي تنتج أثناء كتابة الأكواد
فليست كل الأخطاء يمكن على المترجم معرفتها .. بل الكثير منها أخطاء منطقية ولا تظهر إلا بعد تنفيذ الكود
بل وبعضها لا يظهر إلا بعد عشرات من التنفيذ الصحيح (وهذا أسوء شيء موجود في لغة الـ VB.Net)
من لم يتعامل معه المتغيرات الصحيحة والتحويل بينها ضمن الكود (حتى لو لم يطلب الكمبايلر منه ذلك) :
سيقع بهذه الأخطاء التي لن تظهر إلا بعد عشرات من المحاولات التي كان ينفذ فيها ما يريده المستخدم (وفجأة تجد برنامجك أصبحت تعترضه الأخطاء)..
فأفضل نصيحة يقدمها المبرمجين المحترفين لطلابهم ولكل من يسير بطريق البرمجة وكتابة البرامج هي
عمل ريفلكتور للبرنامج بعد إتمامه (للتخلص من الأكواد المعقدة واستخدام الأكواد البسيطة ومعرفة مواطن الخلل أثناء استخدام متغير مكان آخر)..
..
بالمثال حاولت وضع كل الحيل لكي لا تظهر رسالة الملف موجود او مستخدم او غيرها
ان فاتني شيء فيه فاخبروني
تصفحو الموديول ففيه اكواد يخص تحريك الفورم
اذا اضفت الموديول لمشروعك واردت ان تستخدم اكواد تحريك الفورم فتحتاج حدثين
Form1_Load
Form1_Activated
تكتب في الاول الكود التالي:
myform = Me
mcontrols(myform)
وتكتب في الحدث الاخر الكود التالي:
myform = Me
الكلام للمبتدئين فقط مع الشكر و التحية لكل الخبراء
الاخ
justforit
بارك الله فيك و جزاك كل خير مثال فعلا رائع و يشتغل تمام
شكرا جزيلا