Посоветйте, пожалуйста, как лучше всего организовать редактор шаболона вывода некой иерархической структуры.
В идеале хотелось, чтобы пользователь мог в неком контроле, типа memo, richEdit-a, расставлять пробелы, переводы строк, менять вид скобок, между фиксированным текстом, который нельзя удалять, и для которого можно только менять шрифт (размер, цвет и т.п.). Как лучше хранить такой шаблон и потом использовать при выводе текста?
Пытаюсь сейчас сделать это все в виде html, с использованием css для шрифтов, но есть в основном только HTMLViewer-ы, а не редакторы. К тому же проблема запрета удаления и корректировки фиксированных строк так же остается.
Здравствуйте, masha__v, Вы писали:
__>Пытаюсь сейчас сделать это все в виде html, с использованием css для шрифтов, но есть в основном только HTMLViewer-ы, а не редакторы. К тому же проблема запрета удаления и корректировки фиксированных строк так же остается.
А почему нельзя поверх кидать а потом прятать EditBox когда курсор оказывается в позиции редактируемого поля на ReadOnly memo?
Здравствуйте, masha__v, Вы писали:
__>Посоветйте, пожалуйста, как лучше всего организовать редактор шаболона вывода некой иерархической структуры. __>В идеале хотелось, чтобы пользователь мог в неком контроле, типа memo, richEdit-a, расставлять пробелы, переводы строк, менять вид скобок, между фиксированным текстом, который нельзя удалять, и для которого можно только менять шрифт (размер, цвет и т.п.). Как лучше хранить такой шаблон и потом использовать при выводе текста? __>Пытаюсь сейчас сделать это все в виде html, с использованием css для шрифтов, но есть в основном только HTMLViewer-ы, а не редакторы. К тому же проблема запрета удаления и корректировки фиксированных строк так же остается.
У меня было сделано нечто похожее. Сначала сделал структуру классов с правилами форматирования и раскрашивания полей. Сделал этим классам сериализацию в XML. И по этим правилам форматирования сделал несколько классов вывода данных в RichText, HTML, PlainText итд. Так как всё это форматирование нужно только внутри программы, то и шаблоны хранятся в локальной таблице (с возможностью экспорта/импорта).
Пример показывать нет смысла — он слишком специализированный под данные.
Здравствуйте, Dimonka, Вы писали:
D>Так как всё это форматирование нужно только внутри программы, то и шаблоны хранятся в локальной таблице (с возможностью экспорта/импорта).
В том-то и дело, что хотелось сделать так, чтобы пользователь мог его редактировать
Здравствуйте, jhfrek, Вы писали:
J>А почему нельзя поверх кидать а потом прятать EditBox когда курсор оказывается в позиции редактируемого поля на ReadOnly memo?
В EditBox не получиться нормально расставлять enter-ы
Здравствуйте, masha__v, Вы писали:
J>>А почему нельзя поверх кидать а потом прятать EditBox когда курсор оказывается в позиции редактируемого поля на ReadOnly memo?
__>В EditBox не получиться нормально расставлять enter-ы
Почему? — ловим его и вставляем взамен спецсимвол (какое-нибудь '/n')
Здравствуйте, masha__v, Вы писали:
D>>Так как всё это форматирование нужно только внутри программы, то и шаблоны хранятся в локальной таблице (с возможностью экспорта/импорта).
__>В том-то и дело, что хотелось сделать так, чтобы пользователь мог его редактировать
У меня это тоже было сделано, только не иерархически, а ввиде таблицы. Добавляешь поле, настраиваешь форматирование, смотришь первьюшку результата. В качестве редактора брал DeveloperExpress QantumTreeList. Т.е. получается комбобокс для выбора поля, плюс кнопочка для настройки форматирования поля. Не то чтобы супер удобно, но вполне понятно.
Здравствуйте, Dimonka, Вы писали:
D>>>Так как всё это форматирование нужно только внутри программы, то и шаблоны хранятся в локальной таблице (с возможностью экспорта/импорта). __>>В том-то и дело, что хотелось сделать так, чтобы пользователь мог его редактировать D>У меня это тоже было сделано, только не иерархически, а ввиде таблицы. Добавляешь поле, настраиваешь форматирование, смотришь первьюшку результата. В качестве редактора брал DeveloperExpress QantumTreeList. Т.е. получается комбобокс для выбора поля, плюс кнопочка для настройки форматирования поля. Не то чтобы супер удобно, но вполне понятно.
Кстати да, второй способ обойтись без написания собственного контрола — пользователю показывается превьюшка, а конкретные вещи из превьюшки он настраивает в более подходящих для этого контролах. Нужно только обеспечить понятную взаимосвязь
Здравствуйте, Dimonka, Вы писали:
D>Здравствуйте, masha__v, Вы писали:
D>>>Так как всё это форматирование нужно только внутри программы, то и шаблоны хранятся в локальной таблице (с возможностью экспорта/импорта).
__>>В том-то и дело, что хотелось сделать так, чтобы пользователь мог его редактировать
D>У меня это тоже было сделано, только не иерархически, а ввиде таблицы. Добавляешь поле, настраиваешь форматирование, смотришь первьюшку результата. В качестве редактора брал DeveloperExpress QantumTreeList. Т.е. получается комбобокс для выбора поля, плюс кнопочка для настройки форматирования поля. Не то чтобы супер удобно, но вполне понятно.
Задача немного другая. Есть иерархическая структура, а ее надо вывести с заданным пользователем форматированием. Т.е., между какими группами какого типа ставить enter-ы, между какими нет, какой отступ у вложенных групп, и т.д.
Здравствуйте, jhfrek, Вы писали:
J>Кстати да, второй способ обойтись без написания собственного контрола — пользователю показывается превьюшка, а конкретные вещи из превьюшки он настраивает в более подходящих для этого контролах. Нужно только обеспечить понятную взаимосвязь
Здравствуйте, masha__v, Вы писали:
__>Задача немного другая. Есть иерархическая структура, а ее надо вывести с заданным пользователем форматированием. Т.е., между какими группами какого типа ставить enter-ы, между какими нет, какой отступ у вложенных групп, и т.д.
Вывести с дефолтовым, "подсветить" элементы форматирования и при клику на каждый из них активизировать соответствующий контрол... При изменении в контроле на лету менять форматирование в выведенном.
Здравствуйте, masha__v, Вы писали:
__>Задача немного другая. Есть иерархическая структура, а ее надо вывести с заданным пользователем форматированием. Т.е., между какими группами какого типа ставить enter-ы, между какими нет, какой отступ у вложенных групп, и т.д.
Ну и получается в принципе тогда то же самое. Кроме того у меня было сделано разное форматирование в зависимости от типа записи. Параграфы, переносы строки, табы, пробелы заменялись специальными символами, которые никогда не используются в тексте. Типа: ¶,†,· итд
Для вложенных групп можно сделать как раз древовидную структуру. Мне это не понадобилось, хотя тоже можно будет подумать.
Здравствуйте, jhfrek, Вы писали:
J>Здравствуйте, masha__v, Вы писали: J>Вывести с дефолтовым, "подсветить" элементы форматирования и при клику на каждый из них активизировать соответствующий контрол... При изменении в контроле на лету менять форматирование в выведенном.
Сейчас как раз сделала примерно это, только в виде списка с перечнем всех элементов, при выборе в котором этот элемент выделяется в примере рядом и для него активизируются контролы с необходимыми настройками.
Здравствуйте, masha__v, Вы писали:
__>Здравствуйте, jhfrek, Вы писали:
J>>Почему? — ловим его и вставляем взамен спецсимвол (какое-нибудь '/n')
__>Как вариант, так конечно можно делать..., но не очень красиво получится. Хотя все равно, спасибо за идею.