|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Компонент "Полноценный RTF-редактор"
Привет всем!
В моей базе данных есть поля с RTF-содержимым. Отображаются они стандартными компонентами TDBRichEdit; там же осуществляется быстрая правка в чисто-текстовом формате. Для правки в формате RTF делается правый клик по компоненту TDBRichEdit, выбирается пункт "Редактор RTF..." в контекстном меню, после чего в отдельном окне показывается редактор RTF. Это стандартный редактор RTF из примеров Delphi7, только слегка доработанный под мои нужды (см. прикреплённую картинку). По окончании правки данные автоматически переносятся в основной TDBRichEdit. Такая технология является не лучшим подходом, т.к. присутствуют лишние телодвижения (в прямом смысле, а именно клики мышкой), что противоречит принципам хорошего интерфейса, который обязан быть простым. Существуют ли такие компоненты редакторов RTF, чтоб помимо текстового поля рядом были кнопки форматирования, выбора цвета/шрифта? Может кто сталкивался с таким? Я бы внедрил кнопки редактирования в панели со своими TDBRichEdit-ами, но, чую, это будет очень непросто (даже слегка модифицировать стандартный пример редактора из демо Delphi для меня оказалось непростой задачей) и шибко затратно по количеству кода и потраченного времени. К тому же у меня в программе несколько RTF-полей, и все в разных окнах. А создать свой компонент с нужными свойствами - так я никогда такого не делал, и с моей "высочайшей" квалификацией я сомневаюсь, что это возможно без дикого гемора и кучи нервов. Может кто-нибудь сталкивался с готовыми решениями (если таковые вообще существуют)? Последний раз редактировалось Guaho, 24.03.2021 в 12:52. |
#2
|
|||
|
|||
Используй фреймы.
Фрейм, это та же форма, но предназначенная для расположения на других компонентах, а не как самостоятельное окно. В принципе, когда фрейм написан (а там фактически надо просто перенести все то, что ты сделал в своем редакторе, только кнопки переделать с тулбара на обычную панельку), то можно вместо TDBRichEdit использовать этот фрейм, просто дописать загрузку из поля и выгрузку, выполнять по смене строки в БД. |
#3
|
||||
|
||||
Спасибо! Про фреймы читал очень давно, но так до конца и не разобрался, как и когда их использовать. А сейчас просто и не вспомнил о них. Буду пробовать!
|
#4
|
||||
|
||||
Подниму тему, в связи с решением заданного вопроса.
Использовать фреймы я не решился, т.к., почитав форумы, увидел много негативных отзывов о глючности такого подхода. И вспомнил, как очень много лет назад что-то пробовал с ними, и сначала работало, а потом куда-то пропадали обработчики (или что-то в этом роде). В итоге недавно я снова вернулся к этому вопросу. Снова открыл код RTF-редактора из стандартных примеров D7. В общем, оказалось не так сложно разобраться! Задача была - сделать RTF-редакторы в нескольких местах в программе. Все обработчики с элементами интерфейса RTF-редактора я оформил в виде универсальных процедур и функций, все кнопки и списки выбора - как глобальные переменные. При показе окна, содержащего редактор, глобальным переменным присваиваются значения, соответствующие интерфейсным элементам текущего окна. И всё замечательно работает! |