powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Где в Listview пароль сохранить? Кроме ListView1.ListItems(i).Tag
15 сообщений из 15, страница 1 из 1
Где в Listview пароль сохранить? Кроме ListView1.ListItems(i).Tag
    #38027019
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каждая строчка - учетная запись, пароль же не показывать на обозрение.
Про tag понятно, но я там храню цвет строчки, а раскрашиваю через customdraw:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
                        Case CDDS_ITEMPREPAINT
                            Select Case lvcd.nmcd.hdr.hwndFrom 'в смысле какой контрол собрался перерисовываться
                                Case MyForm.ListVie1.hwnd
                                    'в Tag храним информацию о цвете строчки, если пусто, то по умолчанию
                                    If Len(MyForm.ListView1.ListItems(lvcd.nmcd.dwItemSpec + 1).Tag) > 0 Then
                                        lvcd.clrText = Val(MyForm.ListView1.ListItems(lvcd.nmcd.dwItemSpec + 1).Tag)
                                        'lvcd.clrTextBk = vbRed 'background of item, если надо
                                        MoveMemory ByVal lParam, lvcd, Len(lvcd)
                                        Exit Function
                                    End If
                                Case Else
                            End Select 'lvcd.nmcd.hdr.hwndFrom
                        Case Else
                    End Select   ' lvcd.nmcd.dwDrawStage



Или пароль в tag, а с цветом переделать?
Цвет тупо зависит от текста одного из subitems:
В предыдущей реализации при изменении этого subitems в Tag пишется цвет и делается Refresh:
Код: vbnet
1.
2.
  MyForm.ListView1.ListItems(i).Tag = 16711680 'ok-синим 'Control5
  MyForm.ListView1.Refresh 'Control5-применяем цвет



В CustomDraw в коде выше есть параметры
Код: vbnet
1.
2.
lvcd.nmcd.dwItemSpec
lvcd.iSubItem



На что реагировать (при изменении subitem.text надо изменить цвет строчки)? Проверять lvcd.iSubItem (перерисовался нужный subitem) или тупо (в коде Custom Draw) проверять subitem.text и в зависимости от этого делать lvcd.clrText ?
...
Рейтинг: 0 / 0
Где в Listview пароль сохранить? Кроме ListView1.ListItems(i).Tag
    #38027120
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в tag можно структуру свою засунуть, и считывать когда нужно
...
Рейтинг: 0 / 0
Где в Listview пароль сохранить? Кроме ListView1.ListItems(i).Tag
    #38027169
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

Может пароль не хранить даже в "скрытом" Tag, а например хешировать хотя бы. Даже если юзером будешь сам, выглядит не комильфо...
...
Рейтинг: 0 / 0
Где в Listview пароль сохранить? Кроме ListView1.ListItems(i).Tag
    #38027433
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Структура, мне кажется это излишне.
Попробую с цветом переиграть.
CustomDraw кстати текста subitem в явном виде нигде не содержит?

А по поводу хэширования паролей - никогда не задумывался, в ini (реестре) он сохраняется в открытую. Ну вроде пока жалоб не поступало. Вопрос не в том как его хранить, а как его временно сохранять в строчке listview при правке записи.
...
Рейтинг: 0 / 0
Где в Listview пароль сохранить? Кроме ListView1.ListItems(i).Tag
    #38029558
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, я решил все-таки в Tag,
а с цветом переиграл:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
           Case CDDS_ITEMPREPAINT
              Select Case lvcd.nmcd.hdr.hwndFrom 'в смысле какой контрол собрался перерисовываться
                Case FormSetup.ListView1.hwnd
                  reg_st = ListViewGetSubItemText(FormSetup.ListView1, lvcd.nmcd.dwItemSpec + 1, 3)
                  If reg_st = "case1" Then
                    lvcd.clrText = vbBlue 'синий
                    MoveMemory ByVal lParam, lvcd, Len(lvcd)
                    Exit Function
                  ElseIf reg_st = "case2" Then
                    lvcd.clrText = 8388608 '&H8000000D -синий темный
                    MoveMemory ByVal lParam, lvcd, Len(lvcd)
                    Exit Function
                  ElseIf (Left(reg_st, 6) = "case3") Then
                    lvcd.clrText = vbRed 'красный
                    MoveMemory ByVal lParam, lvcd, Len(lvcd)
                    Exit Function
                  End If
                Case Else
              End Select 'lvcd.nmcd.hdr.hwndFrom
            Case Else
