Показать сообщение отдельно
  #4  
Старый 25.05.2009, 11:05
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

У меня нет компонента 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.
Ответить с цитированием