powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблемы с ListView
25 сообщений из 34, страница 1 из 2
Проблемы с ListView
    #38437334
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть Listview(Report), созданный в VB6 (Common Controls 5)
Много записей.
Одна выделена.
Прокручиваем его так, чтоб выделенная запись была вне зоны видимости.

Выполняем любую из команд:
Код: vbnet
1.
2.
3.
  Set LItem = ListView1.ListItems.Add
  LItem.SubItems(1) = "Subitemtext" 'с любым итемом()
  ListView1.ListItems(1).Text = "text1" 'с любым итемом()



Проблема в том, что когда любая из них выполняется (не для выделенного, а для любого итема), то ListView делает для выделенной записи (для той кот. Selected) прокрутку в видимую область (EnsureVisible)

Т.е. когда много записей, они постоянно добавляются и изменяются, невозможно даже сделать прокрутку (все время скручивает на выделенную запись).

Я пытался лечить через API
ListViewSetSubItemText (LVM_SETITEM) для subitem частично решает проблему
А вот
LVM_SETITEM (для самого итема, т.е iSubItem=0)
LVM_SETITEMTEXTA (для самого итема, т.е iSubItem=0)
либо
LVM_INSERTITEM
всегда дает краш (для ListView созданного в конструкторе).


Че делать?
Net конечно я чуть подучил, но это VB6 проект.
Знаю, что полностью излечится, если полностью рисовать ListView через API. Но это блин пол-проекта покурочить и работа на несколько дней. Плюс всякие сортировки через API делать - повесишься.

Есть какой-нибудь способ полечить проблему на базе VB(Control-5) Listview.

Я небольшой тест-проект приложил (чтоб можно было поиграться с проблемой).
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38437337
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
замораживай область отрисовки, а после всех изменений обновляй
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38437355
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long


        LockWindowUpdate Tree.hWnd
'рисуем что-то или делаем с деревом
....

'обновляем окно
	LockWindowUpdate 0
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38437460
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,

боюсь это не то

Так все равно прокручивает до 1-го итема, если он Selected
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
LockWindowUpdate ListView1.hWnd
  Dim LItem As ComctlLib.ListItem
  Dim i As Long
  i = ListView1.ListItems.Count + 1
   Set LItem = ListView1.ListItems.Add
...
 LockWindowUpdate 0



А так все равно делает crash при LVM_INSERTITEM:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
LockWindowUpdate ListView1.hWnd
  Dim k As Long
  ListViewAddItem ListView1, 1
...
 LockWindowUpdate 0

Public Function ListViewAddItem(m_ListView As ComctlLib.ListView, m_Item As Long) As Long
  Dim lvi As LV_ITEM
  lvi.iItem = m_Item
  ListViewAddItem = SendMessage(m_ListView.hWnd, LVM_INSERTITEM, 0, lvi)
End Function



Причем тут отрисовка? Речь идет
1) о неправильном поведении
2) о том что я не могу почему-то полноценно применить API
LVM_INSERTITEM
LVM_SETITEM (для самого итема, т.е iSubItem=0)
LVM_SETITEMTEXTA (для самого итема, т.е iSubItem=0)
(которые по идеи должны это исправить)
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38437638
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что никто не знает?
Проблема как бы не праздная и к рюшечкам никакого отношения не имеет.
Речь идет о невозможности (сильных затруднениях) нормального просмотра тек. данных. Данные меняются быстро, а он все время передергивает на Selected строчку. Единственный способ для юзера - дергать за Scroll и быстро менять Selected - кто кого.

Неужели и вправду класс ListView через API придется ваять?
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38437910
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нельзя добавлять айтемы через апи. У этого листвью же объектная модель, как она узнает об изменении его содержимого?

Нужно отловить сообщение, отправляемое при EnsureVisible, и подавить его.
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38437951
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyНужно отловить сообщение, отправляемое при EnsureVisible, и подавить его.
Ну допустим, но тогда EnsureVisible работать не будет, а он кажется иногда нужен.
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38438023
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел 125

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Const WM_STYLECHANGED = &H7D

