RichEdit поддерживает вставку изображений, на рисунках можно организовать нередактируемые блоки, с гиперссылками немного сложнее, поскольку без заморочек он может открыть лишь стандартные (типа httр:\\..), есть другие, более богатые в плане возможностей редакторы, а может лучше подобный функционал воссоздать на браузерной подложке. Ну или вот частичный вариант на риче, всё что успел найти
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
i: integer;
cRect: TRect;
bm: TBitmap;
Format: CHARFORMAT2;
begin
with RichEdit1 do
begin
SelStart:= Length(Text);
Perform(EM_SCROLLCARET, 0, 0);
FillChar(Format, SizeOf(Format), 0);
with Format do
begin
cbSize:= SizeOf(Format);
dwMask:= CFM_BACKCOLOR;
crBackColor:= clFuchsia;
Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format));
end;
SelAttributes.Style:= [fsBold];
s:= FormatDateTime('hh:nn:ss', Now);
Windows.GetClientRect(Handle, cRect);
bm:= TBitmap.Create;
bm.Width:= cRect.Right;
bm.Height:= cRect.Bottom;
bm.Canvas.Font:= Font;
while bm.Canvas.TextWidth(s) < CRect.Right do s:= s + ' ';
Lines.Add(s);
s:= Edit1.Text;
while bm.Canvas.TextWidth(s) < CRect.Right do s:= s + ' ';
bm.Free;
with Format do
begin
cbSize:= SizeOf(Format);
dwMask:= CFM_BACKCOLOR or CFM_LINK or CFM_PROTECTED or CFM_UNDERLINE or CFM_COLOR;
crBackColor:= clFuchsia;
Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format));
end;
SelAttributes.Style:= [fsBold];
Lines.Add(s);
Lines.Add('');
Lines.Add(Memo1.Text);
end;