Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > SynUniHighlighter и SynEdit > Я хочу использовать компонент. Как? |
Автор: Vitalik 10.11.2004, 14:55 | ||||||
Компонент SynUniHighlighter предназначен для подсветки текста. Для его работы необходима библиотека компонентов SynEdit, а также компонент XmlParser Итак, что нужно сделать, чтобы начать использовать компонент?
Теперь те же шаги нужно проделать еще для двух компонентов. Во-первых, для XmlParser. Это компонент для быстрого считывания xml-файла. Во-вторых, собственно для SynUniHighlighter (или SynUniSyn). Начнём с XmlParser - он поставляется вместе с последними версиями SynUniHighlighter'a.
Теперь перейдём собственно к установке SynUniHighlighter. Она ничем не отличается от установки предыдущих двух компонентов.
Вот и всё! ![]() Теперь можете кидать на форму компоненты со страницы SynEdit и экспериментировать. Если кому-нибудь интересно, могу описать основные прийомы работы с компонентом SynUniSyn ![]() |
Автор: P@VeL 11.11.2004, 14:34 |
Здравствуйте! Я уже давно пользуюсь плагином к Total Commander'у SynPlus, который использует данный компонент. А вот теперь решил сам использовать этот компонент. Поэтому было очень интересно услышать об основных прийомах работы с компонентом. ![]() Спасибо! |
Автор: Vitalik 11.11.2004, 20:14 | ||||||||
Здравствуйте, P@VeL. А что за программу Вы пишете? ![]() Могу дать пару простых первых уроков. Так сказать для быстрого старта ![]() Урок 1 (статическое использование компонента подсветки) 1. Кидаем на форму компонент TSynEdit со страницы SynEdit 1.1 Устанавливаем его свойство Align в True 1.2 В свойство Lines вводим произвольный текст. Например, "SynEdit1 Sample {Some text}" ![]() 2. Кидаем на форму компонент TSynUniSyn со страницы SynEdit 2.1 Двойной щелчок по компоненту и начанаем добавлять какие-нибудь правила. Например, Add Keywords, 'SynEdit1', 'Sample', Add range, From = '{', To = '}'. 3. На данный момент нужно после каждого изменения SynUniSyn нужно еще как-нибудь изменить форму, чтобы изменения в SynUniSyn сохранились. (Это баг) 4. Устанавливаем у SynEdit1 свойство Highlighter равным SynUniSyn1 Урок 2 (динамическое создание компонента подсветки) 1. Кидаем на форму компонент TSynEdit со страницы SynEdit 1.1 Устанавливаем его свойство Align в True 1.2 В свойство Lines вводим произвольный текст. Например, "SynEdit1 Sample {Some text}" ![]() 2. Добавляем в uses ссылки на модули SynUniHighlighter и SynUniRules 3. Добавляем в раздел public формы объявление SynUniSyn1:
Урок 3 (Вызов визуального редактора подсветки) 1. Берём в качестве отправной точки любой из предыдущих примеров. 2. Добавляем в uses ссылку на модуль SynUniDesigner 3. Добавляем новый пункт меню и в его обработчике пишем:
Урок 4 (Загрузка правил подсветки из файла) 1. Берём в качестве отправной точки любой из предыдущих примеров. 2. Кидаем на форму компонент TOpenDialog со страницы Dialogs 3. Добавляем новый пункт меню и в его обработчике пишем:
|
Автор: P@VeL 11.11.2004, 22:31 |
Да вот пишу сетевой чат, пока что только разбирался в реализации обмена сообщениями.... Скоро начну разрабатывать дизайн чата и думаю, что этот компонент в подсветке текста мне очень поможет. ЗЫ Спасибо за инфу ![]() |
Автор: Vitalik 12.11.2004, 12:38 |
Если будет нужна помощь - обращайся ![]() Эта тема специально создана для того, чтобы обсуждать здесь проблемы установки компонента и минимальные приёмы работы с ним ![]() |
Автор: Kordub 22.2.2005, 14:24 | ||
Не устанавливается пакет версии 1.8 - ошибка при компиляции File not found: 'DsgnIntf.dcu'. У меня Delphi 7. Правда, устанавливается старая версия SynUniSyn, но она не работает с компонентом SynEdit. Т. е. если присвоить свойство
никакой подсветки нет |
Автор: Vitalik 22.2.2005, 14:47 | ||||||
Давай обсудим это в теме "http://forum.vingrad.ru/index.php?showtopic=43330" Повтори там твоё сообщение, пожалуйста.
Очень странно! У меня работали обе версии, и работали правильно... Давай это обсудим в той же теме, хорошо? |
Автор: Guest 12.11.2005, 18:45 |
Привет всем! У меня не устанавливается SynEdit. ![]() |
Автор: Vitalik 14.11.2005, 15:33 | ||
Какую версию SynEdit и на какую версию Delphi или C++ Builder вы ставите?.. Что за ошибку выдаёт при установке?.. |
Автор: Guest 5.12.2005, 21:06 |
Уважаемые, ставлю SynEdit v. 2.01b на Дельфи 7, потом Unhighlighter v 2.0a full и при компиляции unhighliter Дельфи ругается следующим образом : [Fatal Error] SynUniHighlighter.pas(35): File not found: 'SynEditCodeFolding.dcu' Я так понял, что версия СинЕдит древняя. |
Автор: Гость_Fel 5.12.2005, 23:01 |
Так, с этим разобрался, тебя ругается вот как Range.Attributes.Name := 'New'; -- [Error] SynUniHighlighter.pas(160): Cannot assign to a read-only property |
Автор: Vitalik 6.12.2005, 17:43 |
Прочитай обо всём этом здесь: "http://www.unihighlighter.com/index.php?showpage=install&lang=ru" ![]() |
Автор: Гость_Fel 6.12.2005, 20:39 |
Если избавляться от этой проблемы следующим образом: {$I SynEdit.inc} {$DEFINE CODEFOLDING} //{$DEFINE PROTECTED_ATTRIBUTES} //comment //{$DEFINE WRITABLE_ATTRIBUTE_NAME} //comment то при двойном щелчке по SynUniSyn выскакивает следующее сообщение: Sorry, this feature isn't implemented yet :/ И что же делать? |
Автор: Guest 6.12.2005, 20:48 |
И еще как удалить установленный анхайлайтер? |
Автор: Vitalik 6.12.2005, 22:28 | ||||
Это действительно так. По ряду причин эта фича в UniHighlighter 2.0 Alpha не реализована.
Не анхайлайтер, а унихайлайтер ![]() А удаляется он обычно:
|
Автор: Guest 7.12.2005, 00:05 | ||||
И что же делать, ставить более старую версию унихайлайтера?
В этой версии не реализовано? |
Автор: Vitalik 7.12.2005, 15:42 | ||||
Именно так... ![]() Дело в том, что была предпринята попытка отделить дизайнер от компонента... И вот вследствие этого отделения его пока нельзя его использовать в дизайнере формы. Дело в том, что польза от внутреннего дизайнера, конечно, есть, но ряд пользователей по ряду причин либо не хотят вообще использовать дизайнер, либо не хотят, чтобы он был частью компонента... О том, как стоит поступить в данном случае с дизайнером, стоило бы поговорить в отдельной теме.
Если вам непременно необходимо задать правила подсветки на этапе проектирования формы, то можете поставить старую версию. Иначе, можно просто вручную использовать методы LoadFromFile или LoadFromStream. |
Автор: Guest 7.12.2005, 23:36 |
ок, спасибо |
Автор: andrewdark 25.1.2006, 11:47 |
Доброе время суток!! Лазил по форуму не смог найти ответ на свой вопрос, поэтому хочу его задать сейчас. Заранее прошу прощение если вопрос покажется ламерским, так как я только начинаю осваивать эти компаненты, да и чего таить сам Delphi/ Суть в следующем: Установил SynEdit и SynUniHighlighter, вроде все прошло успешно. Начинаю читать как пользоваться из примеров и дохожу до момента, когда написано "Кидаем на форму компонент TSynUniSyn со страницы SynEdit" Ищу и ни чего плжобного не нахожу. Может я чего не доустановил, а может концепция компаненто изменилась а примеры по использованию старые. Не могу найти TSynUniSyn Подскажите плз. |
Автор: Vitalik 26.1.2006, 16:31 |
Здравствуйте, andrewdark! Компонентая концепция покамест не изменилась, так что скорее всего у вас возникли проблемы с установкой SynUniHighlighter... которые мы сейчас и попробуем решить ![]()
|
Автор: andrewdark 26.1.2006, 16:53 |
Доброе время суток. Вообщем так я еще разок перечитал страницы форума, и видел примерно такую же проблему. проще говоря ругается в строке Range.Attributes.Name := 'New'; Я так понял поэтому у меня ee и нету Верися Delphi 7 Прочитал документацию по установке установил сначала SynEdit 2.0.2 beta , взятый с сайта http://www.unihighlighter.com/ затем UniHighlighter 2.0 alpha прежде чем устанвливать пропатчил как в инструкции написано, результат см выше это на этапе компиляции спасибо |
Автор: andrewdark 27.1.2006, 10:56 |
Я сделал именно так как было написано в рекомендациях по установке. Несколько раз переустанавливал следуя иструкция а эффект ровно такой же. Поэтому и обратился за помощью. Если я правильно понял сначала нужно было установить SynEdit, он поставился, закладки появились, А вот далее такие проблемы начались. |
Автор: Vitalik 27.1.2006, 14:56 | ||
Чтобы компонент действительно переустановился, зачастую необходимо делать следующее:
У тебя скорее всего такая ситуация (у меня такое тоже было): при переустановке SynEdit он не перекомпилирует его полностью, не пересоздаёт файлы *.dcu и/или *.bpl. Удаление этих файлов (как описано выше) заставит его заново и полностью перекомпилировать компонент и создать эти файлы уже обновлёнными ![]() Попробуй и напиши о результатах ![]() Кстати, на всякий случай напиши что за ошибку он выдаёт на этой строке. Если я правильно понимаю ситуацию, то он должен ругаться на невозможность записи в поле Name, то есть оно как бы readonly (для непропатченной версии SynEdit). Удачи! ![]() |
Автор: andrewdark 27.1.2006, 15:44 | ||
Сделал все как посоветовал, результат следующий. 1. Удалил все что указано, пропатчил 2. Стал устанавливать SynEdit 3. Ошибка в строке
----------------------- [Warning] SynEdit_R7.dpk(5): File not found: 'SynEdit_R7.res' [Hint] SynHighlighterPas.pas(1575): Value assigned to 'ReadDelphiSettings' never used [Error] SynEdit_D7.dpk(34): File not found: 'SynEdit_R7.res' [Fatal Error] SynEditReg.pas(151): Could not compile used unit '..\Source\SynHighlighterManager.pas' Правда при повторном Compile ее не возникает. Дальше я не стал пока продолжать. |
Автор: Vitalik 27.1.2006, 17:42 | ||
А зря ![]() У меня на строке с SynEdit_R7; тоже частенько ругается и тоже после повторного Compile замолкает. Так что обычно это совсем не проблема ![]() Еще раз удачи! ![]() |
Автор: andrewdark 27.1.2006, 17:55 | ||
Ок, продолжил дальше, результат такой же с чего все и началось Ошибка в строке с New
-------------------- [Warning] SynUniClasses.pas(384): Return value of function 'StrToStartLine' might be undefined [Hint] SynUniClasses.pas(907): Variable 'Value' is declared but never used in 'TSynMultiToken.LoadFromXml' [Hint] SynUniImportOldFormat15.pas(135): Variable 'Value' is declared but never used in 'LoadRange' [Hint] SynUniImportOldFormat15.pas(197): Value assigned to 'TSynUniImportOldFormat15.ImportFromXml' never used [Hint] SynUniImportOldFormat15.pas(194): Variable 'Schemes' is declared but never used in 'TSynUniImportOldFormat15.ImportFromXml' [Hint] SynUniImportOldFormat15.pas(195): Variable 'SchemeIndex' is declared but never used in 'TSynUniImportOldFormat15.ImportFromXml' [Warning] SynUniImportOldFormat15.pas(265): Return value of function 'TSynUniImportOldFormat15.ImportFromFile' might be undefined [Hint] SynUniImportOldFormat18.pas(137): Variable 'Value' is declared but never used in 'LoadRange' [Hint] SynUniImportOldFormat18.pas(202): Value assigned to 'TSynUniImportOldFormat18.ImportFromXml' never used [Hint] SynUniImportOldFormat18.pas(199): Variable 'Schemes' is declared but never used in 'TSynUniImportOldFormat18.ImportFromXml' [Hint] SynUniImportOldFormat18.pas(200): Variable 'SchemeIndex' is declared but never used in 'TSynUniImportOldFormat18.ImportFromXml' [Warning] SynUniImportOldFormat18.pas(267): Return value of function 'TSynUniImportOldFormat18.ImportFromFile' might be undefined [Error] SynUniHighlighter.pas(160): Cannot assign to a read-only property [Fatal Error] SynUniReg.pas(33): Could not compile used unit '..\Source\SynUniHighlighter.pas' Вот так |
Автор: Vitalik 27.1.2006, 23:05 | ||
Это признак непропатченного SynEdit'а... Прикрепи ка сюда свой файлик SynEditHighlighter.pas... Не знаю почему, но у тебя изменённая версия SynEdit не хочет устанавливаться, а устанавливается старый оригинальный вариант... Попробуй в той строке, где ты добавлял возможность write fName; написать пару левых символов и проверить будет ли компилятор на них ругаться... Может просто ты не тот файлик открыл или компилятор игнорирует этот файл или мож еще что случилось ![]() P.S. Что-то у меня поздно получается замечать твои посты. У тебя есть ICQ? |
Автор: andrewdark 30.1.2006, 10:21 | ||
Сорри, что так долго. Вообщем я все таки добился того чтобы SyUni у меня поставился. Начинаю испытывать примеры. И урок 1
Выдает сообщение Sorry, this feature isn't implemented yet |
Автор: Vitalik 30.1.2006, 19:40 | ||
Это действительно так... Дело в том, что в версии 2.0a компонента было произведено кардинальное изменение... Дизайнер был полностью отделён от компонента... В связи с этим использование его на этапе проектирования формы стало затруднительным... Но имеется возможность на этапе проектирования загружать подсветку в компонент из файла с помощью того же контекстного меню, правда для этого надо исправить одну ошибочку в компонете. Если тебя интересует эта фича, то могу прислать исправление... По поводу возвращения встроенности дизайнера вопрос еще не решён... Я сам сомневаюсь как будет лучше... Выскажи здесь своё мнение по этому поводу ![]() |
Автор: andrewdark 31.1.2006, 10:14 |
Ок. Спасибо! Как только разберусь с компанентом обязательно отпишу свои ощущения. |
Автор: MLS 31.3.2006, 21:22 |
А можно просто выделить кусок строки одной-двумя функциями, не создавая правил? Т. е., например, указать начальные координаты, конечные, цвет, шрифт, стиль и всё? И ещё такая проблема: каждый раз при открытии проекта, в котором используется SynEdit, вижу сообщение, что, мол, класс TSynEdit не найден, бла-бла-бла... Короче говоря, в установленных Packages SynEdit component suite в списке есть, но галочки почему-то никогда нет, то есть он отключён. Приходится каждый раз его подключать. В чём загвоздка? Заранее спасибо. |
Автор: Vitalik 22.4.2006, 02:49 | ||||
Можно. Это немного обсуждалось в теме "http://forum.vingrad.ru/index.php?showtopic=73240", исходный код можно найти в теме "http://forum.vingrad.ru/index.php?showtopic=37933"
Попробуй переустановить SynEdit (полностью) |
Автор: Roxanne 14.5.2009, 00:52 |
Доброго времени суток! Поставила SynEdit и UniHighlighter. Последний с боем, ибо компилятор выбивал ошибку "[Fatal Error] SynUniHighlighter.pas(35): File not found: 'SynEditCodeFolding.dcu'". Посему пришлось исправлять проблему так, как делали выше в этой теме, ибо другого способа я не знаю. Пытаюсь разбирать компоненты и применять их - снова проблема. При двойном щелчке на SynUniSyn выскакивает сообщение с ошибкой "Access violation at address 0460B59E in module 'SynUni_D6.bpl'. Read of address 000005B8." Что это значит, как лечить? И еще более тупой вопрос, просьба не кидать камнями, я пока новичок в делфи. В SynEdit вроде уже есть готовые шаблоны для подсветки различных синтаксисов, как их подключить? Мне html нужен. Скомпилила проект, а подсветки никакой и нет в помине. Что я забыла сделать? |
Автор: Crw 14.5.2009, 13:55 |
Скорее всего не правильно установили компоненты. Подвсетку можно реализовать двумя путями - первый это через UniHighlighter (тогда в него надо загрузить файл нужной подсветки), второй это просто исполььзовать нужный компонент из закладки "SynEdit Highlighters". Дальше в компоненте SynEdit в поле Highlighter нужно выбрать нужный компонент подсветки. Вообще с SynEditом поставляются также несколько примеров его использования - посмотрите сначала как там все сделано. |
Автор: DenisTv 1.7.2009, 22:13 |
Доброго времени суток. Установилось все без проблем. Настроил, SynUniSyn. Подключил SynEdit, и до компиляции всё нормально отображается. А после компиляции все настройки сбиваются. Подсветка пропадает и т.п. Подскажите что нибудь? |
Автор: effect47 3.7.2011, 13:34 |
Народ, где можно взять рабочий Unihighlighter? Под D7 |
Автор: BLACK_KOT 14.9.2016, 23:21 |
http://prntscr.com/ci2665 при попытке установить SynUniSyn_D7.dpk делфи 7 |