'сабклассинг ListView1.hwnd
  Select Case Msg
    Case WM_STYLECHANGED
      Debug.Print "WM_STYLECHANGED"
      Exit Function



На фига он его лепит?

Но EnsureVisible 4115 от этого не страдает.

Ну и чем чревата отмена?
И на фига я в API-шный влез.

Тогда вопрос. А API-шный быстрее будет? И насколько?
Ну...я б не сказал что какие-то жуткие тормоза, т.е. в "виртуальности" смысла не вижу, да и не знаю что это такое.
при больших нагрузках (когда непрерывное добавление) заметно.

Ну думаю сначала надо без этого глюка в работе посмотреть.
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38438106
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77AntonariyНужно отловить сообщение, отправляемое при EnsureVisible, и подавить его.
Ну допустим, но тогда EnsureVisible работать не будет, а он кажется иногда нужен.Нужно проверять, было ли перед этим событие добавления айтема, и если было, то подавлять.
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38438129
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77 А API-шный быстрее будет?Естественно.
Дмитрий77 И насколько?Заметно на глаз.
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38438178
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Дмитрий77Нашел 125

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Const WM_STYLECHANGED = &H7D

'сабклассинг ListView1.hwnd
  Select Case Msg
    Case WM_STYLECHANGED
      Debug.Print "WM_STYLECHANGED"
      Exit Function


Одно лечит, другое калечит.
Прокрутка то работает, но при продакшн-тестах при этом выявляется гораздо более плохой глюк.
При большом к-ве вводов он при таком лечении подмораживается.
Т.е. перестастает обновлять данные (визуально обновленные строчки не перерисовываются)
и пользователь не может ткнуться в другую запись (выделить ее).
Ломать дальше?

Или апишный добивать? А впереди сортировка, в .Net только недавно ругался с местными фанатиками на эту тему.
И кстати, что в API-шном есть tag и key?
Tag строчки мне понадобится минимум для сортировки по дате, ибо я эти IComparer-ы вряд ли полностью освою, а беглый взгляд в API намекает на то что кухня похожая.
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38438213
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Одно лечит, другое калечит.Значит лечишь не то или не тогда, когда надо. Сделай две кнопки, одну, добавляющую айтем, и вторую, которая делает только EnsureVisible, и сравнивай последовательности событий.

Дмитрий77И кстати, что в API-шном есть tag и key?Ничего, они есть только в объектной модели. Нужно сопоставлять апи-айтемы и объектные по индексу.

Кстати, с тривью такой фокус не пройдет, у него нет способа узнать, какой апи-айтем соответствует объектному.
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38438227
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77 Или апишный добивать? Добивай объектный апишными расширениями. Я, например, однажды добился, чтобы новые айтемы появлялись в начале списка, и при этом ничего не мигало и не тормозило.
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38439173
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyДобивай объектный апишными расширениями.
У меня так давно уже и сделано. Но я месяц или больше тогда потратил чтоб перейти с "6-х контролов на 5-е". Кстати в 6-х этого глюка нет.

Я пробовал еще так лечить:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
  Select Case Msg
    Case WM_STYLECHANGED
      Debug.Print "WM_STYLECHANGED"
      SendMessage Form1.ListView1.hwnd, LVM_UPDATE, 0, 0
      Exit Function
    Case Else
  End Select


Было ощущение что помогло. Но он гад вместо одного итема апдейтит все. При 3000 записей и 30-50 активных там такая "частота кадров" начинается, что мама не горюй - юзер уже не прорвется в миллисекундные окна. При "оригинале" хотя бы можно "продвигаться перебежками" - перемещать Selected из нижнего видимого в верхний видимый, ну или успевать скролить и щелкать мышью "кто кого".

Как вариант можно использовать API-сабитемы - с ними в отличии от объетных не глючит и нагрузка на Listview резко снизится. В "итем" у меня только картинка, да и та через API.
Но это не решает вопрос добавления записей.

