|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как передать данные из TSynEdit в TWebBrowser?
Доброго времени суток участникам форума!
Я написала простой и незамысловатый html-редактор, взяв за основу компоненты SynEdit и SynUniHighlighter. Редактор работает, но мне хочется еще добавить окно предварительного просмотра написанной в редакторе веб-страницы как отдельную форму. Собственно, вопрос: как организовать передачу всего содержимого SynEdit в компонент TWebBrowser для отображения? Просмотрела пару книг - по TWebBrowser информации мало, в инете не больше (хотя надо еще FAQ посмотреть). Не знаю, как это реализовать. Помогите, пожалуйста. И будет ли вообще такой способ работать, если компоненты находятся на разных формах? Благодарю заранее за ответы! |
#2
|
|||
|
|||
Перед вызовом окна предпросмотра сохраняйте содержимое HTML во временный файл на диске, после чего загружайте его в TWebBrowser. При закрытии окна предпросмотра временный html-файл удаляйте. Так даже в некоторых коммерческих редакторах реализуется предпросмотр...
|
#3
|
|||
|
|||
А не будет ли большой наглостью с моей стороны спросить, как именно выполняется "тихое" сохранение/удаление файла и как указывается папка назначения?))
|
#4
|
|||
|
|||
У меня нет компонента 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. |
#5
|
|||
|
|||
Nyctos Kasignete, благодарю!
|