Рассмотрим на примере TWindowsMediaPlayer. Тут всё достаточно просто. Сохранять будем в поток, в дальнейшем этот поток можно передать в Blobstream и далее в базу,
Для корректного чтения из потока нужно выполнить процедуру RegisterClass, чтобы TRichView понимал что это такое.
В глобальных переменных объявим
1 |
ms:TMemoryStream |
В OnCreate
1 |
ms:=TMemoryStream.create; |
Создание и сохранение контрола в поток
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
procedure TMainForm.bTestClick(Sender: TObject); var wmp: TWindowsMediaPlayer; begin wmp:=TWindowsMediaPlayer.Create(Self); RichViewEdit1.InsertControl('',wmp,rvvaBaseline); ms.Clear; ms.Position:=0; RichViewEdit1.SaveRVFToStream(ms,false); ms.Position:=0; |
Чтение из потока и загрузка в документ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
procedure TMainForm.BitBtn20Click(Sender: TObject); begin RegisterClass(TAudioPanelWMP); RichViewEdit1.ClearAll; ms.Position:=0; RichViewEdit1.LoadFromStream(ms,rvynaNo ); RichViewEdit1.ReformatAll; end; |