Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ListView.ColumnHeaders.Icon Эту icon справа разместить можно? / 7 сообщений из 7, страница 1 из 1
02.11.2009, 15:31
    #36286194
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView.ColumnHeaders.Icon Эту icon справа разместить можно?
ListView.ColumnHeaders.Icon
Хочется чтобы картинка в заголовках столбцов появлялась справа, по умолчанию она слева.
Хочу добавить "треугольнички сортировки" Descending-Ascending, их то есть то нет, если рисунок слева, то текст будет прыгать, не есть красиво. Контролы ради этого естественно менять (на что другое) уже не хочу.
...
Рейтинг: 0 / 0
02.11.2009, 15:52
    #36286267
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView.ColumnHeaders.Icon Эту icon справа разместить можно?
Дмитрий77ListView.ColumnHeaders.Icon
Хочется чтобы картинка в заголовках столбцов появлялась справа, по умолчанию она слева.
Хочу добавить "треугольнички сортировки" Descending-Ascending, их то есть то нет, если рисунок слева, то текст будет прыгать, не есть красиво. Контролы ради этого естественно менять (на что другое) уже не хочу.

Гораздо проще сделать картинку "нет треугольничка" такого же размера.
Тогда текст прыгать не будет.
...
Рейтинг: 0 / 0
02.11.2009, 16:24
    #36286383
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView.ColumnHeaders.Icon Эту icon справа разместить можно?
Не это не смешно и не проще.
Потому что тогда "нет треугольничка" придется размещать во всех полях одновременно, в т.ч. тех где сортировка добавлена лишь для универсальности и общности и текст "впритык". Вот и прикиньте сколько места съедят 10-15шт "нет треугольничка" и сколько будет многоточий, если я не захочу отдавать место, а я не захочу.Понятно, что юзер может чего хочет двигать как угодно, но default выводить простыню на 2 экрана шириной неправильно. Допустим, типичное значение в поле напр. на 3 у.е. текста (YES/NO к примеру), заголовок итак на 6 у.е. текста, и еше столько же на "нет треугольничка" для сего интелл(и?)ктуального поля?....

В принципе я пока оставил "слева", не так уж похабно прыгает, и не так уж часто надо "прыгать"...и надо ли...ибо оптимальная сортировка (на мой взгляд) и так default.
...
Рейтинг: 0 / 0
02.11.2009, 16:40
    #36286441
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView.ColumnHeaders.Icon Эту icon справа разместить можно?
LVM_SETCOLUMN
LVCFMT_BITMAP_ON_RIGHT

Jah loves you.
...
Рейтинг: 0 / 0
02.11.2009, 17:25
    #36286595
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView.ColumnHeaders.Icon Эту icon справа разместить можно?
Это типа вот это все переписывать и осмысливать?

/topic/265781&hl=lvm_setcolumn

А к существующим Listview обычными методами (без API рисованными) это применимо?
...
Рейтинг: 0 / 0
02.11.2009, 19:22
    #36286908
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView.ColumnHeaders.Icon Эту icon справа разместить можно?
Осмысливать нужно только LVM_SETCOLUMN — это сообщение, которое устанавливает параметры
колонки с помощью структуры LVCOLUMN.
SendMessage, короче.

Jah loves you.
...
Рейтинг: 0 / 0
03.11.2009, 00:35
    #36287204
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ListView.ColumnHeaders.Icon Эту icon справа разместить можно?
OK, спасибо, но помучиться пришлось.

Наиболее доходчивый пример откопался на .NET
http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/60200f5a-5612-4322-934a-8016ee99d2b1

Ну а вот энто слегка помогло "отформатировать под VB6"
http://www.bigresource.com/VB-Can-039-t-get-text-to-right-justify--s6kTnNb38c.html

+немного экспериментов методом тыка

Код: plaintext
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.
Public Const LVCF_FMT = &H1
Public Const LVCF_IMAGE = &H10

Public Const LVCFMT_IMAGE = &H800 'IE 3+ only
Public Const LVCFMT_BITMAP_ON_RIGHT = &H1000

'SendMessage function
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal Msg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long

'=======================================================

Private Sub ListView1_ColumnClick(Index As Integer, ByVal ColumnHeader As MSComctlLib.ColumnHeader)
    Dim lvFormat As LV_COLUMN
    Dim i As Integer
    Dim SK As Integer
    SK = ListView1(Index).SortKey 'запоминаем предыдущий ключ сортировки
    If ColumnHeader.Index = ColStructMas(Index).StartTimeN +  1  Then
'..........................
    Else
        If ColumnHeader.Index =  1  Then Exit Sub 'сортировку по иконке не производим
        If (SK = ColumnHeader.Index -  1 ) Then 'ключ сортировки не меняется,меняем порядок сортировки
            If ListView1(Index).SortOrder = lvwAscending Then
                ListView1(Index).SortOrder = lvwDescending
                'установка иконки "Descending"
                'ListView1(Index).ColumnHeaders(SK + 1).Icon = "Descending"
                With lvFormat
                    .mask = LVCF_FMT Or LVCF_IMAGE
                    .fmt = LVCFMT_IMAGE Or LVCFMT_BITMAP_ON_RIGHT
                    .iImage = ImageListHead.ListImages("Descending").Index -  1 
                End With
                Call SendMessage(ListView1(Index).hwnd, LVM_SETCOLUMN, SK, lvFormat) 'SK=sortkey(не меняется)
            Else
                ListView1(Index).SortOrder = lvwAscending
                'установка иконки "Ascending"
                'ListView1(Index).ColumnHeaders(SK + 1).Icon = "Ascending"
                With lvFormat
                    .mask = LVCF_FMT Or LVCF_IMAGE
                    .fmt = LVCFMT_IMAGE Or LVCFMT_BITMAP_ON_RIGHT
                    .iImage = ImageListHead.ListImages("Ascending").Index -  1 
                End With
                Call SendMessage(ListView1(Index).hwnd, LVM_SETCOLUMN, SK, lvFormat) 'SK=sortkey(не меняется)
            End If
        Else 'если ключ сортировки меняется, порядок сортировки делаем по возрастанию
            ListView1(Index).SortOrder = lvwAscending
            ListView1(Index).SortKey = ColumnHeader.Index -  1 
            ListView1(Index).ColumnHeaders(SK +  1 ).Icon =  0 
            'установка иконки "Ascending"
            ListView1(Index).ColumnHeaders(ColumnHeader.Index).Icon = "Ascending"
            With lvFormat
                .mask = LVCF_FMT Or LVCF_IMAGE
                .fmt = LVCFMT_IMAGE Or LVCFMT_BITMAP_ON_RIGHT
                .iImage = ImageListHead.ListImages("Ascending").Index -  1 
            End With
            Call SendMessage(ListView1(Index).hwnd, LVM_SETCOLUMN, ColumnHeader.Index -  1 , lvFormat)
            'ColumnHeader.Index - 1=new sortkey(меняется)
        End If
        'ListView1(Index).Sorted = True
    End If
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ListView.ColumnHeaders.Icon Эту icon справа разместить можно? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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