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

نام تاپیک: تغییر رنگ فونت سطر در ListVeiw

  1. #1

    تغییر رنگ فونت سطر در ListVeiw

    با سلام

    چه جوری میشه خاصیت ForeColor یک سطر در ListVeiw رو وقتیکه موس بر روی اون سطر قرار داره رو تغییر داد که با بقیه سطور فرق داشته باشه؟

  2. #2

    نقل قول: تغییر رنگ فونت سطر در ListVeiw

    خودم پیداش کردم
    Option Explicit
    Private m_lngPreviousRow As Long
    Private Const LVM_FIRST As Long = &H1000
    Private Const LVM_HITTEST As Long = (LVM_FIRST + 18)
    Private Type POINTAPI
    x As Long
    Y As Long
    End Type
    Private Type LVHITTESTINFO
    pt As POINTAPI
    flags As Long
    iItem As Long
    iSubItem As Long
    End Type
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
    (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wparam As Long, _
    lParam As Any) As Long
    'this public sub would probably be in a .bas module
    Public Sub ColorListviewRow(lv As ListView, RowNbr As Long, RowColor As OLE_COLOR)
    '************************************************* **************************
    'Purpose: Color a ListView Row
    'Inputs : lv - The ListView
    ' RowNbr - The index of the row to be colored
    ' RowColor - The color to color it
    'Outputs:
    '************************************************* **************************
    Dim itmX As ListItem
    Dim lvSI As ListSubItem
    Dim intIndex As Integer
    On Error GoTo ErrorRoutine
    Set itmX = lv.ListItems(RowNbr)
    itmX.ForeColor = RowColor
    For intIndex = 1 To lv.ColumnHeaders.Count - 1
    Set lvSI = itmX.ListSubItems(intIndex)
    lvSI.ForeColor = RowColor
    Next
    Set itmX = Nothing
    Set lvSI = Nothing
    Exit Sub
    ErrorRoutine:
    MsgBox Err.Description
    End Sub
    Private Sub lvwTOC_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)
    Dim lvhti As LVHITTESTINFO
    Dim lngCurrentRow As Long
    lvhti.pt.x = x / Screen.TwipsPerPixelX
    lvhti.pt.Y = Y / Screen.TwipsPerPixelY
    lngCurrentRow = SendMessage(lvwTOC.hwnd, LVM_HITTEST, 0, lvhti) + 1
    'check to see if the MouseMove has changed which row is under the mouse:
    If lngCurrentRow <> m_lngPreviousRow Then 'row has changed
    If ((m_lngPreviousRow > 0) And (m_lngPreviousRow <= lvwTOC.ListItems.Count)) Then
    'so, we need to reset the old row's ForeColor:
    ColorListviewRow lvwTOC, m_lngPreviousRow, &HFFFFC0 'light blue
    If ((lngCurrentRow > 0) And (lngCurrentRow <= lvwTOC.ListItems.Count)) Then
    'and set the current row's ForeColor:
    ColorListviewRow lvwTOC, lngCurrentRow, &H8080FF 'light red
    End If
    Else 'first time through (m_lngPreviousRow = -1 in FormLoad)
    If ((lngCurrentRow > 0) And (lngCurrentRow <= lvwTOC.ListItems.Count)) Then
    ColorListviewRow lvwTOC, lngCurrentRow, &H8080FF 'light red
    End If
    End If
    'and update he module level variable to indicate that the current row is now the old row:
    m_lngPreviousRow = lngCurrentRow
    End If
    End Sub

    آخرین ویرایش به وسیله romina2006 : سه شنبه 08 خرداد 1397 در 14:09 عصر

  3. #3
    کاربر دائمی آواتار علیرضا5
    تاریخ عضویت
    اردیبهشت 1394
    محل زندگی
    همدان
    پست
    506

    نقل قول: تغییر رنگ فونت سطر در ListVeiw

    لطفا جوابتون رو اول در یک TXT کپی کنید بعد از اونجا کپی کنید داخل سایت که استایلهاش حذف بشه

  4. #4

    نقل قول: تغییر رنگ فونت سطر در ListVeiw

    نقل قول نوشته شده توسط romina2006 مشاهده تاپیک
    خودم پیداش کردم
    Option Explicit
    Private m_lngPreviousRow As Long
    Private Const LVM_FIRST As Long = &H1000
    Private Const LVM_HITTEST As Long = (LVM_FIRST + 18)
    Private Type POINTAPI
    x As Long
    Y As Long
    End Type
    Private Type LVHITTESTINFO
    pt As POINTAPI
    flags As Long
    iItem As Long
    iSubItem As Long
    End Type
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
    (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wparam As Long, _
    lParam As Any) As Long
    'this public sub would probably be in a .bas module
    Public Sub ColorListviewRow(lv As ListView, RowNbr As Long, RowColor As OLE_COLOR)
    '************************************************* **************************
    'Purpose: Color a ListView Row
    'Inputs : lv - The ListView
    ' RowNbr - The index of the row to be colored
    ' RowColor - The color to color it
    'Outputs:
    '************************************************* **************************
    Dim itmX As ListItem
    Dim lvSI As ListSubItem
    Dim intIndex As Integer
    On Error GoTo ErrorRoutine
    Set itmX = lv.ListItems(RowNbr)
    itmX.ForeColor = RowColor
    For intIndex = 1 To lv.ColumnHeaders.Count - 1
    Set lvSI = itmX.ListSubItems(intIndex)
    lvSI.ForeColor = RowColor
    Next
    Set itmX = Nothing
    Set lvSI = Nothing
    Exit Sub
    ErrorRoutine:
    MsgBox Err.Description
    End Sub
    Private Sub lvwTOC_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)
    Dim lvhti As LVHITTESTINFO
    Dim lngCurrentRow As Long
    lvhti.pt.x = x / Screen.TwipsPerPixelX
    lvhti.pt.Y = Y / Screen.TwipsPerPixelY
    lngCurrentRow = SendMessage(lvwTOC.hwnd, LVM_HITTEST, 0, lvhti) + 1
    'check to see if the MouseMove has changed which row is under the mouse:
    If lngCurrentRow <> m_lngPreviousRow Then 'row has changed
    If ((m_lngPreviousRow > 0) And (m_lngPreviousRow <= lvwTOC.ListItems.Count)) Then
    'so, we need to reset the old row's ForeColor:
    ColorListviewRow lvwTOC, m_lngPreviousRow, &HFFFFC0 'light blue
    If ((lngCurrentRow > 0) And (lngCurrentRow <= lvwTOC.ListItems.Count)) Then
    'and set the current row's ForeColor:
    ColorListviewRow lvwTOC, lngCurrentRow, &H8080FF 'light red
    End If
    Else 'first time through (m_lngPreviousRow = -1 in FormLoad)
    If ((lngCurrentRow > 0) And (lngCurrentRow <= lvwTOC.ListItems.Count)) Then
    ColorListviewRow lvwTOC, lngCurrentRow, &H8080FF 'light red
    End If
    End If
    'and update he module level variable to indicate that the current row is now the old row:
    m_lngPreviousRow = lngCurrentRow
    End If
    End Sub

    اینهمه کد برای یک کار ساده ارزش نداره اونم با تابع SendMessage
    توصیه میکنم حتما از vsFlexGrid استفاده کنید
    اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم ! http://www.ArminaCo.com

  5. #5

    نقل قول: تغییر رنگ فونت سطر در ListVeiw

    برای vsFlexGrid این کد رو نوشتم کار میکنه ولی وقتیکه روی سطر آخر کلیک میکنم خطا Invalid property array index رو میده.چیکار باید کرد ؟

    If VSFlexGrid1.MouseRow = 0 Or VSFlexGrid1.MouseRow = -1 Then Exit Sub
    VSFlexGrid1.Cell(flexcpBackColor, VSFlexGrid1.MouseRow, 1, VSFlexGrid1.MouseRow, VSFlexGrid1.Cols - 1) = &H80C0FF
    For I = 1 To VSFlexGrid1.Row
    If I = VSFlexGrid1.MouseRow Then I = I + 1
    VSFlexGrid1.Cell(flexcpBackColor, I, 1, I, VSFlexGrid1.Cols - 1) = &HC0FFFF
    Next I


  6. #6
    کاربر دائمی
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    اصفهان
    پست
    717

    نقل قول: تغییر رنگ فونت سطر در ListVeiw

    یک دونه null اضافی به انتهای لیست اضافه کن

  7. #7

    نقل قول: تغییر رنگ فونت سطر در ListVeiw

    کدش رو تصحیح کردم :

    If VSFlexGrid1.MouseRow = 0 Or VSFlexGrid1.MouseRow = -1 Then Exit Sub
    VSFlexGrid1.Cell(flexcpBackColor, VSFlexGrid1.MouseRow, 1, VSFlexGrid1.MouseRow, VSFlexGrid1.Cols - 1) = &H80C0FF
    For I = 1 To VSFlexGrid1.Rows - 2
    If I = VSFlexGrid1.MouseRow Then I = I + 1
    VSFlexGrid1.Cell(flexcpBackColor, I, 1, I, VSFlexGrid1.Cols - 1) = &HC0FFFF
    Next I


تاپیک های مشابه

  1. تغییر رنگ یک سطر در Msflexgrid
    نوشته شده توسط hamid159 در بخش برنامه نویسی در 6 VB
    پاسخ: 5
    آخرین پست: شنبه 05 مرداد 1392, 01:40 صبح
  2. سوال: مشکل با تغییر رنگ هر سطر در یک textarea
    نوشته شده توسط abasfar در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: جمعه 14 مرداد 1390, 17:38 عصر
  3. مبتدی: تغییر رنگ یک سطر در Grideview بر اساس یک شرط خاص در یک ستون در زبان #C
    نوشته شده توسط Mazloomy در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: چهارشنبه 21 اردیبهشت 1390, 12:15 عصر
  4. تغییر رنگ فونت و زمینه در access
    نوشته شده توسط Taha_u در بخش Access
    پاسخ: 16
    آخرین پست: پنج شنبه 01 شهریور 1386, 11:05 صبح
  5. مشکل تغییر رنگ فونت رکورد فعال در DBGrid
    نوشته شده توسط Mahdi_S_T در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 8
    آخرین پست: چهارشنبه 30 اردیبهشت 1383, 05:06 صبح

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

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