[Demo] Replacing controls with text
Posted: Fri Aug 11, 2006 7:17 pm
Shows how to change controls to their text valueSupport forums for TRichView, ScaleRichView, Report Workshop and RVMedia components
https://trichedit.com/forums/
Code: Select all
{ Inserting graphic item in RVData at the ItemNo position }
{ some undocumented functions are used }
procedure InsertGraphicItem(RVData: TCustomRVData; ItemNo: Integer;
ItemName: TRVRawByteString; gr: TGraphic; VAlign: TRVVAlign;
PageBreak, NewLine, NewPara: Boolean);
var Item: TRVGraphicItemInfo;
begin
Item := TRVGraphicItemInfo.CreateEx(RVData, gr, VAlign);
Item.SameAsPrev := not NewPara;
if NewLine and not NewPara then
Item.BR := True;
if PageBreak then
Item.PageBreakBefore := True;
Item.Inserting(RVData, ItemName, False);
RVData.Items.InsertObject(ItemNo, ItemName, Item);
Item.Inserted(RVData, ItemNo);
end;
Code: Select all
{ Changes all controls in RVData (and its sub-data) to their graphic
representations }
procedure ControlsToGraphics(RVData: TCustomRVData);
var i,r,c: Integer;
Control: TControl;
ControlName: TRVAnsiString;
ControlTag: TRVTag;
ControlVAlign: TRVVAlign;
table: TRVTableItemInfo;
PageBreak, NewLine, NewPara: Boolean;
Graphic: TBitmap;
begin
for i := 0 to RVData.ItemCount-1 do
case RVData.GetItemStyle(i) of
rvsTable:
begin
table := TRVTableItemInfo(RVData.GetItem(i));
for r := 0 to table.Rows.Count-1 do
for c := 0 to table.Rows[r].Count-1 do
if table.Cells[r,c]<>nil then
ControlsToGraphics(table.Cells[r,c].GetRVData);
end;
rvsComponent:
begin
RVData.GetControlInfo(i, ControlName, Control, ControlVAlign, ControlTag);
Graphic := GetControlGraphic(Control);
PageBreak := RVData.PageBreaksBeforeItems[i];
NewLine := RVData.IsFromNewLine(i);
NewPara := RVData.IsParaStart(i);
RVData.DeleteItems(i, 1);
// you can copy tag as well
InsertGraphicItem(RVData, i, ControlName, Graphic, ControlVAlign,
PageBreak, NewLine, NewPara);
end;
end;
end;