ListView.ColumnHeaders.Icon Эту icon справа разместить можно? - VB

Узнай цену своей работы

Формулировка задачи:

ListView.ColumnHeaders.Icon
Хочется чтобы картинка в заголовках столбцов появлялась справа, по умолчанию она слева.
Хочу добавить "треугольнички сортировки" Descending-Ascending, их то есть то нет, если рисунок слева, то текст будет прыгать, не есть красиво. Контролы ради этого естественно менять (на что другое) уже не хочу.

Решение задачи: «ListView.ColumnHeaders.Icon Эту icon справа разместить можно?»

textual
Листинг программы
<font color="blue">Public</font> <font color="blue">Const</font> LVCF_FMT = &H1
<font color="blue">Public</font> <font color="blue">Const</font> LVCF_IMAGE = &H10

<font color="blue">Public</font> <font color="blue">Const</font> LVCFMT_IMAGE = &H800 <font color="00AA00">'IE 3+ only</font>
<font color="blue">Public</font> <font color="blue">Const</font> LVCFMT_BITMAP_ON_RIGHT = &H1000

<font color="00AA00">'SendMessage function</font>
<font color="blue">Public</font> <font color="blue">Declare</font> <font color="blue">Function</font> SendMessage Lib <font color="teal">"user32"</font> Alias <font color="teal">"SendMessageA"</font> _
(<font color="blue">ByVal</font> hwnd <font color="blue">As</font> <font color="blue">Long</font>, _
<font color="blue">ByVal</font> Msg <font color="blue">As</font> <font color="blue">Long</font>, _
<font color="blue">ByVal</font> wParam <font color="blue">As</font> <font color="blue">Long</font>, _
lParam <font color="blue">As</font> Any) <font color="blue">As</font> <font color="blue">Long</font>

<font color="00AA00">'=======================================================</font>

<font color="blue">Private</font> <font color="blue">Sub</font> ListView1_ColumnClick(Index <font color="blue">As</font> <font color="blue">Integer</font>, <font color="blue">ByVal</font> ColumnHeader <font color="blue">As</font> MSComctlLib.ColumnHeader)
    <font color="blue">Dim</font> lvFormat <font color="blue">As</font> LV_COLUMN
    <font color="blue">Dim</font> i <font color="blue">As</font> <font color="blue">Integer</font>
    <font color="blue">Dim</font> SK <font color="blue">As</font> <font color="blue">Integer</font>
    SK = ListView1(Index).SortKey <font color="00AA00">'запоминаем предыдущий ключ сортировки</font>
    <font color="blue">If</font> ColumnHeader.Index = ColStructMas(Index).StartTimeN + <font color="darkblue"><b>1</b></font> <font color="blue">Then</font>
<font color="00AA00">'..........................</font>
    <font color="blue">Else</font>
        <font color="blue">If</font> ColumnHeader.Index = <font color="darkblue"><b>1</b></font> <font color="blue">Then</font> <font color="blue">Exit</font> <font color="blue">Sub</font> <font color="00AA00">'сортировку по иконке не производим</font>
        <font color="blue">If</font> (SK = ColumnHeader.Index - <font color="darkblue"><b>1</b></font>) <font color="blue">Then</font> <font color="00AA00">'ключ сортировки не меняется,меняем порядок сортировки</font>
            <font color="blue">If</font> ListView1(Index).SortOrder = lvwAscending <font color="blue">Then</font>
                ListView1(Index).SortOrder = lvwDescending
                <font color="00AA00">'установка иконки <font color="teal">"Descending"</font></font>
                <font color="00AA00">'ListView1(Index).ColumnHeaders(SK + 1).Icon = <font color="teal">"Descending"</font></font>
                <font color="blue">With</font> lvFormat
                    .mask = LVCF_FMT <font color="blue">Or</font> LVCF_IMAGE
                    .fmt = LVCFMT_IMAGE <font color="blue">Or</font> LVCFMT_BITMAP_ON_RIGHT
                    .iImage = ImageListHead.ListImages(<font color="teal">"Descending"</font>).Index - <font color="darkblue"><b>1</b></font>
                <font color="blue">End</font> <font color="blue">With</font>
                <font color="blue">Call</font> SendMessage(ListView1(Index).hwnd, LVM_SETCOLUMN, SK, lvFormat) <font color="00AA00">'SK=sortkey(не меняется)</font>
            <font color="blue">Else</font>
                ListView1(Index).SortOrder = lvwAscending
                <font color="00AA00">'установка иконки <font color="teal">"Ascending"</font></font>
                <font color="00AA00">'ListView1(Index).ColumnHeaders(SK + 1).Icon = <font color="teal">"Ascending"</font></font>
                <font color="blue">With</font> lvFormat
                    .mask = LVCF_FMT <font color="blue">Or</font> LVCF_IMAGE
                    .fmt = LVCFMT_IMAGE <font color="blue">Or</font> LVCFMT_BITMAP_ON_RIGHT
                    .iImage = ImageListHead.ListImages(<font color="teal">"Ascending"</font>).Index - <font color="darkblue"><b>1</b></font>
                <font color="blue">End</font> <font color="blue">With</font>
                <font color="blue">Call</font> SendMessage(ListView1(Index).hwnd, LVM_SETCOLUMN, SK, lvFormat) <font color="00AA00">'SK=sortkey(не меняется)</font>
            <font color="blue">End</font> <font color="blue">If</font>
        <font color="blue">Else</font> <font color="00AA00">'если ключ сортировки меняется, порядок сортировки делаем по возрастанию</font>
            ListView1(Index).SortOrder = lvwAscending
            ListView1(Index).SortKey = ColumnHeader.Index - <font color="darkblue"><b>1</b></font>
            ListView1(Index).ColumnHeaders(SK + <font color="darkblue"><b>1</b></font>).Icon = <font color="darkblue"><b>0</b></font>
            <font color="00AA00">'установка иконки <font color="teal">"Ascending"</font></font>
            ListView1(Index).ColumnHeaders(ColumnHeader.Index).Icon = <font color="teal">"Ascending"</font>
            <font color="blue">With</font> lvFormat
                .mask = LVCF_FMT <font color="blue">Or</font> LVCF_IMAGE
                .fmt = LVCFMT_IMAGE <font color="blue">Or</font> LVCFMT_BITMAP_ON_RIGHT
                .iImage = ImageListHead.ListImages(<font color="teal">"Ascending"</font>).Index - <font color="darkblue"><b>1</b></font>
            <font color="blue">End</font> <font color="blue">With</font>
            <font color="blue">Call</font> SendMessage(ListView1(Index).hwnd, LVM_SETCOLUMN, ColumnHeader.Index - <font color="darkblue"><b>1</b></font>, lvFormat)
            <font color="00AA00">'ColumnHeader.Index - 1=new sortkey(меняется)</font>
        <font color="blue">End</font> <font color="blue">If</font>
        <font color="00AA00">'ListView1(Index).Sorted = True</font>
    <font color="blue">End</font> <font color="blue">If</font>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5