Subversion Repositories Kolibri OS

Rev

Rev 1277 | 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
    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
  • 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
  • 69
  • tl_node_poi_get_info
  • 70
  • tl_node_poi_get_next_info
  • 71
  • tl_node_poi_get_data
  • 72
  • version_tree_list
  • 73
    1283 IgorA 74

    Структура tree_list

    75

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

    1277 IgorA 76
     
    1283 IgorA 77

    Введение

    1277 IgorA 78

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

    79

    80
     
    1283 IgorA 81

    Функции

    1277 IgorA 82
     
    83

    tl_data_init

    84

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

    85

    tl_data_clear

    1283 IgorA 86

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

    1277 IgorA 87

    tl_info_clear

    1283 IgorA 88

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

    1277 IgorA 89

    tl_key

    90

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

    91

    tl_mouse

    92

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

    93

    tl_draw

    94

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

    95

    tl_info_undo

    96

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

    97

    tl_info_redo

    98

    1283 IgorA 99
     
    1277 IgorA 100

    tl_node_add

    1283 IgorA 101

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

    102
      push dword tree1
    103
      push dword 0x10002
    104
      push dword data_buffer
    105
      call dword[tl_node_add]
    106

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

    107
     
    1277 IgorA 108

    tl_node_set_data

    109

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

    110

    tl_node_get_data

    111

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

    112

    tl_node_delete

    113

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

    114

    tl_cur_beg

    115

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

    116

    tl_cur_next

    117

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

    118

    tl_cur_perv

    119

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

    120

    tl_node_close_open

    121

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

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

    123

    tl_node_lev_inc

    124

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

    125

    tl_node_lev_dec

    126

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

    1283 IgorA 127
     
    1277 IgorA 128

    tl_node_poi_get_info

    129

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

    130

    tl_node_poi_get_next_info

    1283 IgorA 131

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

    1277 IgorA 132

    tl_node_poi_get_data

    133

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

    1283 IgorA 134
     
    135

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

    136
     
    1277 IgorA 137

    version_tree_list

    138

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

    139
     
    1283 IgorA 140

    Структура tree_list

    1277 IgorA 141
    struc tree_list info_size,info_max_count,style, img_cx,img_cy,\
    142
        col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\
    1283 IgorA 143
        el_focus, p_scrol,p_sb_draw,on_press {
    1277 IgorA 144
      .data_info  dd 0
    145
      .info_size  dw info_size
    146
      .info_max_count dd info_max_count
    147
      .style      dd style
    148
      .data_nodes dd 0
    149
      .data_img   dd 0
    150
      .img_cx     dw img_cx
    151
      .img_cy     dw img_cy
    152
      .data_img_sys dd 0
    153
      .ch_tim     dd 0
    154
      .ls_tim     dd 0
    155
      .tim_undo   dd 0
    156
      .cur_pos    dd 0
    157
      .col_bkg    dd col_bkg
    158
      .col_zag    dd col_zag
    159
      .col_txt    dd col_txt
    160
      .box_lert   dd box_l
    161
      .box_top    dd box_t
    162
      .box_width  dd box_w
    163
      .box_height dd box_h
    164
      .capt_cy    dw capt_cy
    165
      .info_capt_offs dd info_capt_offs
    166
      .el_focus   dd el_focus
    167
      .p_scrol    dd p_scrol
    168
      .p_sb_draw  dd p_sb_draw
    169
      .on_activate dd 0
    1283 IgorA 170
      .on_press    dd on_press
    1277 IgorA 171
    }
    1283 IgorA 172

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

    173

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

    174

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

    175

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

    1277 IgorA 176

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

    177

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

    1283 IgorA 178

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

    1277 IgorA 179

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

    180

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

    1283 IgorA 181

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

    1277 IgorA 182
     
    1283 IgorA 183

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

    184
    tree1 tree_list 24,500, tl_draw_par_line+tl_list_box_mode, 16,16,\
    185
        0x8080ff,0x0000ff,0xffffff, 10,35,200-16,285, 14,4,\
    186
        el_focus, wScr,scrollbar_ver_draw,fun_on_enter
    187
     
    188

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

    1277 IgorA 189

    tl_key_no_edit

    190

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

    191

    tl_draw_par_line

    192

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

    193

    tl_list_box_mode

    194

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

    195
     
    1283 IgorA 196

    197

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

    1277 IgorA 198
    199