Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.05.2009, 22:15
Рената Литвинова Рената Литвинова вне форума
Прохожий
 
Регистрация: 24.05.2009
Сообщения: 7
Репутация: 10
По умолчанию Как передать данные из TSynEdit в TWebBrowser?

Доброго времени суток участникам форума!

Я написала простой и незамысловатый html-редактор, взяв за основу компоненты SynEdit и SynUniHighlighter. Редактор работает, но мне хочется еще добавить окно предварительного просмотра написанной в редакторе веб-страницы как отдельную форму. Собственно, вопрос: как организовать передачу всего содержимого SynEdit в компонент TWebBrowser для отображения?
Просмотрела пару книг - по TWebBrowser информации мало, в инете не больше (хотя надо еще FAQ посмотреть). Не знаю, как это реализовать. Помогите, пожалуйста.
И будет ли вообще такой способ работать, если компоненты находятся на разных формах? Благодарю заранее за ответы!
Ответить с цитированием
  #2  
Старый 24.05.2009, 22:45
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Перед вызовом окна предпросмотра сохраняйте содержимое HTML во временный файл на диске, после чего загружайте его в TWebBrowser. При закрытии окна предпросмотра временный html-файл удаляйте. Так даже в некоторых коммерческих редакторах реализуется предпросмотр...
Ответить с цитированием
  #3  
Старый 24.05.2009, 23:55
Рената Литвинова Рената Литвинова вне форума
Прохожий
 
Регистрация: 24.05.2009
Сообщения: 7
Репутация: 10
По умолчанию

А не будет ли большой наглостью с моей стороны спросить, как именно выполняется "тихое" сохранение/удаление файла и как указывается папка назначения?))
Ответить с цитированием
  #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.
Ответить с цитированием
  #5  
Старый 26.05.2009, 03:57
Рената Литвинова Рената Литвинова вне форума
Прохожий
 
Регистрация: 24.05.2009
Сообщения: 7
Репутация: 10
По умолчанию

Nyctos Kasignete, благодарю!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:02.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter