Subversion Repositories Kolibri OS

Rev

Rev 1285 | 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
  • 1303 IgorA 74
  • tl_save_mem
  • 75
  • tl_load_mem
  • 1277 IgorA 76
  • version_tree_list
  • 77
    1283 IgorA 78

    Структура tree_list

    79

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

    1277 IgorA 80
     
    1285 IgorA 81

    Введение

    1277 IgorA 82

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

    83

    84
     
    1283 IgorA 85

    Функции

    1277 IgorA 86
     
    1285 IgorA 87

    tl_data_init

    1277 IgorA 88

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

    1285 IgorA 89

    tl_data_clear

    1283 IgorA 90

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

    1285 IgorA 91
     
    92

    tl_info_clear

    1283 IgorA 93

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

    1285 IgorA 94
     
    95

    tl_key

    1303 IgorA 96

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

    97
     Кнопки, которые не доступны если есть стиль tl_key_no_edit: [Enter], [Delete], [], [].
    98
     Всегда доступны: [], [], [Page Up], [Page Dn], [Space].
    99
     Функция проверяет включен ли режим scan кодов, и в случае необходимости сама преобразует коды.

    1285 IgorA 100
     
    101

    tl_mouse

    1277 IgorA 102

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

    1285 IgorA 103
     
    104

    tl_draw

    1277 IgorA 105

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

    1285 IgorA 106
     
    107

    tl_info_undo

    1277 IgorA 108

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

    1283 IgorA 109
     
    1285 IgorA 110

    tl_info_redo

    111

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

    112
     
    113

    tl_node_add

    1283 IgorA 114

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

    115
      push dword tree1
    116
      push dword 0x10002
    117
      push dword data_buffer
    118
      call dword[tl_node_add]
    1303 IgorA 119

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

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

    1283 IgorA 121
     
    1277 IgorA 122

    tl_node_set_data

    123

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

    124

    tl_node_get_data

    125

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

    126

    tl_node_delete

    127

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

    128

    tl_cur_beg

    129

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

    130

    tl_cur_next

    131

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

    132

    tl_cur_perv

    133

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

    134

    tl_node_close_open

    135

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

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

    137

    tl_node_lev_inc

    138

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

    139

    tl_node_lev_dec

    140

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

    1283 IgorA 141
     
    1285 IgorA 142

    tl_node_move_up

    143

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

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

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

    147
     
    148

    tl_node_move_down

    149

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

    150
      push dword tree1
    151
      call dword[tl_node_move_down] ;переместить узел
    152

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

    153
     
    1277 IgorA 154

    tl_node_poi_get_info

    155

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

    156

    tl_node_poi_get_next_info

    1283 IgorA 157

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

    1277 IgorA 158

    tl_node_poi_get_data

    159

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

    1283 IgorA 160
     
    1285 IgorA 161

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

    1283 IgorA 162
     
    1303 IgorA 163

    tl_save_mem

    164

    Сохраняет информацию об узлах элемента в память. Пример использования функции:

    165
      MEM_SIZE equ 5000
    166
      node_data rb MEM_SIZE
    167
    .........
    168
      push dword tree1
    169
      push dword 0
    170
      push dword node_data
    171
      push dword MEM_SIZE
    172
      call dword[tl_save_mem]
    173
      pop eax
    174

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

    175
     0 - опция сохранения в начало блока памяти (если = 1, то добавляет элемент после других сохраненных ранее);
    176
     node_data - указатель на блок памяти;
    177
     MEM_SIZE - размер блока памяти для сохранения.
    178
    В регистр eax пишется значение 0 или записываются коды ошибок сохранения.

    179
     
    180

    tl_load_mem

    181

    Загружает информацию об узлах элемента из памяти. Пример использования функции:

    182
      MEM_SIZE equ 5000
    183
      node_data rb MEM_SIZE
    184
    .........
    185
      push dword tree1
    186
      push dword 0
    187
      push dword node_data
    188
      push dword MEM_SIZE
    189
      call dword[tl_load_mem]
    190
      pop eax
    191

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

    192
     0 - индекс считываемого элемента;
    193
     node_data - указатель на блок памяти;
    194
     MEM_SIZE - размер блока памяти для сохранения.
    195
    В регистр eax пишется значение 0 или записываются коды ошибок считывания.

    196
     
    1277 IgorA 197

    version_tree_list

    198

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

    199
     
    1283 IgorA 200

    Структура tree_list

    1277 IgorA 201
    struc tree_list info_size,info_max_count,style, img_cx,img_cy,\
    202
        col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\
    1303 IgorA 203
        info_capt_len,el_focus, p_scrol,p_sb_draw,on_press {
    1277 IgorA 204
      .data_info  dd 0
    205
      .info_size  dw info_size
    206
      .info_max_count dd info_max_count
    207
      .style      dd style
    208
      .data_nodes dd 0
    209
      .data_img   dd 0
    210
      .img_cx     dw img_cx
    211
      .img_cy     dw img_cy
    212
      .data_img_sys dd 0
    213
      .ch_tim     dd 0
    214
      .ls_tim     dd 0
    215
      .tim_undo   dd 0
    216
      .cur_pos    dd 0
    217
      .col_bkg    dd col_bkg
    218
      .col_zag    dd col_zag
    219
      .col_txt    dd col_txt
    1303 IgorA 220
      .box_left   dd box_l
    1277 IgorA 221
      .box_top    dd box_t
    222
      .box_width  dd box_w
    223
      .box_height dd box_h
    224
      .capt_cy    dw capt_cy
    1303 IgorA 225
      .info_capt_offs dw info_capt_offs
    226
      .info_capt_len  dw info_capt_len
    227
      .el_focus    dd el_focus
    228
      .p_scrol     dd p_scrol
    229
      .p_sb_draw   dd p_sb_draw
    1277 IgorA 230
      .on_activate dd 0
    1283 IgorA 231
      .on_press    dd on_press
    1277 IgorA 232
    }
    1303 IgorA 233

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

    1283 IgorA 234

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

    235

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

    236

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

    1277 IgorA 237

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

    238

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

    1283 IgorA 239

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

    1303 IgorA 240

    info_capt_len - длинна текста для подписи. Если равно 0, то длинна считается так: info_size - info_capt_offs.

    1277 IgorA 241

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

    242

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

    1303 IgorA 243

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

    1277 IgorA 244
     
    1283 IgorA 245

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

    246
    tree1 tree_list 24,500, tl_draw_par_line+tl_list_box_mode, 16,16,\
    247
        0x8080ff,0x0000ff,0xffffff, 10,35,200-16,285, 14,4,\
    1303 IgorA 248
        0,el_focus, wScr,scrollbar_ver_draw,fun_on_enter
    1283 IgorA 249
     
    250

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

    1277 IgorA 251

    tl_key_no_edit

    252

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

    253

    tl_draw_par_line

    254

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

    255

    tl_list_box_mode

    256

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

    257
     
    1283 IgorA 258

    1303 IgorA 259

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

    1277 IgorA 260
    261