В TRichView, таблицы достаточно сложный объект. Поэтому пару тройку постов наверное сделаю, для того, чтобы разобраться как там всё устроено. Пока что научился вставлять таблицу таким образом.
В принципе, в TrichView Actions есть уже функционал для вставки таблиц, но если использовать его в чистом виде, то получается вот так…
На мой взгляд, не очень то симпатично… Поэтому я разобрался с программным способом вставки таблиц. Вот что у меня получилось…
Код вставки таблицы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
procedure TMainForm.btnTableClick(Sender: TObject); var table:TRVTableItemInfo; begin table := TRVTableItemInfo.CreateEx(5,5,RichViewEdit1.RVData); //Настройка таблицы table.BorderWidth:=0; table.BorderColor:=clBlack; table.BorderStyle:=rvtbColor; // Настройка ячеек таблицы table.CellBorderWidth:=1; table.CellBorderColor:=clBlack; table.CellBorderStyle:=rvtbColor; table.CellVSpacing:=-1; table.CellHSpacing:=-1; //Непосредственно вставка таблицы richviewEdit1.Insertitem('TableName', table); richviewEdit1.ReformatAll; // end; |
Особенности
В TrichView модель таблиц построена по модели HTML, согласно справке. Это, в частности влияет на то, что рамки есть как у ячеек так и у непосредственно таблицы, и для того, чтобы таблица у нас не выглядела так…
Мы и делали отрицательные отступы в коде, а также меняли стиль ячеек и таблицы в целом на rvtbColor. То есть, конкретно, вот эта часть кода…
1 2 3 4 5 6 |
... table.CellBorderStyle:=rvtbColor; table.CellVSpacing:=-1; table.CellHSpacing:=-1; ... |
Об этом более подробно рассказано на официальном сайте TRichView.
Вторая особенность в том, что таблица, по умолчанию вставляется на всю ширину документа. Это можно поправить (более подробно в документации), но я не останавливаюсь на этом.