Delphi - Как мне сделать WYSIWYG редактор HTML, используя Delphi?
КАК сделать "простой" в использовании интерфейс WYSIWYG для создания HTML-файлов? IE редактор HTML. Специально для создания форматированных сообщений электронной почты с изображениями, гиперссылками, форматированием шрифтов, маркерами, отступами и т. Д.
Примечание [jd]: это вопрос с самостоятельным ответом, предназначенный быть указателем для других.
1 ответ
Компоненты EmbeddedWB Web Browser от bsalsa.com предлагают только инструменты для этого.
Изменить: bsalsa.com больше не существует. Новое местоположение: https://bitbucket.org/wpostma/tembeddedwb
Вы размещаете элемент управления (окно) EmbeddedWB (веб-браузер) для отображения HTML, например, с веб-сайта. Затем вы помещаете компонент EditDesigner в форму и связываете его с элементом управления EmbeddedWB в Инспекторе объектов - Свойства.
С помощью EditDesigner вы можете установить WebBrowser в режим редактирования и иметь некоторые базовые возможности редактирования, такие как вставка или удаление текста или установка некоторых свойств шрифта. Не полный редактор, хотя.
Не отчаивайтесь, этот пакет является полной оболочкой для редактора MSHTML. Небольшое дополнение к модулю EditDesigner позволяет вам получить полный доступ к интерфейсу MSHTML execCommand.
Оригинальный код:
procedure ExecCommand(Command: Widestring; ShowUI: Boolean; Value: Integer);
begin
if Assigned(FEmbeddedWB) then
GetHTMLDoc2FromWB.execCommand(Command, showUI, Value);
end;
Вы увидите, что эта процедура в EditDesigner.pas принимает и анализирует значение как целочисленное значение для HTMLDoc.execCommand. Это все, что вам нужно для некоторых команд, обычно требующих только 0 в качестве значения. Но многие команды нуждаются в информации String для значения, например, об изменении имени шрифта. HTMLDoc.execCommand фактически примет Variant в качестве значения, поэтому я добавил еще одну процедуру в EditDesigner.pas, как показано ниже, чтобы обеспечить почти полный доступ к редактору MSHTML, если вы знаете команды для отправки.
procedure TEditDesigner.ExecCommandEx(Command: Widestring; ShowUI: Boolean; Value: OleVariant);
begin
if Assigned(FEmbeddedWB) then
GetHTMLDoc2FromWB.execCommand(Command, showUI, Value);
end;
Вы получаете доступ к этой процедуре, когда вам нужно отправить более сложную команду в редактор. Это изменит цвет шрифта.
procedure TfrmComposer.actFontColourExecute(Sender: TObject);
begin
if dlgColorDialog.Execute then
begin
EditDesigner1.ExecCommandEx('foreColor',False,dlgColorDialog.Color);
end;
EditDesigner1.EmbeddedWB.SetFocus;
end;
Это изменит шрифт...
procedure TfrmComposer.JvFontComboBoxChange(Sender: TObject);
begin
EDewbMessageBody.ExecCommandEx('fontname',False,JvFontComboBox.FontName);
EDewbMessageBody.EmbeddedWB.SetFocus;
end;
Существует также процедура EditDesigner1.InsertHTML, которая позволит вам вставить все, что вы хотите.
Счастливого Delphiin';)