نمایش نتایج 1 تا 3 از 3

نام تاپیک: List View

  1. #1
    کاربر دائمی آواتار ferankyy
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    خونه
    پست
    277

    Question List View

    سلام من آموزش کامل List View را میخواستم .

  2. #2
    کاربر دائمی آواتار miniator
    تاریخ عضویت
    آذر 1387
    محل زندگی
    يه جاي سرسبز
    پست
    139

    Smile نقل قول: List View

    سلام
    قبلا تو يه سايت ديده بودم ، كلشو گذاشتم اينجا


    ---------------------------------------------------------------------------------


    قبل از اینکه اموزش ListView رو بدم شما به این اشیا نیاز دارید
    توضیح : ListView در قسمت component وی بی و در بخش Microsoft common control 6.0 است
    یک عدد ListView که اونو فقط روی فرم قرار بدید
    یک عدد imageList1 که فقط یک ایکون 16*16 درونش قرار بدید
    یک عدد دیگر ImageList2 که فقط یک ایکون 32*32 درونش قرار بدید
    بخش اول : اضافه کردن ایتم ها به ListView
    برای اینکه بتوانیم با ListView هر کاری را انجام دهیم ابتدا باید تعدادی ایتم به ان اضافه کنیم. این کار اسان است.همه چیزی که شما احتیاج دارید این است که یک شی از ListItem بسازید و سپس به یک خط برای ساختن ایتم احتیاج خواهیم داشت. به مثال زیر توجه کنید
    Dim itmx As ListItem
    Set itmx = ListView1.ListItems.Add(, , "Item1")
    این همه ان چیزی است که برای یک ایتم ساده به ان احتیاج داریم. کد بالا را به رویداد لود فرم بیافزاید و اجرا کنید. شما میتوانید ان ایتم را در ListView ببینید. اما تا اندازه ای ساده به نظر میرسد. در اینجا هیچ تصویری نمایش داده نشده است. برای نمایش تصاویر در ListView شما باید ان را به یک کنترل Image List (یا چند کنترل Image List) الحاق کنید. برای انجام این کار فقط روی خاصیت Custom کلیک کنید و زمانی که صفحه خواص برای ListView نمایش داده شد روی برگه Image List کلیک کنید. برای گزینه Normal Image List > Image List1 را انتخاب کنید و برای گزینه Small Image List > Image List2 را انتخاب کنیدو سپس خارج شوید. حالا شما تصاویری را خواهید داشت که با اجرای برنامه برای هرکدام از ایتم ها خواهید داشت. بزودی تصاویر بسیاری را خواهیم داشت. برای اینکه هنگام اجرا تصویر شماره 1 از Image List1 و تصویر شماره 1 از Image List2 را نمایش دهیم فقط کافی است کد زیر را بنویسیم :
    Dim itmx As ListItem
    Set itmx = ListView1.ListItems.Add(, , "Item1",1,1)
    حالا برنامه رو اجرا کنید
    بخش دوم >> تغییر نما
    چندین راه برای نمایش اطلاعات در ListView وجود دارد. مثلا میتوانید به مرورگر ویندوز نگاه کنید که میتوانید نمایش اطلاعات را در ان تغییر دهید . مثلا به شکا نمایش ایکون به شکا بزرگ یا نمایش ایکون به شکل کوچک یا ... برای دیدن هر کدام از حالات مختلف ان را در رویداد لود فرم قرار داده و اجرا کنید
    Dim itmx As ListItem
    Dim colx As ColumnHeader
    'Add a bunch of items
    Set itmx = ListView1.ListItems.Add(, , "Item1", 1, 1)
    Set itmx = ListView1.ListItems.Add(, , "Item2", 1, 1)
    Set itmx = ListView1.ListItems.Add(, , "Item3", 1, 1)
    Set itmx = ListView1.ListItems.Add(, , "Item4", 1, 1)
    Set itmx = ListView1.ListItems.Add(, , "Item5", 1, 1)
    Set itmx = ListView1.ListItems.Add(, , "Item6", 1, 1)
    Set itmx = ListView1.ListItems.Add(, , "Item7", 1, 1)
    'Force window to be shown.
    'This is just so you can see what is happening or else the
    'messages would come up and the window would not have
    'appeared yet
    Me.Show
    'Set the listview to icon
    ListView1.View = lvwIcon
    MsgBox ("You are now viewing the list in Icon View")
    'Set the listview to small icon
    ListView1.View = lvwSmallIcon
    MsgBox ("You are now viewing the list in Small Icon View")
    'Set the listview to list
    ListView1.View = lvwList
    MsgBox ("You are now viewing the list in List View")
    'Add a column at runtime
    'You can do this ahead of time in the controls
    'property pages
    Set colx = ListView1.ColumnHeaders.Add(, , "Name")
    'Set the listview to report
    ListView1.View = lvwReport
    MsgBox ("You are now viewing the list in Report View")
    در اینجا شما فقط باید خواص ListView را تنظیم کنید. ببینید که شما میتوانید نمای هر کدام انها را تغییر دهید
    بخش سوم >> کار کردن با ستون ها
    ایا بخاطر دارید نمای Report را در مرورگر ویندوز به شکل چی دیدید؟ دران حالت بصورت چند ستونی است و شامل : نام فایل و اندازه و .. است ممکن است مشکل به نظر برسد من به شما اطمینان میدهم که خیلی ساده است
    این کدها را اجرا و بررسی کنید که هر کدام بعد از این کد دارای توضیحاتی هستند
    Dim itmx As ListItem
    Dim colx As ColumnHeader
    'Add some columns
    Set colx = ListView1.ColumnHeaders.Add(, , "Filename")
    Set colx = ListView1.ColumnHeaders.Add(, , "Type")
    Set colx = ListView1.ColumnHeaders.Add(, , "Size")
    Set colx = ListView1.ColumnHeaders.Add(, , "Date")
    'Add an item. The text here is always the
    'First Column (Index 0)
    Set itmx = ListView1.ListItems.Add(, , "Abstract.exe", 1, 1)
    'Here is how we access each of the columns
    itmx.SubItems(1) = "Program File"
    itmx.SubItems(2) = "15 KB"
    itmx.SubItems(3) = "10/10/1999"
    'Set the listview to report
    ListView1.View = lvwReport
    شما می توانید ببینید که ما فقط به اضافه کردن تعدادی از ستونها احتیاج داشتیم مانند مثال قبلی. تفاوتی که در اینجا وجود دارد این است که ما به SubItem ها در یک ListItem دسترسی داریم. وقتی شما ابتدا یک ایتم متن را اضافه کنید ان را در Column(0) دریافت خواهید کرد.سپس برای قرار دادن متن در ستونهای دیگر ما لازم است که متن را به هر کدام از زیر ایتمها انتقال دهیم.برای مثال بالا من خودم را برای اضافه کردن تصاویر به header ستونها دردسر ندادم امل اگر شما از VB6 استفاده میکنید میتوانید این کار را نیز انجام دهید.
    بخش چهارم >> رویدادهای ListView
    در اینجا دو تا از رویدادهای اصلی که شما هنگام کار با ListView واقعا به انها احتیاج داردید توضیح میدهم. رویدادهای itemClick و ItemCheck.
    رویداد ItemClick وقتی روی میدهد که روی لیست ایتمها کلیک شده باشد. این رویداد شی ListItem را که روی ان کلیک شده است را بر میگرداند و بنابراین شما میتوانید با ان هر کاری را که لازم است انجام دهید.پس این کد را به مثال قبلی اضافه کنید
    Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
    MsgBox Item.Text
    End Sub
    وقتی شما برنامه را اجرا کنید و روی هر کدام از ایتمها در ListView کلیک کنید یک پیغام مبنی حاوی متن ایتمی که روی ان کلیک شده نمایش میدهد
    رویداد دیگر برای وقتی است که شما حالتی را استفده کرده باشید که کنار هر کدام از ایتمهای ListView یک جعبهچک نمایش داده شده باشد. این کد را به رویداد لود فرم اضافه کنید:
    ListView1.Checkboxes = True
    وقتی شما برنامه را اجرا کنید متوجه خواهید شد که یک جهبه چک در کنار هر کدام از ایتم ها داده شده است. ممکن است تا زمانی که روی ListView کلیک نشود ان را به روز نکند ( به نظر میرسد این یکی از باگهای VB باشد). اما اگر شما مقادیر جعبه چکها را در زمان طراحی تغییر دهید ان را بدرستی نمایش خواهد داد. برای انجام دادن کاری در زمان که کاربر جعبه چکها را تیک میزند و یا تیک را برمیدارد شما باید کد زیر را در رویداد ItemCheck قرار دهید.
    Private Sub ListView1_ItemCheck(ByVal Item As MSComctlLib.ListItem)
    If Item.Checked Then
    MsgBox "Box is being checked"
    Else
    MsgBox "Box is being unchecked"
    End If
    End Sub
    بخش پنجم >> مرتب کردن ListView بوسیله ستون ها:
    در این بخش ما میخواهیم ایتم های را در حالت Report به ListView اضافه کنیم و وقتی که کاربر روی عنوان یکی از ستونها کلیک کرد میخواهیم ایتم های موجود در ListView را بر اساس همان ستون مرتب کنیم. اگر کاربر روی همان ستون دوباره کلیک کرد این مرتب سازی بین حالت صعودی و نزولی تغییر کند. ابتدا نگاهی به کد زیر میاندازیمکه تا اندازه ای واضح است:
    Private Sub Form_Load()
    Dim itmx As ListItem
    Dim colx As ColumnHeader
    'Add Some Columns
    Set colx = ListView1.ColumnHeaders.Add(, , "Col1")
    Set colx = ListView1.ColumnHeaders.Add(, , "Col2")
    'Add two items
    Set itmx = ListView1.ListItems.Add(, , "ABC")
    itmx.SubItems(1) = "XYZ"
    Set itmx = ListView1.ListItems.Add(, , "XYZ")
    itmx.SubItems(1) = "ABC"
    'Set the view to report
    ListView1.View = lvwReport
    End Sub
    Private Sub ListView1_ColumnClick(ByVal ColumnHeader As
    MSComctlLib.ColumnHeader)
    'Check if the Sortkey is the same a the current one
    If ListView1.SortKey <> ColumnHeader.Index - 1 Then
    'When a column is clicked set the sortkey
    'to the columnheader index -1
    ListView1.SortKey = ColumnHeader.Index - 1
    ListView1.SortOrder = lvwAscending
    Else
    'If the column is already selected then change the
    'sortorder to be the opposite of what is currently
    'being used
    ListView1.SortOrder = IIf(ListView1.SortOrder = lvwAscending, _
    lvwDescending, lvwAscending)
    End If
    'Set the sorted property to use the new sortkey
    'and sort the contents
    ListView1.Sorted = True
    End Sub
    بنابراین وقتی کاربر روی یک ایتم کلیک میکند رویداد Column_Click رخ میدهد که مرجعی به شی ColumnHeader که کلیک شده است برمیگرداند. در این کد ما این را برای دسترسی به خاصیت index برای مقدار دهی SortKey از کنترل ListView بکار برده ایم ( SortKey فقط میگوید ListView چگونه مرتب شود ) وقتی که این کامل شد ما مقدار خاصیت Sorted کنترل ListView را به True مقدار میدهی.این اطمینان حاصل میکند که کنترل مرتب شده است و بوسیله این تغییرات در SortKey منعکس شده و نمایش داده شود. اگر همان ستون دوباره کلیک شد سپس ما نوع مرتب سازی را تغییر میدهیم و ان را برابر عکس روش فعلی قرار میدهیم
    بخش ششم >> ذخیره کردن عناوین ستونهای مرتب شده :
    ایا تاکنون شما برنامه های را دیده اید که چیزهایی را در ان مطابق میلتان تنظیم کرده اید و سپس از برنامه خارج شده و وقتی که دوباره به برنامه برگشته اید همه تنظیمات ان به حالت پیش فرض برگشته است و هیچ کدام از تنظیمات مورد نیاز شما را ذخیره نکرده باشد؟ این مساله بی نهایت ازار دهنده است و نشان دهنده یک برنامه نویسی ضعیف است. برای کنترل ListView این مساله در رابطه با ColumnHeader صدق میکند. اگر شما اجازه دهید که کاربر اندازه یا نوع مرتب سازی ستونها را تغییر دهد باید این تنظیمات را ذخیره کنید بنابراین دفعه بعد که کاربر از برنامه شما استفاده کند این تنظیمات را در اختیار خواهد داشت. در اینجا کدی را که شما برای انجام دادن این کار نیاز دارید قرار دادم البته بیشتر کدها رو قبلا گفتم و فقط یه مقدارش جدید است
    Private Sub Form_Load()
    Dim colx As ColumnHeader
    'Let the user reorder the columns
    ListView1.AllowColumnReorder = True
    'Set view to report
    ListView1.View = lvwReport
    'Add some columns
    Set colx = ListView1.ColumnHeaders.Add(, , "Col1")
    Set colx = ListView1.ColumnHeaders.Add(, , "Col2")
    Set colx = ListView1.ColumnHeaders.Add(, , "Col3")
    Set colx = ListView1.ColumnHeaders.Add(, , "Col4")
    Set colx = ListView1.ColumnHeaders.Add(, , "Col5")
    Set colx = ListView1.ColumnHeaders.Add(, , "Col6")
    'Loop though each ColumnHeader object and set the
    'position of it dependent on what the user did
    'the last time
    For Each colx In ListView1.ColumnHeaders
    colx.Position = GetSetting(App.Title, "Settings", "Col" & colx.Index,colx.Index)
    colx.Width = GetSetting(App.Title, "Settings", "ColWidth" & colx.Index, colx.Width)
    Next
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    Dim colx As ColumnHeader
    'Save the Position of each of the ColumnHeader
    'Objects so we can load them the next time
    'the user starts the program
    For Each colx In ListView1.ColumnHeaders
    SaveSetting App.Title, "Settings", "Col" & colx.Index,ListView1.ColumnHeaders(colx.Index).Pos ition
    SaveSetting App.Title, "Settings", "ColWidth" & colx.Index,ListView1.ColumnHeaders(colx.Index).Wid th
    Next
    End Sub
    رویداد Unload فرم تا زمانی که همه ColumnHeader ها در کنترل ListView را بدست اورده و مکان و اندازه (عرض) انها را ذخیره کند ادامه پیدا میکند.سپس دفعه بعد که برنامه اجرا شود در رویداد لود فرم این خواص اشاره شده و مقادیر انها را به اشیای ColumnHeader خاص برمی گردانیم.

  3. #3
    کاربر دائمی آواتار Tasiyan
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    رشت
    پست
    544

    نقل قول: List View

    دوست گرامي miniator پيشنهاد ميكنم براي قرار دادن كد از تگ كد استفاده كنيد تا كد هاتون خوانا تر باشه

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •