Модераторы: Vitalik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хочется подсвечивать текст в нужных позициях 
V
    Опции темы
kDanil
  Дата 5.12.2005, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 2.12.2005

Репутация: нет
Всего: нет



Хочется подсвечивать текст в нужных позициях во всех строках. То есть 6 позиция для всех строк должна иметь цвет фона зеленый, например. Это нужно для редактора фортрана, там 6 позиция особенная. В редакторе Microsoft Visual Fortran мне понравилась эта идея, теперь хочется это реализовать.
Уже второй день сижу изучаю код, пока получилось нарисовать FillRect для 6 позиии всех строк, но теряются все символы в 6 позиции, их закрашивает мой Rect. И приходится это реализовывать внутри SynEdit.pas , что не правильно, так как будет работать и для других форматов файлов.
smile Пытался что-то придумать в файле SynHighLighterFortran.pas, но ничего толком не придумал. smile
Подскажите, если у кого есть мысли, как это сделать ....

PM MAIL   Вверх
Vitalik
Дата 6.12.2005, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: 9
Всего: 12



Привет, kDanil.
Один из вариантов решения этой проблемы можно прочитать здесь: "Как организовать подсветку фрагметов текста?" smile
PM MAIL WWW ICQ YIM   Вверх
kDanil
Дата 6.12.2005, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 2.12.2005

Репутация: нет
Всего: нет



Спасибо, будем изучать, может и получится чего smile
PM MAIL   Вверх
kDanil
Дата 9.12.2005, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 2.12.2005

Репутация: нет
Всего: нет



Да все получилось, спасибо.

При использовании кода обнаружились следующие ошибки:
[*]Gutter.Width, почему-то не правильно у меня вычислялась(ровно в два символа меньше, чем надо), пришлось ее явно установить используя функцию Gutter.RealGutterWidth(7)

[*]Вторая ошибка в конструкции
Код

// Если сейчас строка не видна на экране
      if not (Line in [TopLine .. TopLine + ClientHeight div LineHeight]) then
        Continue; // переходим к следующей строке

У меня отрабатывает только до 255 строки, потом в этом условии сваливает всегдя на continue. Не стал разбираться в чем тут дело, переписал по своему.

Вообщем спасибо! smile
PM MAIL   Вверх
Vitalik
Дата 10.12.2005, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: 9
Всего: 12



Цитата(kDanil @ 9.12.2005, 19:16)
Не стал разбираться в чем тут дело, переписал по своему.

Если не сложно, выложи здесь свой исправленный код smile
PM MAIL WWW ICQ YIM   Вверх
kDanil
Дата 10.12.2005, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 2.12.2005

Репутация: нет
Всего: нет



Вообщем-то я просто переписал конструкцию in [], получилось так:
Код

if (Line < TopLine) and (Line > TopLine + ClientHeight div LineHeight) then
        Continue; // переходим к следующей строке


Я не большой знаток Delphi поэтому не смогу сказать, чем одна конструкция языка отличается от другой, но то, что так работает - это факт.
PM MAIL   Вверх
Vitalik
Дата 10.12.2005, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Координатор проекта
Сообщений: 653
Регистрация: 8.11.2004
Где: Ukraine, Kharkov

Репутация: 9
Всего: 12



Цитата(kDanil @ 10.12.2005, 14:55)
Вообщем-то я просто переписал конструкцию in [], получилось так:

Вообще-то я имел ввиду полный код (включая и Gutter и может другие изменения)
Мало ли, вдруг, кому-нибудь пригодится smile
Но ладно, думаю, и так разберутся...
PM MAIL WWW ICQ YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | SynUniHighlighter и SynEdit | Следующая тема »


 




[ Время генерации скрипта: 0.0930 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.