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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.03.2021, 12:49
Аватар для Guaho
Guaho Guaho вне форума
Начинающий
 
Регистрация: 27.08.2017
Сообщения: 173
Версия Delphi: Delphi7
Репутация: 10
По умолчанию Компонент "Полноценный RTF-редактор"

Привет всем!
В моей базе данных есть поля с RTF-содержимым. Отображаются они стандартными компонентами TDBRichEdit; там же осуществляется быстрая правка в чисто-текстовом формате. Для правки в формате RTF делается правый клик по компоненту TDBRichEdit, выбирается пункт "Редактор RTF..." в контекстном меню, после чего в отдельном окне показывается редактор RTF. Это стандартный редактор RTF из примеров Delphi7, только слегка доработанный под мои нужды (см. прикреплённую картинку). По окончании правки данные автоматически переносятся в основной TDBRichEdit.
Такая технология является не лучшим подходом, т.к. присутствуют лишние телодвижения (в прямом смысле, а именно клики мышкой), что противоречит принципам хорошего интерфейса, который обязан быть простым.
Существуют ли такие компоненты редакторов RTF, чтоб помимо текстового поля рядом были кнопки форматирования, выбора цвета/шрифта? Может кто сталкивался с таким?
Я бы внедрил кнопки редактирования в панели со своими TDBRichEdit-ами, но, чую, это будет очень непросто (даже слегка модифицировать стандартный пример редактора из демо Delphi для меня оказалось непростой задачей) и шибко затратно по количеству кода и потраченного времени. К тому же у меня в программе несколько RTF-полей, и все в разных окнах. А создать свой компонент с нужными свойствами - так я никогда такого не делал, и с моей "высочайшей" квалификацией я сомневаюсь, что это возможно без дикого гемора и кучи нервов.
Может кто-нибудь сталкивался с готовыми решениями (если таковые вообще существуют)?
Изображения
Тип файла: jpg Редактор RTF.jpg (59.1 Кбайт, 9 просмотров)

Последний раз редактировалось Guaho, 24.03.2021 в 12:52.
Ответить с цитированием
  #2  
Старый 26.03.2021, 19:14
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,993
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Используй фреймы.
Фрейм, это та же форма, но предназначенная для расположения на других компонентах, а не как самостоятельное окно. В принципе, когда фрейм написан (а там фактически надо просто перенести все то, что ты сделал в своем редакторе, только кнопки переделать с тулбара на обычную панельку), то можно вместо TDBRichEdit использовать этот фрейм, просто дописать загрузку из поля и выгрузку, выполнять по смене строки в БД.
Ответить с цитированием
  #3  
Старый 27.03.2021, 23:04
Аватар для Guaho
Guaho Guaho вне форума
Начинающий
 
Регистрация: 27.08.2017
Сообщения: 173
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Спасибо! Про фреймы читал очень давно, но так до конца и не разобрался, как и когда их использовать. А сейчас просто и не вспомнил о них. Буду пробовать!
Ответить с цитированием
  #4  
Старый 09.02.2022, 22:54
Аватар для Guaho
Guaho Guaho вне форума
Начинающий
 
Регистрация: 27.08.2017
Сообщения: 173
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Подниму тему, в связи с решением заданного вопроса.
Использовать фреймы я не решился, т.к., почитав форумы, увидел много негативных отзывов о глючности такого подхода. И вспомнил, как очень много лет назад что-то пробовал с ними, и сначала работало, а потом куда-то пропадали обработчики (или что-то в этом роде).
В итоге недавно я снова вернулся к этому вопросу. Снова открыл код RTF-редактора из стандартных примеров D7. В общем, оказалось не так сложно разобраться!
Задача была - сделать RTF-редакторы в нескольких местах в программе. Все обработчики с элементами интерфейса RTF-редактора я оформил в виде универсальных процедур и функций, все кнопки и списки выбора - как глобальные переменные. При показе окна, содержащего редактор, глобальным переменным присваиваются значения, соответствующие интерфейсным элементам текущего окна. И всё замечательно работает!
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter