trichview.support.examples
Example: dividing table into 2 tables |
Author |
Message |
Sergey Tkachenko |
Posted: 03/13/2004 23:32:52 function SplitTable(rve: TCustomRichViewEdit; table: TRVTableItemInfo; RowCountInFirstTable: Integer; PageBreak: Boolean): Boolean; var r, c, mr, mc: Integer; newtable: TRVTableItemInfo; Stream: TMemoryStream; begin Result := False; if RowCountInFirstTable>=table.Rows.Count then exit; for c := 0 to table.Rows[0].Count-1 do if table.Cells[RowCountInFirstTable, c]=nil then begin table.Rows.GetMainCell(RowCountInFirstTable, c, mr, mc); if mr<RowCountInFirstTable then exit; end; Stream := TMemoryStream.Create; table.SaveRowsToStream(Stream, RowCountInFirstTable, table.Rows.Count-RowCountInFirstTable); Stream.Position := 0; newtable := TRVTableItemInfo.CreateEx(0, 0, rve.RVData); newtable.LoadFromStream(Stream); if PageBreak then newtable.PageBreakBefore := True; Stream.Free; rve.BeginUndoGroup(rvutModifyItem); rve.SetUndoGroupMode(True); try table.DeleteRows(RowCountInFirstTable, table.Rows.Count-RowCountInFirstTable, True); rve.SetSelectionBounds(table.GetMyItemNo, 1, table.GetMyItemNo, 1); rve.InsertItem('', newtable); finally rve.SetUndoGroupMode(False); end; Result := True; end; Parameters: rve - editor containing table; this is usually a result of RichViewEdit1.GetCurrentItemEx; table - the table to split The table will be divided into two tables. The first resulting table will have row count = RowCountInFirstTable, the second table will have row count = table.Rows.Count-RowCountInFirstTable. If PageBreak parameter is True, a page break will be inserted between tables. |
Powered by ABC Amber Outlook Express Converter