У меня нет компонента TSynEdit, поэтому не знаю, какие у него методы ответственны за сохранение содержимого в файл, поэтому покажу один из способов на примере обычного TMemo.
Создайте в разделе Public главной формы переменную, в которой будет храниться путь к временному файлу:
Код:
.....
public
{ Public declarations }
TmpFilePath: string;
end;
.....
При создании формы (в обработчике события OnCreate) напишите, например, так:
Код:
procedure TForm1.FormCreate(Sender: TObject);
const
TEMP_EV = '%TEMP%';
var
TempDir: PChar;
begin
GetMem(TempDir, MAX_PATH);
try
ExpandEnvironmentStrings(@TEMP_EV[1], TempDir, MAX_PATH);
TmpFilePath := StrPas(TempDir) + '\~$tmpfile.htm';
finally
FreeMem(TempDir, MAX_PATH);
end;
end;
Когда вызывается предварительный просмотр, например, при щелчке на соответствующую кнопку, сохраняем содержимое Memo (SynEdit) по адресу, записанному в переменной TmpFilePath, вызываем метод Navigate объекта TWebBrowser на второй форме, после чего показываем саму эту вторую форму Form2.
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.SaveToFile(TmpFilePath);
Form2.WebBrowser1.Navigate(TmpFilePath);
Form2.Show;
end;
А в модуле второй формы прописываем реакцию на событие OnClose формы.
Код:
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if FileExists(Form1.TmpFilePath) then
DeleteFile(Form1.TmpFilePath);
end;
Ну, и соответственно, оба модуля должны добавить друг друга в раздел
uses.