Редактор HTML для CBuilder / Delphi

Мне нужно найти базовый компонент редактора WYSIWYG HTML для C++ Builder 5, чтобы пользователи могли создавать простой текст, который я вставляю в существующий шаблон HTML-страницы. Просто поддержка для создания ссылок, добавления изображений, использования заголовков / полужирного / курсива.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
0
10 114
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Вы можете перетащить TWebBrowser в форму и включить для нее режим дизайна, например:

// Delphi code..
(WebBrowser1.Document as IHTMLDocument2).designMode := 'on';

После выполнения указанной выше строки страница станет доступной для редактирования. Вы можете ввести дополнительный текст, удалить и т. д. Если вы хотите выделить выделение жирным шрифтом или вставить изображения, вам придется добавить несколько кнопок, чтобы запрограммировать это. Круто то, что вы можете сделать это либо из Delphi (или C++ Builder в вашем случае), либо вы можете добавить javascript на страницу для редактирования.

Содержимое страницы можно получить из

(WebBrowser.Document as IHTMLDocument2).body.innerHTML;

Помните, что (WebBrowser.Document as IHTMLDocument2) может быть нулевым.


В любом случае, я могу представить, что вокруг есть компоненты, которые делают всю работу за вас, и это, вероятно, лучший путь, чем изобретать колесо.

Я надеялся получить компонент, в котором уже есть все кнопки - что-то вроде детской Frontpage.

Riho 31.12.2008 15:15

Если у вас есть RADPHP, взгляните на Embarcadero\RadPHP\3.0\plugins` folder. You'll find uHTMLEdit.pas` и uHTMLEdit.dfm. Это редактор HTML одной формы, у которого нет других зависимостей, кроме стандартного VCL.

Wouter van Nifterick 09.12.2011 19:57

@WoutervanNifterick - Я пробовал этот модуль, но он не работает с БОЛЬШИНСТВОМ html файлов: stackoverflow.com/questions/39594393/…

Gravity 20.09.2016 16:46

«После выполнения вышеуказанной строки страница станет доступной для редактирования». Мне пришлось добавить webBrowser1.Navigate ('about: blank'); до этого или я получу исключение - предположительно, потому что страницы нет.

Toby 02.05.2017 01:47

Я бы порекомендовал TRichView из-за его поддержки мирового класса и обширного набора функций. Хотя это не настоящий редактор «HTML», он поддерживает возможность экспорта в HTML, даже при необходимости генерируя соответствующие стили CSS. Я использую его для обработки электронной почты в нашем основном продукте, и он работает очень хорошо. Внутреннее хранилище имеет формат RTF (расширенный для лучшей поддержки изображений) или проприетарный формат. Существует множество примеров простых редакторов, которые легко подойдут для ваших нужд.

Пользуюсь TRichView почти 10 лет. Это хорошо, но для простого редактора может оказаться излишним. Единственный недостаток - он еще не поддерживает выравнивание изображений. Мы много лет работали над Сергеем, пытаясь уговорить его добавить это. Всегда была ... следующая версия. (Возможно, этот комментарий его подстегнет).

lkessler 02.01.2009 05:49

в C++ Builder это будет примерно так:

(wb - это TCppWebBrowser)

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "mshtml.h"

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SHDocVw_OCX"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnNavigateAndEditClick(TObject *Sender)
{
        wb->Navigate((WideString)"www.google.com");
        while (wb->Busy)
                Application->ProcessMessages();

        if (wb->Document)
        {
                IHTMLDocument2 *html;
                wb->Document->QueryInterface<IHTMLDocument2>(&html);
                html->put_designMode(L"On");
                html->Release();
        }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnInsertImageClick(TObject *Sender)
{
    if (wb->Document)
    {
          IHTMLDocument2 *html;
          wb->Document->QueryInterface<IHTMLDocument2>(&html);
          VARIANT var;
          VARIANT_BOOL receive;
          html->execCommand(L"InsertImage",true,var, &receive);
          html->Release();
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnGetHtmlClick(TObject *Sender)
{
        if (wb->Document)
        {
                IHTMLDocument2 *html;
                wb->Document->QueryInterface<IHTMLDocument2>(&html);
                IHTMLElement *pElement;
                html->get_body(&pElement);
                pElement->get_parentElement(&pElement);
                wchar_t *tmp;
                pElement->get_outerHTML(&tmp);
                Memo1->Lines->Text = tmp;
                pElement->Release();
                html->Release();
        }
}
//---------------------------------------------------------------------------

http://www.bsalsa.com/

предоставляет бесплатный набор компонентов EmbeddedWebBrowser с компонентом Edit Designer которые вы связываете с окном EmbeddedBrowser, чтобы управлять режимом разработки и иметь контроль редактирования сохранить в файл, вставить ссылки, изображения и т. д.

вроде работает хорошо!

Другие вопросы по теме