Вверх ↑
Ответов: 2188
Рейтинг: 673
#1: 2019-05-24 17:04:23 ЛС | профиль | цитата
nesco писал(а):
Ты имеешь в виду контекст?
Да, сейчас набросаю пример как мне это видится.
nesco писал(а):
А высота строки вроде как не изменяется так просто
Останется добавить высоту шрифта для заголовка, насколько помню это не так сложно. И выставляя высоту шрифта для таблицы (высота заголовка не увеличится) увеличивается высота строки, рисуй что хочешь. Но это так в уме, сейчас не нужно этим заморачиваться.

Вот смотрите есть список строк и к нему (и не только к нему) подключается менеджер отрисовки.
Список строк с менеджером отрисовки

Add(MainForm,2953706,511,364)
{
Width=524
Position=1
}
Add(ListBox,11760669,511,420)
{
Left=85
Top=35
Width=365
Height=185
Strings=#4:Кино|4:Вино|6:Домино|
BoxDrawManager="MyDraw"
}
Add(BoxDrawManager,293041,574,364)
{
Name="MyDraw"
StyleBack=1
ImageShift=12
GutterShift=12
GutterWidth=12
}
Все замечательно, дополнительные возможности отрисовки, много свойств. А теперь представьте что вместо элемента менеджер отрисовки был элемент контейнер в котором можно самостоятельно отрисовать как весь элемент так и его части.
Примерно так это должно выглядеть

Add(MainForm,2953706,511,266)
{
Width=594
Height=476
Position=1
}
Add(MTStrTbl,10355073,658,441)
{
Left=5
Top=5
Width=575
Height=430
Font=[MS Sans Serif,33,0,0,1]
Columns=#4:Кино|4:Вино|6:Домино|
Grid=0
}
Add(MultiElementEx,10219707,658,357)
{
}
BEGIN_SDK
Add(EditMultiEx,14675531,21,21)
{
Width=1000
Height=620
}
Add(Shape,3689091,112,210)
{
Width=53
Height=67
Color=-16777201
}
Add(HubEx,7371451,161,210)
{
link(onEvent,15631061:doWork,[])
}
Add(Img_Gradient,12113180,728,210)
{
}
Add(GetDataEx,7094100,112,273)
{
}
Add(If_else,12640788,602,420)
{
Op2=String(Виноград)
link(onTrue,4925789:doDraw,[])
link(Op1,6869198:getVar,[])
AddHint(8,-29,73,13,Op2)
}
Add(LineBreakEx,12217864,112,434)
{
Caption="text"
Type=3
link(_Data,7094100:Var2,[])
}
Add(LineBreakEx,6869198,602,371)
{
Caption="text"
Type=2
}
Add(LineBreakEx,1577409,119,420)
{
Caption="row"
Type=3
link(_Data,6243811:Var2,[])
}
Add(GetDataEx,6243811,119,273)
{
}
Add(GetDataEx,10061695,126,273)
{
}
Add(LineBreakEx,16371791,126,406)
{
Caption="col"
Type=3
link(_Data,10061695:Var2,[])
}
Add(HubEx,9523253,161,217)
{
link(onEvent,2105692:doWork,[])
}
Add(Check,15631061,315,210)
{
Caption="фон всей таблицы"
link(onEvent,12113180:doDraw,[])
}
Add(Check,4558762,476,420)
{
Caption="отрисовка ячейки "
link(onEvent,12640788:doCompare,[])
}
Add(LineBreakEx,4910682,133,392)
{
Caption="x"
Type=3
link(_Data,8466411:Var2,[])
}
Add(LineBreakEx,14446683,140,378)
{
Caption="y"
Type=3
link(_Data,2390818:Var2,[])
}
Add(LineBreakEx,9540935,147,364)
{
Caption="width"
Type=3
link(_Data,1661398:Var2,[])
}
Add(LineBreakEx,7136343,154,350)
{
Caption="hieght"
Type=3
link(_Data,12862610:Var2,[])
}
Add(GetDataEx,8466411,133,273)
{
}
Add(GetDataEx,2390818,140,273)
{
}
Add(GetDataEx,1661398,147,273)
{
}
Add(GetDataEx,12862610,154,273)
{
}
Add(IndexToChanel,426047,427,406)
{
Count=3
Point(Index)
link(onEvent3,4558762:doWork,[])
link(Index,10877107:getVar,[])
}
Add(LineBreakEx,10877107,427,378)
{
Caption="col"
Type=2
}
Add(Img_Text,4925789,714,420)
{
Font=[MS Sans Serif,10,1,255,1]
}
Add(InfoTip,2724382,385,336)
{
Info=#63:Во второй колокне выделяем слово виноград красным жирным цветом|
Width=421
Height=137
}
Add(Check,2105692,182,217)
{
Caption="отрисовка ячейки "
link(onEvent,426047:doEvent,[(307,223)(307,412)])
}
END_SDK

При таком подходе большая часть "хотелок" закроется. И тут не только рюшечки, но и реальное удобство сделать таблицу более информативной.

Как писал выше Netspirit выделить нужную строку при таком подходе, вообще не проблема.
карма: 10

0
Редактировалось 7 раз(а), последний 2019-05-24 17:23:13