Главная > Важные Сообщения > Новый редактор песен

Новый редактор песен

Сегодня развлекался тем, что писал новый редактор песен для нашей замечательной программы. Пока редактор выглядит так:

редакторСобственно, он пока ничего не умеет, кроме как раскрашивать текст согласно принятым правилам форматирования песен. Правда раскрашивает он только тогда, когда нажмешь на кнопку, что не есть хорошо. Единственный вариант который пришел мне в голову, это вызывать функцию, которая раскрашивает текст при возникновении события OnChange. Но проблема в том, что это событие возникает при любом действии в окне редактора, таком как ввод символа или просто нажатие любой клавиши. Процедура раскраски требует ресурсов, и постоянно вызывать ее нельзя. Пока не знаю, как быть. Есть идеи?

  1. 23 сентября 2009 в 20:44 | #1

    2ART:
    Спасибо, я подумаю над этим..)
    А Песенник написан на Delphi..=)

    [Ответить]

  2. ART
    22 сентября 2009 в 21:06 | #2

    Ну если можно только текст по частям красить, то это проще должно быть…
    Что если при OnChange не сразу вызвать процедуру раскраски, а сначала проверять, что за символ введен? Попробую объяснить свою мысль, не помню правда на каком языке программа писалась и не знаю, насколько оно хорошо окажется… опишу алгоритмом…

    произошло событие OnChange()
    условный оператор:
    если последний символ в строке (он же введенный только что) не является спецсимволом форматирования то ничего не делать,
    иначе выполняем следующий условный оператор:
    если спецсимвол является непарным — раскрасить всю текущую строку,
    иначе следующий условный оператор:
    если парный спецсимвол является открывающим то ничего не делать
    иначе найти в предыдущих символах последнюю открывающую скобку и раскрасить текст между скобками.

    вот как то так…

    [Ответить]

  3. 21 сентября 2009 в 14:03 | #3

    Сейчас она вызывается не по OnChange, а вручную. Да, она перекрашивает весь целиком. У меня была идея, что можно перекрашивать только кусок кода, но как это грамотнее сделать, я пока не думал.
    UPD: Нашел компоненты SynEdit, пробую прикрутить все это добро. Посмотрим, что из этого получится…

    [Ответить]

  4. ART
    20 сентября 2009 в 22:23 | #4

    вопрос: вызываемая по OnChange процедура раскраски при вводе каждого символа заново перекрашивает весь текст или какую то его часть?

    [Ответить]

  1. Пока что нет уведомлений.