Все-таки попробую сделать API-шный. Единственно, сабклассинги вынесу в формы-модули по своему стандарту. Проще кейсы в WinProc рассматривать чем с этим связываться + массив Listview WithEvents все одно не сделаю, будет еще больше дублей кода. Я твой контрол нашел, но ты там (да и в остальных примерах то же) лепишь все Msg в единственную ф-цию (непорядок), и сабклассинг снять уже проблема, у тебя кажется для ListView Это и не сделано. А чем лепить в класс 2 или 3 ф-ции (про запас, массив то не сделаешь), проще сабклассить индивидуально.
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38443130
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyКстати, с тривью такой фокус не пройдет, у него нет способа узнать, какой апи-айтем соответствует объектному.Ну почему же... Extending the functionality of the VB TreeView controls. TVItemData: Treeview item data (or how undocumented can you get?)
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38443141
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПанургAntonariyКстати, с тривью такой фокус не пройдет, у него нет способа узнать, какой апи-айтем соответствует объектному.Ну почему же... Extending the functionality of the VB TreeView controls. TVItemData: Treeview item data (or how undocumented can you get?) Это жесть.
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38443147
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПанургпропущено...
Ну почему же... Extending the functionality of the VB TreeView controls. TVItemData: Treeview item data (or how undocumented can you get?) Это жесть.Да. Но всеж есть способ.
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38443518
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да делаю через API потихоньку.

Antonariy,
У меня вопрос по сортировке.
Я по сути взял тот код кот. у тебя в ucComCtl3 (c LVM_SORTITEMSEX), вроде все работает:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
Public Function Sort() As Boolean
  If (m_hwndLV) Then Sort = m_ListViewSort.Sort(m_hwndLV, m_SortColumn, m_SortOrder, m_SortType)
End Function

'm_ListViewSort -модуль
Public Function Sort(ByVal hListView As Long, ByVal Column As Integer, ByVal SortOrder As eSortOrderConstants, ByVal SortType As eSortTypeConstants) As Boolean
Dim lRet As Long
  m_lColumn = CLng(Column)
  Select Case SortOrder
    Case soDefault
      m_PRECEDE = 1
      m_FOLLOW = -1
      lRet = SendMessageLong(hListView, LVM_SORTITEMSEX, hListView, AddressOf pvCompareIndex)
    Case soAscending, soDescending
      m_PRECEDE = SortOrder
      m_FOLLOW = -SortOrder
      Select Case SortType
        Case [stString]
          lRet = SendMessageLong(hListView, LVM_SORTITEMSEX, hListView, AddressOf pvCompareText)
        Case [stStringSensitive]
          lRet = SendMessageLong(hListView, LVM_SORTITEMSEX, hListView, AddressOf pvCompareTextSensitive)
        Case [stNumeric]
          lRet = SendMessageLong(hListView, LVM_SORTITEMSEX, hListView, AddressOf pvCompareValue)
        Case [stDate]
          lRet = SendMessageLong(hListView, LVM_SORTITEMSEX, hListView, AddressOf pvCompareDate)
      End Select
  End Select
  Sort = CBool(lRet)
End Function

Private Function pvCompareIndex(ByVal lParam1 As Long, ByVal lParam2 As Long, ByVal hWnd As Long) As Long
  If (lParam1 > lParam2) Then
    pvCompareIndex = m_PRECEDE
  ElseIf (lParam1 < lParam2) Then
    pvCompareIndex = m_FOLLOW
  End If
End Function

Private Function pvCompareText(ByVal lParam1 As Long, ByVal lParam2 As Long, ByVal hWnd As Long) As Long
  Dim val1 As String
  Dim val2 As String
  val1 = LCase$(pvGetItemText(hWnd, lParam1))
  val2 = LCase$(pvGetItemText(hWnd, lParam2))
  If (val1 > val2) Then
    pvCompareText = m_PRECEDE
  ElseIf (val1 < val2) Then
    pvCompareText = m_FOLLOW
  End If
End Function

Private Function pvCompareTextSensitive(ByVal lParam1 As Long, ByVal lParam2 As Long, ByVal hWnd As Long) As Long
  Dim val1 As String
  Dim val2 As String
  val1 = pvGetItemText(hWnd, lParam1)
  val2 = pvGetItemText(hWnd, lParam2)
  If (val1 > val2) Then
    pvCompareTextSensitive = m_PRECEDE
  ElseIf (val1 < val2) Then
    pvCompareTextSensitive = m_FOLLOW
  End If
End Function

Private Function pvCompareValue(ByVal lParam1 As Long, ByVal lParam2 As Long, ByVal hWnd As Long) As Long
  Dim val1 As Double
  Dim val2 As Double
  val1 = pvGetItemValue(hWnd, lParam1)
  val2 = pvGetItemValue(hWnd, lParam2)
  If (val1 > val2) Then
    pvCompareValue = m_PRECEDE
  ElseIf (val1 < val2) Then
    pvCompareValue = m_FOLLOW
  End If
End Function

Private Function pvCompareDate(ByVal lParam1 As Long, ByVal lParam2 As Long, ByVal hWnd As Long) As Long
  Dim val1 As Date
  Dim val2 As Date
  val1 = pvGetItemDate(hWnd, lParam1)
  val2 = pvGetItemDate(hWnd, lParam2)
  If (val1 > val2) Then
    pvCompareDate = m_PRECEDE
  ElseIf (val1 < val2) Then
    pvCompareDate = m_FOLLOW
  End If
End Function

Private Function pvGetItemText(ByVal hWnd As Long, ByVal lParam As Long) As String
  Dim nRet As Long
  With m_uLVI
    .mask = LVIF_TEXT
    .iSubItem = m_lColumn
    .pszText = Space(MAX_LVMSTRING)
    .cchTextMax = Len(.pszText)
  End With
  nRet = SendMessage(hWnd, LVM_GETITEMTEXT, lParam, m_uLVI)
  pvGetItemText = Left$(m_uLVI.pszText, nRet)
End Function

Private Function pvGetItemValue(ByVal hWnd As Long, ByVal lParam As Long) As Double
  Dim sText As String
  Dim nRet As Long
  With m_uLVI
    .mask = LVIF_TEXT
    .iSubItem = m_lColumn
    .pszText = Space(MAX_LVMSTRING)
    .cchTextMax = Len(.pszText)
  End With
  nRet = SendMessage(hWnd, LVM_GETITEMTEXT, lParam, m_uLVI)
  If nRet = 0 Then
    pvGetItemValue = -1
  Else
    sText = Left$(m_uLVI.pszText, nRet)
    If (IsNumeric(sText)) Then
      pvGetItemValue = CDbl(sText)
    Else
      pvGetItemValue = CDbl(Val(sText))
    End If
  End If
End Function

Private Function pvGetItemDate(ByVal hWnd As Long, ByVal lParam As Long) As Date
  Dim sText As String
  Dim nRet As Long
  With m_uLVI
    .mask = LVIF_TEXT
    .iSubItem = m_lColumn
    .pszText = Space(MAX_LVMSTRING)
    .cchTextMax = Len(.pszText)
  End With
  nRet = SendMessage(hWnd, LVM_GETITEMTEXT, lParam, m_uLVI)
  sText = Left$(m_uLVI.pszText, nRet)
  If (IsDate(sText)) Then pvGetItemDate = sText
End Function



Не могу сейчас до конца просечь, когда я применяю .sorted (VB) в VB-варианте, но вопросы опасения пока такие

1) Правильно ли я понимаю что без LV.sort() он при добавлении новой записи автоматически не сортирует?
2) Т.е. я должен "ручками"(из кода) делать LV.sort() после добавления каждой записи? При изменении записи я этого напротив делать не хочу.
3) Я пока реализовал Column_Click.
У меня пока ощущения, что LV.sort(pvCompareDate) работает "чуть долго", т.е. щелчок по столбцу с дата/время чуть (м.б. субъективно) "залипает" если сравнивать со щелчком по столбцу где сортировка как String.
Опасения такие (но пока не сделаю, не пойму, а делать еще долго).
Если напр. в LV несколько тысяч записей, я добавляю (последовательно) еще пару тысяч,
у меня в ф-ции Add() предположительно последней строчкой будет стоять Sort().
Мне эта сортировка его не завесит? (Sort для каждой добавляемой строчки).
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38443620
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Да
2. Как угодно.
3. Да, даты сравниваются дольше.

Мне эта сортировка его не завесит? (Sort для каждой добавляемой строчки).Зависит от характера сортировки. Я делал добавление в начало списка (проверка почты) — сортировал по значению таймера после добавления каждой записи. Так как предыдущие записи уже отсортированы, это много времени не занимало, и новые записи добавлялись с пулеметной скоростью без каких-либо тормозов при размере списка в несколько сотен (много спама было).
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38443862
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy3. Да, даты сравниваются дольше.

У меня в VB-реализации код такой:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
                ListView1(Index).ListItems(i).Tag = ListView1(Index).ListItems(i).SubItems(ColStructMas(Index).StartTimeN)
                ListView1(Index).ListItems(i).SubItems(ColStructMas(Index).SubmissionTimeN) = _
                  Format(ListView1(Index).ListItems(i).SubItems(ColStructMas(Index).SubmissionTimeN), "yyyymmddhhmmss")
...
ListView1(Index).SortOrder =
'либо
ListView1(Index).SortKey =
'ListView1(Index).Sorted = True 'ЭТО ДАЖЕ НЕ НУЖНО, т.к. сортируется при изменении .SortOrder / .SortKey

                ListView1(Index).ListItems(i).SubItems(ColStructMas(Index).SubmissionTimeN) = ListView1(Index).ListItems(i).Tag
                ListView1(Index).ListItems(i).Tag = ""


Ну т.е. идею понял. Подменяю дату/время на "yyyymmddhhmmss" и сравниваю строки а не даты.

Т. е. как считаешь? Если забабахать что-то типа
Код: vbnet
1.
2.
3.
4.
Private Function pvGetItemDate(ByVal hWnd As Long, ByVal lParam As Long) As String
...
  sText = Format(Left$(m_uLVI.pszText, nRet),"yyyymmddhhmmss"
 End Function


Оно как бы ускорится?
AntonariyЗависит от характера сортировки. Я делал добавление в начало списка (проверка почты) — сортировал по значению таймера после добавления каждой записи. Так как предыдущие записи уже отсортированы, это много времени не занимало, и новые записи добавлялись с пулеметной скоростью без каких-либо тормозов при размере списка в несколько сотен
Черт его знает.
У меня не письма, у меня факсы. И вот например юзер решил добавить 2000 заданий факса на отправку
Код (логика) работает так:
Код: vbnet
1.
2.
3.
4.
for 'если есть задание
  Set LItem = ListView1(Index).ListItems.Add(1) 'получается "в начало"
  Sort!!!
next

Можно конечно вынести sort за цикл конкретно для этой процедуры.
Доделаю, буду смотреть короче.
Не променять бы шило(VB-Listview) на мыло (API-Listview).
Счас просто тестирую на критических нагрузках и все сопли очень хорошо вылазят (причем даже в профессиональных C-шных кодах ).
И VB-ListView с его "авто-прокрутками" и "авто-рефрешами" это одна из этих соплей.
Для стандартного клиента с 1-4 линиями все это практически неважно, а вот если клиент хочет 30-50 линий (другие нагрузки, но и другие деньги), то все эти сопли -прямой путь к потере крупного заказчика.
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38443903
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т. е. как считаешь? Если забабахать что-то типа ... Оно как бы ускорится?Тут и Left, и Format, и сравнение строк без StrComp... Вряд ли. Лучше так попробовать:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Type MyDate 
    Low As Long 'время
    High As Long 'дата
End Type

Dim md as MyDate
Dim d as Date

d = Now
CopyMemory md, Now, 8

И сравнивай по частям целые числа.
А можно еще и rtlMoveMemory вместо CopyMemory, она быстрее.

У меня не письма, у меня факсы. И вот например юзер решил добавить 2000 заданий факса на отправкуЗачем их сортировать?
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38443907
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
CopyMemory md, d, 8
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38443911
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А хотя тут еще придется строку к дате приводить.
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38444033
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Ну, буду уже по ходу смотреть.
А LVM_SORTITEMS, LVS_SORTASCENDING, LVS_SORTDESCENDING ничего полезного дать не могут?
...
Рейтинг: 0 / 0
Проблемы с ListView
    #38444154
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все, что они могут дать, описано в МСДН.
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проблемы с ListView
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]