Subversion Repositories Kolibri OS

Rev

Rev 1283 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1277 IgorA 1
2
3
элемент Tree List
4
5
45
46
47

Оглавление

1283 IgorA 48

Введение

49

Функции

1277 IgorA 50
    1285 IgorA 51
  • tl_data_init
  • 52
  • tl_data_clear
  • 53
  • tl_info_clear
  • 54
  • tl_key
  • 55
  • tl_mouse
  • 56
  • tl_draw
  • 57
  • tl_info_undo
  • 58
  • tl_info_redo
  • 59
  • tl_node_add
  • 1277 IgorA 60
  • tl_node_set_data
  • 61
  • tl_node_get_data
  • 62
  • tl_node_delete
  • 63
  • tl_cur_beg
  • 64
  • tl_cur_next
  • 65
  • tl_cur_perv
  • 66
  • tl_node_close_open
  • 67
  • tl_node_lev_inc
  • 68
  • tl_node_lev_dec
  • 1285 IgorA 69
  • tl_node_move_up
  • 70
  • tl_node_move_down
  • 1277 IgorA 71
  • tl_node_poi_get_info
  • 72
  • tl_node_poi_get_next_info
  • 73
  • tl_node_poi_get_data
  • 74
  • version_tree_list
  • 75
    1283 IgorA 76

    Структура tree_list

    77

    Стили элемента

    1277 IgorA 78
     
    1285 IgorA 79

    Введение

    1277 IgorA 80

    Внешний вид элемента управления TreeList:

    81

    82
     
    1283 IgorA 83

    Функции

    1277 IgorA 84
     
    1285 IgorA 85

    tl_data_init

    1277 IgorA 86

    Конструктор элемента, нужно вызывать перед использованием элемента для выделения памяти и других настроек.

    1285 IgorA 87

    tl_data_clear

    1283 IgorA 88

    Деструктор элемента, чистит память по указателям: data_info, data_nodes, data_img и data_img_sys. Если в программе используется несколько элементов с одинаковыми иконками, то указатели data_img и data_img_sys нужно приравнять к 0 в других элементах, так что-бы при вызове деструкторов не было повторного удаления одних и тех же иконок.

    1285 IgorA 89
     
    90

    tl_info_clear

    1283 IgorA 91

    Очистка списка от всех узлов. Это действие нельзя отменить функцией tl_info_undo.

    1285 IgorA 92
     
    93

    tl_key

    1277 IgorA 94

    Функция которую нужно вызывать при нажатии на клавиатуру.

    1285 IgorA 95
     
    96

    tl_mouse

    1277 IgorA 97

    Функция для событий от мыши.

    1285 IgorA 98
     
    99

    tl_draw

    1277 IgorA 100

    Полная перерисовка окна элемента.

    1285 IgorA 101
     
    102

    tl_info_undo

    1277 IgorA 103

    Отменяет добавление узлов. Действует только на весь узел целиком, не учитывая изменения внутри узлов. Т. е. нельзя отменить действия выполненные например функциями: tl_node_set_data, tl_node_lev_inc и им подобным.

    1283 IgorA 104
     
    1285 IgorA 105

    tl_info_redo

    106

    Повтор отмененных действий. Обратная функция по отношению к tl_info_undo.

    107
     
    108

    tl_node_add

    1283 IgorA 109

    Добавляет узел, в позицию указанную курсором. Пример добавления узла:

    110
      push dword tree1
    111
      push dword 0x10002
    112
      push dword data_buffer
    113
      call dword[tl_node_add]
    114

    где: tree1 - структура tree_list; 0x10002 - параметры узла (старшие байты 0x0001 - индекс иконки, отображаемой возле узла; меньший байт 0x02 - уровень вложености узла); data_buffer - указатель на дынные, добавляемые в узел.

    115
     
    1277 IgorA 116

    tl_node_set_data

    117

    Устанавливает новые данные (пользовательские и подпись) в узел под курсором.

    118

    tl_node_get_data

    119

    Берет указатель на данные (пользовательские и подпись) из узла под курсором.

    120

    tl_node_delete

    121

    Удаляет узел, но не окончательно, при необходимости узел можно вернуть функцией tl_info_undo.

    122

    tl_cur_beg

    123

    Ставит курсор в начало списка, перематывает скроллинг если нужно.

    124

    tl_cur_next

    125

    Переносит курсор ниже.

    126

    tl_cur_perv

    127

    Переносит курсор выше.

    128

    tl_node_close_open

    129

    Открывает или закрывает родительский узел. Если у узла нет дочерних элементов,

    130
     то ничего не делает. Автоматически перерисовывает окно если состояние узла изменилось.

    131

    tl_node_lev_inc

    132

    Добавить уровень узла под курсором. Делает узел дочерним.

    133

    tl_node_lev_dec

    134

    Уменьшает уровень узла под курсором. Делает узел родительским.

    1283 IgorA 135
     
    1285 IgorA 136

    tl_node_move_up

    137

    Перемещает вверх узел под курсором. Вместе с узлом двигается также и курсор. Пример использования функции:

    138
      push dword tree1
    139
      call dword[tl_node_move_up] ;переместить узел
    140

    где: tree1 - структура tree_list

    141
     
    142

    tl_node_move_down

    143

    Перемещает вниз узел под курсором. Вместе с узлом двигается также и курсор. Пример использования функции:

    144
      push dword tree1
    145
      call dword[tl_node_move_down] ;переместить узел
    146

    где: tree1 - структура tree_list

    147
     
    1277 IgorA 148

    tl_node_poi_get_info

    149

    Берет внутренний указатель на структуру описывающую узел.

    150

    tl_node_poi_get_next_info

    1283 IgorA 151

    Берет указатель на следующий элемент в цепи, без учета открытия/закрытия дочерних узлов.

    1277 IgorA 152

    tl_node_poi_get_data

    153

    Берет указатель на данные (пользовательские и подпись) из узла указанного в указателе.

    1283 IgorA 154
     
    1285 IgorA 155

    Функциями tl_node_poi_get_info, tl_node_poi_get_next_info и tl_node_poi_get_data можно считывать информацию о узлах элемента, при этом не меняя текущего положения курсора. Т. е. можно организовать доступ к даным элемента в "фоновом режиме".

    1283 IgorA 156
     
    1277 IgorA 157

    version_tree_list

    158

    Версия элемента

    159
     
    1283 IgorA 160

    Структура tree_list

    1277 IgorA 161
    struc tree_list info_size,info_max_count,style, img_cx,img_cy,\
    162
        col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\
    1283 IgorA 163
        el_focus, p_scrol,p_sb_draw,on_press {
    1277 IgorA 164
      .data_info  dd 0
    165
      .info_size  dw info_size
    166
      .info_max_count dd info_max_count
    167
      .style      dd style
    168
      .data_nodes dd 0
    169
      .data_img   dd 0
    170
      .img_cx     dw img_cx
    171
      .img_cy     dw img_cy
    172
      .data_img_sys dd 0
    173
      .ch_tim     dd 0
    174
      .ls_tim     dd 0
    175
      .tim_undo   dd 0
    176
      .cur_pos    dd 0
    177
      .col_bkg    dd col_bkg
    178
      .col_zag    dd col_zag
    179
      .col_txt    dd col_txt
    180
      .box_lert   dd box_l
    181
      .box_top    dd box_t
    182
      .box_width  dd box_w
    183
      .box_height dd box_h
    184
      .capt_cy    dw capt_cy
    185
      .info_capt_offs dd info_capt_offs
    186
      .el_focus   dd el_focus
    187
      .p_scrol    dd p_scrol
    188
      .p_sb_draw  dd p_sb_draw
    189
      .on_activate dd 0
    1283 IgorA 190
      .on_press    dd on_press
    1277 IgorA 191
    }
    1283 IgorA 192

    info_size - количество байт, которое будет выделено для каждого узла. Часть этой памяти пользователь может использовать для своих целей (регулируется через info_capt_offs) а остальная часть будет использована как подпись узла.

    193

    info_max_count - максимальное количество узлов, которые можно добавить в элемент.

    194

    style - стили элемента.

    195

    data_nodes - указатель на внутренние структуры узлов (TreeList).

    1277 IgorA 196

    data_img - указатель на изображения с иконками узлов.

    197

    data_img_sys - указатель на системные изображения (курсор, плюсики, линии, ... все кроме иконок узлов).

    1283 IgorA 198

    capt_cy - высота строки для подписи вверху элемента, если меньше 9 подпись не выводится.

    1277 IgorA 199

    p_scrol - указатель на структуру скроллинга, связанного с данным элементом.

    200

    p_sb_draw - указатель на функцию перерисовки вертикального скроллинга (scrollbar_ver_draw).

    1283 IgorA 201

    on_press - указатель на функцию, которая будет вызвана при нажитии [Enter]. Если указатель равен 0 то ничего не будет вызыватся.

    1277 IgorA 202
     
    1283 IgorA 203

    Пример создания структуры:

    204
    tree1 tree_list 24,500, tl_draw_par_line+tl_list_box_mode, 16,16,\
    205
        0x8080ff,0x0000ff,0xffffff, 10,35,200-16,285, 14,4,\
    206
        el_focus, wScr,scrollbar_ver_draw,fun_on_enter
    207
     
    208

    Стили элемента

    1277 IgorA 209

    tl_key_no_edit

    210

    Элемент нельзя редактировать на клавиатуре (изменять уровни, удалять). Ставьте этот стиль если нужно создать элемент только для просмотра данных.

    211

    tl_draw_par_line

    212

    Рисовать линии к родительскому узлу.

    213

    tl_list_box_mode

    214

    Стиль не отображает уровни (как в ListBox все узлы одного уровня).

    215
     
    1283 IgorA 216

    1285 IgorA 217

    Документация обновлялась последний раз 25.11.09.

    1277 IgorA 218
    219