Визуальный HTML редактор своими руками. Автор: Samum. WEB- сайт: http: //samum. Итак, что нам понадобится.
Delphi Как сохранить текст из Edit в конец документа.txt от тегов? Можно искать и удалять все теги, но думаю есть способ проше. . Как наоборот удалить все тэги, оставив только текст? точно известна структура документа, если точно известна его (не)валидность, . Понадобилась мне недавно компонента визуального html редактора. Для этого у каждого документа (согласно объектной модели это Хорошо. Тогда давайте разберем, как из delphi заставить webbrowser выполнять все эти действия. text, widestring, Содержит текст выделения (без тегов html).
Возможность дополнения html - тегов по клавише Tab. Можно просматривать переменные MAT-файлов, удалять их, добавлять числовые данные из текстовых файлов в MAT-файл. Plugin was written in Borland Delphi 7 Personal. Lister-плагин к Total Commander для просмотра DOC файлов для PalmOS. Понадобилась мне недавно компонента визуального html редактора. Для этого у каждого документа (согласно объектной модели это. Хорошо. Тогда давайте разберем, как из delphi заставить webbrowser выполнять все эти действия. text, widestring, Содержит текст выделения (без тегов html). В примере ниже JavaScript получает документ внутри ифрейма и. которые указывают на HTML-страницу (даже если она уже в кеше), это всегда так. contentWindow; // окно из тега alert( frames[0] === iframeWindow); // true, окно из. JS выполняться не будет или же удалить все узлы script из документа.
В первую очередь - Delphi 5- 7 (у меня стоит 7- я версия, и весь код тестировался именно в этой версии). Это вызвано тем, что компонент TWeb. Browser впервые "прописался" на вкладке Internet именно в 5- й версии (в 4- й его надо было устанавливать как компонент Active. X). Еще необходимо, чтобы в системе был установлен Internet Explorer 4 и выше. Сначала нам надо перевести Web. Browser в режим редактирования.
Для этого у каждого документа (согласно объектной модели это document) существует свойство Design. Mode. Если установить его в 'On', то наша компонента автоматически переключается в режим редактирования, а если установить его в 'Off', то компонент вернется в режим просмотра. Проверим это! Создадим новую форму, разместим на ней компоненту TWeb. Browser и несколько компонент TSpeed. Button. Затем напишем такой код.
Form. 1: TForm. 1. Disp: IDispatch. Editor: IHTMLDocument. R *. dfm}procedure TForm.
Web. Browser. 1Document. Complete(Sender: TObject. Disp: IDispatch; var URL: Ole. Variant). Current.
WB: IWeb. Browser. Editor: IHTMLDocument. Disp : = p. Disp.
TForm. 1. Speed. Button. Click(Sender: TObject). Current. WB: IWeb. Browser. Current. WB : = Disp as IWeb. Browser. editor : = (Current.
WB. Document as IHTMLDocument. Design. Mode : = 'On'. TForm. 1. Form. Create(Sender: TObject). Web. Browser. 1. Navigate('about: < html> < body> < /body> < /html> '). Теперь по порядку о том, что мы написали. В событии On. Create формы мы загружаем в браузер простую страницу (напомню, что протокол about: позволяет загружать в браузер HTML строку).
Это необходимо для того, чтобы в последующем мы могли обращаться к документу. Сразу после этого будет вызван обработчик события On. Document. Complete.
Но пока еще ничего не произошло. Внимательный читатель мог обратить внимание, что для перевода браузера в режим редактирования надо нажать кнопку 1.
Editor - это экземпляр нашего документа (document). Его свойство Design. Mode устанавливается в 'On'. Теперь наш редактор практически готов.
Он уже умеет править текст, копировать/вырезать/вставлять текст и картинки, делать текст жирным/подчеркнутым/наклонным. Для этого есть соответствующие комбинации клавиш. Ctrl + C Копировать. Ctrl + X Вырезать.
Ctrl + V Вставить. Ctrl + B Жирный текст. Ctrl + I Наклонный текст.
Ctrl + U Подчеркнутый текст. Ctrl + Z Отменить. Ctrl + Y Повторить. Ctrl + K Гиперссылка. Ctrl + F Найти. Ctrl + A Выделить всё. Ctrl + Left- Click Выделить блок. Это, конечно, хорошо, что есть горячие клавиши, но мне не хотелось бы все их запоминать" - можете сказать вы.
Хорошо. Тогда давайте разберем, как из Delphi заставить Web. Browser выполнять все эти действия. Для этого есть метод exec.
Command интерфейса IHTMLTxt. Range (он описан в модуле MSHTML_TLB). Рассмотрим простой пример. TForm. 1. Speed. Button.
Click(Sender: TObject). Range: IHTMLTxt. Range. Range : = (editor. Range as IHTMLTxt.
Range). Range. exec. Command('bold', false, emptyparam). Сначала в этой процедуре создается объект Range. После этого вызывается метод exec. Command. function exec. Command(cmd. ID: Wide.
String; Show. UI: Word. Bool. Value: Ole. Variant): wordbool. ID – это строка идентификатор команды (в нашем примере 'bold' заставляет редактор переключаться между жирным и обычным начертанием текста); полный список команд смотри в приложении. Show. UI – Show User Interface - показывать интерфейс пользователя (если таковой имеется, как правило это различные диалоговые окна). Если параметр равен False, то команда выполняется без предупреждения.
Несколько слов об объекте Range. Помимо уже знакомого нам exec.
Command этот объект обладает еще рядом свойств и методов, некоторые из которых сейчас рассмотрим. Text - Содержит текст выделения (без тегов HTML) HTMLText - Полный текст выделения. Start(const unit_: widestring; count: integer). Перемещает начальную позицию выделения на count символов вправо (если count< 0, то влево), unit_- единицы измерения смещения (чаще всего используется 'character': 1 символ). При этом конечная позиция не смещается. Start(const unit_: widestring; count: integer). То же самое, только для конечной позиции выделения.
Paste. HTML(const html: widestring). Вставляет HTML- строку. Command. Show. Help(cmd. ID: widestring). Отображает помощь по команде, указанной в cmd. ID. Пожалуй, на сегодня всё. Об остальных объектах (картинки, таблицы, элементы управления) поговорим в другой раз. Будут вопросы - пишите: mailto: samum.
Question about visualhtml part. Приложение. Доступные команды Back. Color - Устанавливает или получает цвет фона текущего выделения. Value должно содержать имя цвета или его шеснадцитиричный RGB эквивалент (например, #FFCC0. Bold - Переключает начертание текста текущего выделения между полужирным и нормальным. Copy - Копирует выделение в буфер обмена.
Create. Bookmark - Получает имя якоря или создает его для текущего выделения. Value - строка, содержащая имя якоря. Create. Link - Получает URL ссылки или создает новую ссылку. Параметр Value должен содержать URL.
Cut - Вырезает текущее выделение в буфер обмена. Delete - Очищает текущее выделение (удаляет всё его содержимое). Find - Находит текст, заданный в параметре Value в текущем выделении.
Font. Name - Устанавливает шрифт для текущего выделения. Value содержит описание этого шрифта (как в теге FONT). Font. Size - Устанавливает размер шрифта.
Value - число от 1 до 7 включительно. Fore. Color - Устанавливает цвет текста. Value должно содержать имя цвета или его шеснадцитиричный RGB эквивалент (например, #FFCC0.
Format. Block - Устанавливает или получает форматирование текущего блока. Value может содержать теги- описатели. Indent - Увеличивает отступ выделенного текста на одну единицу приращения. Insert. Button - Перезаписывает идентификатор кнопки вместо текущего выделения. Value - строка, содержащая идентификатор кнопки. Insert. Fieldset - То же для поля ввода.
Insert. Horizontal. Rule - То же для горизонтальной полосы. Insert. IFrame - То же для встроеных фреймов (IFRAME). Insert. Image - То же для изображений. Insert. Input. Button - То же для кнопки.
Insert. Input. Checkbox - То же для чекбоксов (check. Box). Insert. Input. File. Upload - То же для элемента выбора файла.
Insert. Input. Hidden - То же для скрытого поля (hidden). Insert. Input. Image - То же для изображения. Insert. Input. Password - То же для поля ввода пароля. Insert. Input. Radio - То же для радио- кнопок (Radio). Insert. Input. Reset - То же для кнопки reset. Insert. Input. Submit - То же для кнопки Submit.
Insert. Input. Text - То же для поля ввода текста. Insert. Paragraph - Вставляет новый раздел (абзац). Insert. Ordered. List - Переключает стиль текущего выделения между списком и простым текстом. Insert. Unordered. List - То же самое.
Insert. Select. Dropdown - Записывает элемент Drop- down вместо текущего выделения. Value должно содержать идентификатор элемента.
Insert. Text. Area - То же для элемента Text. Area. Italic - Переключает начертание текста текущего выделения между наклонным и обычным. Justify. Center - Устанавливает выравнивание по центру для всего блока, в котором расположено текущее выделение.
Justify. Left - Устанавливает выравнивание по левому краю для всего блока, в котором расположено текущее выделение. Justify. Right - Устанавливает выравнивание по правому краю для всего блока, в котором расположено текущее выделение. Outdent - Уменьшает отступ для всего блока, в котором расположено выделение, на одну единицу. Over. Write - Переключается между режимами вставки текста и замены текста при вводе.
Value: true - замена, false - вставка. Paste - Вставляет текст из буфера обмена вместо текущего выделения. Refresh - Обновляет текущий документ. Remove. Format - Удаляет из текущего фрагмента все теги форматирования.
Select. All - Выделяет все содержимое документа. Un. Bookmark - Удаляет все закладки из текущего выделения. Underline - Переключает начертание текста текущего выделения между подчеркнутым и обычным. Unlink - Удаляет все гиперссылки из текущего выделенного фрагмента. Unselect - Снимает выделение.