كيفية اخفاء عمود و تصغير حجم الكود listview - alims - 03-11-21
السلام عليكم و رحمة الله و بركاته
عندى سؤال صغير لكن مشكلة و هو الكود التالى يتم عرض بيانات من الجدوال مع شرطين و هو اذا كان المستخدام اونلاين يتم العرض فى listview1 واذا كان اوفلاين يتم العرض فى listview2
ازاى اقدر اصغر حجم الكود ده؟؟؟ بحيث ان يتم البحث عن وجمع جميع البيانات و بعد ذلك يتم فلترة البيانات اذا كان اونلاين يتم عرض ادخل listview1 و اذا كان اوفلاين يتم عرض ادخلlistview2
كود :
Sub online()
If con.State = ConnectionState.Open Then con.Close()
Form1.ListView1.Columns.Add("idfriend", 80, HorizontalAlignment.Left)
Form1.ListView1.Columns.Add("namefriend", 80, HorizontalAlignment.Left)
Form1.ListView1.GridLines = True
con.Open()
Dim cmd As New SqlCommand("select * from userandfriend where iduser=('" & Form1.Label5.Text.ToString & "') and Status=('online')", con)
Dim da As SqlDataReader = cmd.ExecuteReader
Form1.ListView1.Items.Clear()
Do While da.Read = True
Dim list1 = Form1.ListView1.Items.Add(da(0))
list1.subitems.add(da(1))
Loop
If con.State = ConnectionState.Open Then con.Close()
End Sub
Sub offline()
If con.State = ConnectionState.Open Then con.Close()
Form1.ListView2.Columns.Add("idfriend", 80, HorizontalAlignment.Left)
Form1.ListView2.Columns.Add("namefriend", 80, HorizontalAlignment.Left)
Form1.ListView2.GridLines = True
con.Open()
Dim cmd As New SqlCommand("select idfriend,namefriend from userandfriend where iduser=('" & Form1.Label5.Text.ToString & "') and Status=('offline')", con)
Dim da As SqlDataReader = cmd.ExecuteReader
Form1.ListView2.Items.Clear()
Do While da.Read = True
Dim list1 = Form1.ListView2.Items.Add(da(0))
list1.subitems.add(da(1))
Loop
If con.State = ConnectionState.Open Then con.Close()
End Sub
السؤال الثانى و هو عندى عمود داخل listview وده بيحمل رقم الصديق idfriend عايز اخفى العمود ده و يظهر اسم الصديق فقط namefriend
لكن فى حالة الضغط على اسم الصديق namefriend يتم اظهر رسائل تحتوى على الرقم idfriend الخاص به من العمود المخفى و اسف على الاطاله
RE: كيفية اخفاء عمود و تصغير حجم الكود listview - Anas Mahmoud - 03-11-21
تفضل اخي الكريم
كود :
Sub PopulateListViews()
If Con.State = ConnectionState.Open Then Con.Close()
For Each lst As ListView In {ListView1, ListView2}
'lst.Columns.Add("idfriend", 80, HorizontalAlignment.Left)
lst.Columns.Add("namefriend", 80, HorizontalAlignment.Left)
lst.GridLines = True
Next
Con.Open()
Dim cmd As New SqlCommand("select * from userandfriend where iduser=('" & Label5.Text.ToString & "')", Con)
Dim da As SqlDataReader = cmd.ExecuteReader
Do While da.Read = True
Dim lst As ListView = If(da("Status") = "online", ListView1, ListView2)
Dim i As New ListViewItem(da("namefriend").ToString)
i.SubItems.Add(da("idfriend"))
lst.Items.Add(i)
Loop
If Con.State = ConnectionState.Open Then Con.Close()
End Sub
اما السؤال الثاني فكل ما عليك هو عدم اضافة العمود من البداية ولن يظهر ، عندما تضيف SubItem فانه لن يظهر
RE: كيفية اخفاء عمود و تصغير حجم الكود listview - alims - 04-11-21
شكرا لك اخي العزيز و لكن اريد عند الضغط على اسم الصديق يتم أظهر رقم الصديق في رسالة نصيه مع إخفاء عمود رقم الصديق
RE: كيفية اخفاء عمود و تصغير حجم الكود listview - alims - 04-11-21
الحمد الله تم حل المشكلة وهي إخفاء العمود رقم الصديق و عند الضغط على اسم الصديق يتم أظهر الرقم و ده الكود المستخدام
كود :
Listview1. Columns(1).width=0
If Listview1. Selectitems.count > 0 then
Msgbox(Listview1. Selectitems(0).subitems(1).text)
Else
End if
عندي سؤال تاني واسف على الازعاج يوجد حقل في نفس الجدول اسمو friendimg من نوع imageوده بيكون صور الصديق عايز الصورة تظهر بجانب اسم المستخدام
RE: كيفية اخفاء عمود و تصغير حجم الكود listview - Anas Mahmoud - 04-11-21
اضفت ImageList1 وقمت باسنادها للخاصية LargeImageList و SmallImageList في ال listview الاثنان
ثم عدلت حلقة التكرار في الكود الى
كود :
Do While da.Read = True
Dim status As String = da("status")
Dim friendid As Integer = da("idfriend")
Dim namefriend As String = da("namefriend")
Dim friendimg As Byte() = da("friendimg")
Dim lst As ListView = If(status = "online", ListView1, ListView2)
Dim i As New ListViewItem(namefriend, friendid.ToString)
ImageList1.Images.Add(friendid.ToString, ImgFromByte(friendimg))
i.SubItems.Add(friendid)
lst.Items.Add(i)
Loop
قمت بتعريف الدالة التالية
كود :
Function ImgFromByte(img As Byte()) As Bitmap
Using ms As New MemoryStream(img)
Return New Bitmap(ms)
End Using
End Function
[attachment=27147]
ارفقت مثال قمت بعمله حسب فكرتك وكذلك قاعدة البيانات الخاصة به
RE: كيفية اخفاء عمود و تصغير حجم الكود listview - alims - 07-11-21
شكرا ليك اخى انس ولكن حاولت عرض الصورة ولا انجاح فى ذلك و اريد عند الضغط على الاسم يظهر رسائل بارقم id للصديق
وحاولت فتح المثل ولكن الاصدار الفيجوال عندى قديم 2010 اسف على الازعاج اخى الكريم
الحمد االكود يعمل بنجاح
كود :
Imports System
Imports System.Drawing
Imports System.Data.SqlClient
Imports System.IO
Public Class Form2
Dim con As New System.Data.SqlClient.SqlConnection("Data Source=DESKTOP-SNS2QF4;Initial Catalog=SpicyMessenger;Integrated Security=True")
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
PopulateListViews()
End Sub
Private Sub ListView1_DoubleClick(ByVal sender As Object, ByVal e As EventArgs) Handles ListView1.DoubleClick, ListView2.DoubleClick
Dim lst As ListView = sender
If lst.SelectedItems.Count > 0 Then
MsgBox(lst.SelectedItems(0).SubItems(1).Text)
End If
End Sub
Function ImgFromByte(ByVal img As Byte()) As Bitmap
Using ms As New MemoryStream(img)
Return New Bitmap(ms)
End Using
End Function
Sub PopulateListViews()
If Con.State = ConnectionState.Open Then Con.Close()
For Each lst As ListView In {ListView1, ListView2}
'lst.Columns.Add("idfriend", 80, HorizontalAlignment.Left)
lst.Columns.Add("namefriend", 80, HorizontalAlignment.Left)
lst.GridLines = True
Next
con.Open()
Dim cmd As New SqlCommand("SELECT useraddnew.id,useraddnew.surnameandname,useraddnew.img,userandfriend.Status FROM userandfriend INNER JOIN useraddnew ON userandfriend.idfriend = useraddnew.id WHERE (userandfriend.id = '60')", con)
Dim da As SqlDataReader = cmd.ExecuteReader
Do While da.Read = True
Dim friendid As Integer = da("id")
Dim namefriend As String = da("surnameandname")
Dim friendimg As Byte() = da("img")
Dim lst As ListView = If(da("Status") = "online", ListView1, ListView2)
Dim i As New ListViewItem(namefriend, friendid.ToString)
ImageList1.Images.Add(friendid.ToString, ImgFromByte(friendimg))
i.SubItems.Add(friendid)
lst.Items.Add(i)
Loop
If con.State = ConnectionState.Open Then con.Close()
End Sub
End Class
|