...
Рейтинг: 0 / 0
Где в Listview пароль сохранить? Кроме ListView1.ListItems(i).Tag
    #38029561
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

Вместо комментариев 'синий темный и т.п. заведи константы с осмысленными именами. Неплохо бы и имя присвоить ListView1, а то и мемори мув и хэндлс, а нормальную константу завести и имя присвоить лень - непрофессионально.
...
Рейтинг: 0 / 0
Где в Listview пароль сохранить? Кроме ListView1.ListItems(i).Tag
    #38029948
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
off
он как обфускатор работает - непонятные имена контролов, ничего не говорящие названия ф-ий и процедур и тд и тп ...


...
Рейтинг: 0 / 0
Где в Listview пароль сохранить? Кроме ListView1.ListItems(i).Tag
    #38029975
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Ну, я решил все-таки в Tag,
а с цветом переиграл:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
           Case CDDS_ITEMPREPAINT
              Select Case lvcd.nmcd.hdr.hwndFrom 'в смысле какой контрол собрался перерисовываться
                Case FormSetup.ListView1.hwnd
                  reg_st = ListViewGetSubItemText(FormSetup.ListView1, lvcd.nmcd.dwItemSpec + 1, 3)
                  If reg_st = "case1" Then
                    lvcd.clrText = vbBlue 'синий
                    MoveMemory ByVal lParam, lvcd, Len(lvcd)
                    Exit Function
                  ElseIf reg_st = "case2" Then
                    lvcd.clrText = 8388608 '&H8000000D -синий темный
                    MoveMemory ByVal lParam, lvcd, Len(lvcd)
                    Exit Function
                  ElseIf (Left(reg_st, 6) = "case3") Then
                    lvcd.clrText = vbRed 'красный
                    MoveMemory ByVal lParam, lvcd, Len(lvcd)
                    Exit Function
                  End If
                Case Else
              End Select 'lvcd.nmcd.hdr.hwndFrom
            Case Else

Дичь какая. Cохранил бы цвет в стуктуре в tag, не было бы лестницы из if'ов.
...
Рейтинг: 0 / 0
Где в Listview пароль сохранить? Кроме ListView1.ListItems(i).Tag
    #38031144
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladConnДмитрий77,

Вместо комментариев 'синий темный и т.п. заведи константы с осмысленными именами. Неплохо бы и имя присвоить ListView1, а то и мемори мув и хэндлс, а нормальную константу завести и имя присвоить лень - непрофессионально.
Konst_One прав, я не вижу смысл выкладывать на форум код с родными именами. Конкретно про "темно-синий" -в данном конкретном случае мне удобней сделать комментарий, а не выдумывать константы. Константы в моем понимании - это те которые в MSDN и API-ф-циях. А злоупотребление пользовательскими может впоследствии сильно запутать (например, если сдуру дал ей имя, а потом понадобилась "родная" с таким же именем).

Непрофессионально, это когда на форуме выкладывается лог или конфиг, в котором вопрошающий даже не удосужился затереть звездочками IP-адрес, login и password, никогда с таким не сталкивались?

AntonariyДичь какая. Cохранил бы цвет в стуктуре в tag, не было бы лестницы из if'ов.
Обоснуй (кроме эстетики). If-ов всего 3.

Хочешь сказать что это (как сейчас)
Код: vbnet
1.
                  reg_st = ListViewGetSubItemText(FormSetup.ListView1, lvcd.nmcd.dwItemSpec + 1, 3)


замедляет прогу если сравнивать с (как было)
Код: vbnet
1.
2.
                                    If Len(MyForm.ListView1.ListItems(lvcd.nmcd.dwItemSpec + 1).Tag) > 0 Then
                                        lvcd.clrText = Val(MyForm.ListView1.ListItems(lvcd.nmcd.dwItemSpec + 1).Tag)



Вообще-то это даже не API-GDI простынь, как я делаю напр. чтоб изменить цвет шрифта на кнопке и пририсовать кнопке картинку на ее hdc (в аналогичном CustomDraw коде).

А, ну да.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Public Function ListViewGetSubItemText(m_ListView As ComctlLib.ListView, m_Item As Long, m_subItem As Long) As String
  Dim lvi As LV_ITEM
  Dim nRet As Long
    
  With lvi
    .mask = LVIF_TEXT
    .iSubItem = m_subItem
    .pszText = Space(MAX_LVMSTRING) 'Space(32) '
    .cchTextMax = Len(.pszText)  'MAX_LVMSTRING
  End With
  nRet = SendMessage(m_ListView.hwnd, LVM_GETITEMTEXT, m_Item - 1, lvi)
  ListViewGetSubItemText = Left$(lvi.pszText, nRet)
End Function



Я не помню почему , но конкретно для этого Listview я не использую родные с т.зр. VB6 subitems.
(кажется там какая-то двойственность т.е. VB-subitem не прочитается через API и наоборот).
...
Рейтинг: 0 / 0
Где в Listview пароль сохранить? Кроме ListView1.ListItems(i).Tag
    #38031169
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77А злоупотребление пользовательскими может впоследствии сильно запутать (например, если сдуру дал ей имя, а потом понадобилась "родная" с таким же именем).А нечего сдуру давать имена, начинающиеся с префикса vb.
Детский сад какой-то.
Дмитрий77Обоснуй (кроме эстетики). If-ов всего 3.Разделение данных и логики.
...
Рейтинг: 0 / 0
Где в Listview пароль сохранить? Кроме ListView1.ListItems(i).Tag
    #38031170
Фотография VladConn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77,

Дмитрий77...А злоупотребление пользовательскими может впоследствии сильно запутать (например, если сдуру дал ей имя, а потом понадобилась "родная" с таким же именем).

Это как? Ты собираешься давать имена, начинающиеся с vb???

:0)
...
Рейтинг: 0 / 0
Где в Listview пароль сохранить? Кроме ListView1.ListItems(i).Tag
    #38032085
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyА нечего сдуру давать имена, начинающиеся с префикса vb.
Разговор ни о чем.
vbBlue, vbRed - это VB-константы.
Вы предлагаете мне сделать
Const MY_DACK_BLUE = &H8000000D
Я не хочу.

Я имел ввиду, что я где-нибудь наляпаю MAX_LENTH=99 (потому что мне так захотелось), а потом(когда уже забуду про это) займусь какими-нибудь Audio API, обрадуюсь что у меня уже "есть эта константа" и сделаю большой ляп.

AntonariyДетский сад какой-то.
Дмитрий77Обоснуй (кроме эстетики). If-ов всего 3.Разделение данных и логики.
Я просил обосновать, почему это будет плохо работать (медленно, глючно и т.д.).
Какая разница, читать Tag или Subitem?
...
Рейтинг: 0 / 0
Где в Listview пароль сохранить? Кроме ListView1.ListItems(i).Tag
    #38032119
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты пишешь говнокод, который сложно, неудобно, а следовательно дорого поддерживать. Это относится и к константам и к лестницам из if'ов.

А с точки зрения производительности разница в данном случае не принципиальна.
...
Рейтинг: 0 / 0
Где в Listview пароль сохранить? Кроме ListView1.ListItems(i).Tag
    #38032162
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyА с точки зрения производительности разница в данном случае не принципиальна.
Это я и хотел услышать.
AntonariyТы пишешь говнокод, который сложно, неудобно,...
Не, лучше заменить на говновид (6-е контролы), но зато цвет строчки устанавливается в одно действие. Кончай препираться по ерунде.
...
Рейтинг: 0 / 0
Где в Listview пароль сохранить? Кроме ListView1.ListItems(i).Tag
    #38032266
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не препираюсь, а излагаю своё фи.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Где в Listview пароль сохранить? Кроме ListView1.ListItems(i).Tag
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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