Вверх ↑
Пакеты 
HiAsm4
Windows 
Компоненты 
Интерфейс 2 
Строковая таблица MT - MST_ColAction

MST_ColAction
Краткое описание
Универсальный клиентский модуль MTStrTbl для работы со столбцами таблицы
Параметры
  • Action - AddCols - добавляет столбцы, InsertCol - вставляет столбец, ReplaceCol - заменяет столбец, DeleteCol - удаляет столбец из таблицы, ClearCol - удаляет содержимое столбца, NameCol - устанавливает имя столбца, WidthCol - устанавливает ширину столбца, AlignTxtCol - назначает выравнивание текста в столбце, IdxIconCol - назначает столбцу иконку из списка иконок, AutoColWidth - автоматически подстраивает ширину столбца по длинам строк, GetColParam - получает параметры столбца
  • MinColWidth - Минимальная ширина столбца для метода AutoColWidth
  • MaxColWidth - Максимальная ширина столбца для метода AutoColWidth (ограничение ширины происходит при значениях больше 0)
  • Index - Индекс столбца по-умолчанию для режимов ClearCol, AutoColWidth, GetColParam. Для остальных режимов индекс подается в потоке
  • MSTControl - Управление элементом MTStrTbl
  • Методы
  • doColAction - Выполняет различные действия над столбцами таблицы согласно параметра Action
  • События
  • onChange - Событие происходит всякий раз при изменении списка строк таблицы
  • onChangeColLst - Событие происходит всякий раз при изменении списка столбцов таблицы
  • onResult - Выдаёт результат различных операций над столбцами в поток
  • Свойства
  • CountCol - Содержит количество столбцов
  • EndIdxCol - Содержит индекс последнего столбца в таблице
  • Данные
  • Index - Индекс столбца для режимов ClearCol, AutoColWidth, GetColParam. Для остальных режимов индекс подается в потоке
  • Аргументы
  • Action AddCols - [FormatStrCol0][FormatStrCol1] ... [FormatStrColN]
    InsertCol - [IndexCol][FormatStrCol0][FormatStrCol1] ... [FormatStrColN]
    ReplaceCol - [IndexCol][FormatStrCol0][FormatStrCol1] ... [FormatStrColN]
    DeleteCol - IndexCol
    ClearCol - IndexCol
    NameCol - [IndexCol][NameCol]
    WidthCol - [IndexCol][WidthCol]
    AlignTxtCol - [IndexCol][AlignTxtCol (0 - taLeft; 1 - taRight; 2 - taCenter)]
    IdxIconCol - [IndexCol][IndexIcon]
    AutoColWidth - IndexCol (-1 - AllColumns)
    GetColParam - IndexCol

    где: FormatStrCol - NameCol(ColDelimiter)WidthCol(ColDelimiter)IndexIcon(ColDelimiter)AlignTxtCol (0 - taLeft; 1 - taRight; 2 - taCenter). Примечание: экранирующие символы "(" и ")" в конечной строке применяться не должны, например: Col1=100==2 при ColDelimiter = "="

  • onResult GetColParam - [IndexCol][NameCol][WidthCol][IdxIconCol][AlignTxtCol]
  • Примеры
      Пример работы со столбцами (по индексу)
    
    Add(MainForm,3063237,140,70)
    {
    Width=398
    Height=456
    link(onCreate,1976442:doEnum,[])
    }
    Add(MTStrTbl,15043066,140,119)
    {
    Width=390
    Height=200
    Name="MTStrTbl"
    Columns=#3:Имя|7:Фамилия|8:Отчество|
    CheckBoxes=0
    MultiSelect=0
    }
    Add(StrList,4383086,182,14)
    {
    Strings=#20:Иван;Иванов;Иванович|24:Андрей;Андреев;Андреевич|33:Владимир;Владимиров;Владимироваич|26:Михаил;Михаилов;Михайлович|
    }
    Add(ArrayEnum,1976442,196,84)
    {
    link(onItem,16356153:doMT,[])
    link(Array,4383086:Array,[])
    }
    Add(MST_RowAction,15395190,294,77)
    {
    MSTControl="MTStrTbl"
    }
    Add(MT_String,16356153,245,77)
    {
    link(onResult,15395190:doRowAction,[])
    }
    Add(PointHint,5981647,189,133)
    {
    Info=#35:Пример добавления столбца в таблицу|
    Transparent=0
    VAlign=0
    Width=204
    Height=179
    }
    Add(MST_ColAction,11720551,343,252)
    {
    MSTControl="MTStrTbl"
    }
    Add(Label,13360583,280,168)
    {
    Top=200
    Width=98
    Height=17
    Caption="Добавить столбец"
    }
    Add(Edit,12372284,280,210)
    {
    Left=95
    Top=200
    Width=100
    Text="Инициалы"
    }
    Add(Button,5024875,217,252)
    {
    Left=195
    Top=200
    Width=195
    TabOrder=-1
    Caption="Добавить"
    link(onClick,10362313:doData,[])
    }
    Add(DoData,10362313,280,252)
    {
    link(onEventData,11720551:doColAction,[])
    link(Data,12372284:Text,[])
    }
    Add(Label,2042849,483,161)
    {
    Top=225
    Width=153
    Height=17
    Caption="Удалить столбец с индексом"
    }
    Add(Edit,5551791,483,203)
    {
    Left=155
    Top=225
    Width=95
    Text="3"
    }
    Add(Button,11342427,420,252)
    {
    Left=255
    Top=225
    Width=135
    TabOrder=-1
    Caption="Удалить"
    link(onClick,4744878:doData,[])
    }
    Add(MST_ColAction,7252200,553,252)
    {
    Action=3
    MSTControl="MTStrTbl"
    }
    Add(DoData,4744878,483,252)
    {
    link(onEventData,7252200:doColAction,[])
    link(Data,5551791:Text,[])
    }
    Add(PointHint,12070046,406,133)
    {
    Info=#34:Пример удаления столбца из таблицы|
    Transparent=0
    VAlign=0
    Width=197
    Height=179
    }
    Add(MST_ColAction,4239283,721,252)
    {
    Action=1
    MSTControl="MTStrTbl"
    }
    Add(Label,1247760,721,161)
    {
    Top=250
    Width=95
    Height=17
    Caption="Вставить столбец"
    }
    Add(Edit,3904680,721,203)
    {
    Left=95
    Top=250
    Width=75
    Text="Инициалы"
    }
    Add(Button,14891891,637,252)
    {
    Left=255
    Top=250
    Width=135
    TabOrder=-1
    Caption="Вставить"
    link(onClick,8211085:doAdd,[])
    }
    Add(Label,13338255,679,161)
    {
    Left=175
    Top=250
    Width=49
    Height=17
    Caption="в индекс"
    }
    Add(Edit,5618638,679,203)
    {
    Left=225
    Top=250
    Width=25
    Text="2"
    }
    Add(MT_AddData,8211085,679,252)
    {
    link(onAdd,4239283:doColAction,[])
    link(Data1,5618638:Text,[])
    link(Data2,3904680:Text,[(692,244)(727,244)])
    }
    Add(PointHint,16628444,616,133)
    {
    Info=#43:Пример вставки столбца в таблицу по индексу|
    Transparent=0
    VAlign=0
    Width=197
    Height=179
    }
    Add(MST_ColAction,15242840,511,441)
    {
    Action=2
    MSTControl="MTStrTbl"
    }
    Add(Label,540950,511,350)
    {
    Top=275
    Width=142
    Height=17
    Caption="Заменить столбец строкой"
    }
    Add(Edit,8873151,511,392)
    {
    Left=145
    Top=275
    Width=75
    Text="Инициалы"
    }
    Add(Button,3730642,427,441)
    {
    Left=305
    Top=275
    Width=85
    Caption="Заменить"
    link(onClick,2342730:doAdd,[])
    }
    Add(Label,1495555,469,350)
    {
    Left=225
    Top=275
    Width=49
    Height=17
    Caption="в индекс"
    }
    Add(Edit,6867995,469,392)
    {
    Left=275
    Top=275
    Width=25
    Text="2"
    }
    Add(MT_AddData,2342730,469,441)
    {
    link(onAdd,15242840:doColAction,[])
    link(Data1,6867995:Text,[])
    link(Data2,8873151:Text,[(482,433)(517,433)])
    }
    Add(PointHint,11313848,406,322)
    {
    Info=#43:Пример замены столбца из таблицу по индексу|
    Transparent=0
    VAlign=0
    Width=197
    Height=179
    }
    Add(Button,10910312,651,441)
    {
    Left=305
    Top=300
    Width=85
    TabOrder=-1
    Caption="Очистить"
    link(onClick,12296091:doData,[])
    }
    Add(Edit,3105683,700,392)
    {
    Left=275
    Top=300
    Width=25
    Text="0"
    }
    Add(MST_ColAction,11675659,749,441)
    {
    Action=4
    MSTControl="MTStrTbl"
    }
    Add(DoData,12296091,700,441)
    {
    link(onEventData,11675659:doColAction,[])
    link(Data,3105683:Text,[])
    }
    Add(PointHint,1305452,616,322)
    {
    Info=#45:Пример очистки содержимого столбца по индексу|
    Transparent=0
    VAlign=0
    Width=197
    Height=179
    }
    Add(Edit,9716884,336,385)
    {
    Left=175
    Top=325
    Width=95
    Text="Инициалы"
    }
    Add(Edit,1747138,336,553)
    {
    Left=175
    Top=350
    Width=95
    Text="120"
    }
    Add(ComboBox,13837741,511,539)
    {
    Left=175
    Top=375
    Width=95
    Height=21
    Strings=#5:Влево|6:Вправо|9:По центру|
    Point(Index)
    }
    Add(Button,4730061,252,441)
    {
    Left=305
    Top=325
    Width=85
    TabOrder=-1
    Caption="Применить"
    link(onClick,2742904:doAdd,[])
    }
    Add(Edit,8440462,294,385)
    {
    Left=275
    Top=325
    Width=25
    Text="0"
    }
    Add(Button,6541831,252,609)
    {
    Left=305
    Top=350
    Width=85
    TabOrder=-1
    Caption="Применить"
    link(onClick,9173313:doAdd,[])
    }
    Add(Edit,8357097,294,553)
    {
    Left=275
    Top=350
    Width=25
    Text="1"
    }
    Add(Button,8443625,427,609)
    {
    Left=305
    Top=375
    Width=85
    TabOrder=-1
    Caption="Применить"
    link(onClick,5015443:doAdd,[])
    }
    Add(Edit,9560777,469,553)
    {
    Left=275
    Top=375
    Width=25
    Text="2"
    }
    Add(Label,12763348,427,553)
    {
    Top=375
    Width=104
    Height=17
    Caption="Выравнять столбец"
    }
    Add(MST_ColAction,3282705,336,441)
    {
    Action=5
    MSTControl="MTStrTbl"
    }
    Add(MT_AddData,2742904,294,441)
    {
    link(onAdd,3282705:doColAction,[])
    link(Data1,8440462:Text,[])
    link(Data2,9716884:Text,[(307,429)(342,429)])
    }
    Add(MST_ColAction,12654522,336,609)
    {
    Action=6
    MSTControl="MTStrTbl"
    }
    Add(MT_AddData,9173313,294,609)
    {
    link(onAdd,12654522:doColAction,[])
    link(Data1,8357097:Text,[])
    link(Data2,1747138:Text,[(307,597)(342,597)])
    }
    Add(MST_ColAction,15528921,511,609)
    {
    Action=7
    MSTControl="MTStrTbl"
    }
    Add(MT_AddData,5015443,469,609)
    {
    link(onAdd,15528921:doColAction,[])
    link(Data1,9560777:Text,[])
    link(Data2,13837741:Index,[(482,597)(531,597)])
    }
    Add(Button,13427720,651,609)
    {
    Left=275
    Top=400
    Width=115
    TabOrder=-1
    Caption="Подогнать ширину"
    link(onClick,16741737:doData,[])
    }
    Add(Edit,15491958,700,553)
    {
    Left=245
    Top=400
    Width=25
    Text="-1"
    }
    Add(MST_ColAction,2580752,749,609)
    {
    Action=9
    MSTControl="MTStrTbl"
    }
    Add(DoData,16741737,700,609)
    {
    link(onEventData,2580752:doColAction,[])
    link(Data,15491958:Text,[])
    }
    Add(PointHint,188544,196,322)
    {
    Info=#40:Пример переименования столбца по индексу|
    Transparent=0
    VAlign=0
    Width=197
    Height=179
    }
    Add(PointHint,4625418,196,511)
    {
    Info=#42:Пример установки ширины столбца по индексу|
    Transparent=0
    VAlign=0
    Width=197
    Height=179
    }
    Add(PointHint,6904230,406,511)
    {
    Info=#50:Пример установки выравнивания в столбце по индексу|
    Transparent=0
    VAlign=0
    Width=197
    Height=179
    }
    Add(PointHint,6218739,616,511)
    {
    Info=#45:Пример автоподгонки ширины столбца по индексу|
    Transparent=0
    VAlign=0
    Width=197
    Height=179
    }
    Add(Label,9178825,651,392)
    {
    Top=300
    Width=95
    Height=17
    Caption="Очистить столбец"
    }
    Add(Label,8161691,252,385)
    {
    Top=325
    Width=129
    Height=17
    Caption="Переименовать столбец"
    }
    Add(Label,8173290,252,553)
    {
    Top=350
    Width=148
    Height=17
    Caption="Установить ширину столбца"
    }
    Add(Label,5852536,651,553)
    {
    Top=400
    Width=162
    Height=17
    Caption="Автоподгонка ширины столбца"
    }

      Пример организации "резиновых" столбцов
    
    Add(MainForm,13509382,203,252)
    {
    Point(onResize)
    link(onCreate,709485:doEvent1,[])
    link(onResize,709485:doEvent2,[])
    }
    Add(VBoxLayout,10487328,203,294)
    {
    Name="vert"
    Space=5
    Padding=5
    WidthScale=100
    }
    Add(MTStrTbl,13116961,518,189)
    {
    Width=392
    Height=71
    Name="tab"
    Layout="vert"
    WidthScale=100
    HeightScale=100
    Columns=#8:filename|5:?????|4:????|5:?????|10:??????(??)|
    FlatScroll=1
    Point(Width)
    Point(onResize)
    }
    Add(Hub,709485,252,266)
    {
    InCount=2
    link(onEvent1,5246730:doClear,[(412,272)(412,209)])
    link(onEvent2,13725029:doEnum,[(284,279)(284,202)])
    }
    Add(MathParse,3218130,476,294)
    {
    DataCount=3
    MathStr="%3 * Round((%2 / (%1 + 25)), 0.01)"
    ResultType=0
    link(onResult,2570595:doAdd,[])
    link(X1,6210514:Var2,[])
    link(X2,13116961:Width,[(489,264)(552,264)])
    }
    Add(MST_ColAction,14830025,574,294)
    {
    Action=6
    MSTControl="tab"
    }
    Add(MT_Add,2570595,525,294)
    {
    InputMT=1
    link(onAdd,14830025:doColAction,[])
    link(Data,16645985:Index,[(531,282)(461,282)(461,338)(391,338)])
    }
    Add(Math,5246730,476,196)
    {
    ResultType=0
    Point(doClear)
    link(Op1,6210514:Var1,[(482,184)(470,184)(470,240)])
    }
    Add(GetDataEx,6210514,476,235)
    {
    link(Data,5246730:Result,[])
    }
    Add(MST_ArrayCols,11414318,301,133)
    {
    MSTControl="tab"
    }
    Add(ArrayEnum,13725029,301,196)
    {
    link(onItem,5814420:doSplit,[])
    link(onEndEnum,16645985:doEnum,[(355,209)(355,300)])
    link(Array,10600034:Var2,[])
    }
    Add(MultiStrData,5814420,364,196)
    {
    Char="="
    From=1
    Count=1
    link(onPart1,5246730:doOperation,[])
    }
    Add(ArrayEnum,16645985,378,294)
    {
    link(onItem,654294:doSplit,[])
    link(Array,10600034:Var3,[(384,180)])
    }
    Add(MultiStrData,654294,427,294)
    {
    Char="="
    From=1
    Count=1
    link(onPart1,3218130:doCalc,[])
    }
    Add(GetDataEx,10600034,301,175)
    {
    link(Data,11414318:ColumnArray,[])
    }

    Примечание
    Внимание! Метод AutoColWidth гарантировано работает только для стилей таблицы lvsDetail и lvsDetailNoHeader, для остальных стилей возможны неадекватные проявления работы этого метода
    Замечания
    Обновление элемента: [svn]MST_ColAction.pas[/svn]
    BB-code статьи для вставки
    Всего комментариев: 0
    (комментарии к статье еще не добавлены)
    Комментарий
    ...