Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26160
Рейтинг: 2127
#31: 2009-08-21 03:12:12 ЛС | профиль | цитата
unalex писал(а):
а как сделать такое?

На последней версии, доступной на SVN, как-то так, с включенным свойством HiLightCaseSens



Add(MainForm,2953706,182,154)
{
Width=536
}
Add(HilightMemo,1353078,252,147)
{
Width=528
Height=266
Align=5
Font=[Courier,10,3,128,0]
Strings=#6:Em C G|53:I could bet on new-years eve he'd call me up at night|6:Em C D|60:From the other side of the world Ed was always there alright|9:Am G D Am|65:Ed's got the looks of a movie star Ed's got the smile of a prince|8:D Em C D|53:He ride a bike instead of a car I wanna be his friend|
HilightStrings=#9:Em=Blue=B|8:C=Blue=B|8:G=Blue=B|8:D=Blue=B|9:Em=Blue=B|9:Am=Blue=B|
HilightFont=[Courier New,8,0,0,1]
HilightCaseSens=0
RightMargin=1
}



карма: 22

0
Ответов: 1304
Рейтинг: 405
#32: 2009-08-21 22:01:44 ЛС | профиль | цитата
nesco, возникло ещё пару вопросов , всё в примере.


Add(MainForm,1641136,35,49)
{
Left=20
Top=105
Width=689
Height=382
Caption="SyntaxPad"
Position=1
Point(onResize)
}
Add(HilightMemo,15371114,98,49)
{
Width=681
Height=355
Align=5
Color=12632256
Font=[Courier New,10,0,0,204]
Ctl3D=1
Strings=#56:1. if (Control=nil) or (Control.ChildCount<1) Then exit;|43:2. OffsetRgn(tRGN, shx + left, shy + top); |62:3. if _prop_ApplyNow then SetWindowRgn(Handle, FRegion, true);|77:nesco //возможно-ли сделать список слов(символов) запрещённых к подсветке ? |78: //К примеру названия процедур, переменных, функций, будут выглядеть |69: //довольно непрезентабельно, в качестве примера, строки 2. и 3.|77:При вводе двойного слеша (как ввышеописаном коментарии), после подсвеченного |77:слова следующая закоментированна строка с отступом сдвигается вправо на три |8:символа.|85:И последнее при применении лексем типа (*) ххх (*) ххх, и использование подсвеченных |66:слов приводит к массовой засветке, пример строка 1., и строка ниже|42:(рррр) nesco (рррр) nesco далее засветка.|4: |0:|
HilightStrings=#11:And=Black=B|13:array=Black=B|10:as=Black=B|12:asm =Black=B|17:automated=Black=B|16:begin=12334431=B|12:case=Black=B|13:class=Black=B|15:const=6632907=B|19:constructor=Black=B|18:destructor=Black=B|18:directives=Black=B|15:dispose=Black=B|11:div=Black=B|10:do=Black=B|14:downto=Black=B|12:else=Black=B|15:end;=12334431=B|14:end=12334431=B|15:end.=11038416=B|14:except=Black=B|15:exports=Black=B|12:file=Black=B|20:finalization=Black=B|15:finally=Black=B|11:for=Black=B|16:function=Black=B|12:goto=Black=B|10:if=Black=B|22:implementation=27824=B|17:inherited=Black=B|22:initialization=Black=B|17:interface=Black=B|10:is=Black=B|13:label=Black=B|15:library=Black=B|12:line=Black=B|11:mod=Black=B|11:nil=Black=B|11:not=Black=B|14:object=Black=B|12:{of}=Black=B|11:{on}Black=B|13:{or} =Black=B|11:out=Black=B|14:packed=Black=B|15:private=Black=B|17:procedure=Black=B|15:program=Black=B|16:property=Black=B|17:protected=Black=B|14:public=Black=B|17:published=Black=B|13:raise=Black=B|14:record=Black=B|14:repeat=Black=B|16:resource=Black=B|13:{set}=Black=B|11:shl=Black=B|11:shr=Black=B|14:string=Black=B|14:string=Black=B|12:then=Black=B|17:threadvar=Black=B|12:{to}=Black=B|11:try=Black=B|14:type=6348983=B|15:unit=11220377=B|13:until=Black=B|12:uses=Black=B|11:var=Black=B|15:virtual=Black=B|13:while=Black=B|12:with=Black=B|11:xor=Black=B|11:nesco=255=B|11://*=Green=C|11:/*/=Green=C|13:(*)=7995392=B|
HilightFont=[Courier New,10,0,0,0]
AutoComplete=1
MinWordLen=0
RightMargin=1
Point(doHilightFont)
}




карма: 3

0
Разработчик
Ответов: 26160
Рейтинг: 2127
#33: 2009-08-21 23:27:39 ЛС | профиль | цитата
MAV, поясни вот этот пункт подробнее

MAV писал(а):
При вводе двойного слеша (как ввышеописаном коментарии), после подсвеченного
слова следующая закоментированна строка с отступом сдвигается вправо на три
символа


Это достигается каким точно способом, желательно по пунктам

По первому пункту вообще непонятно, надо чтобы с подсветкой скобки с функциями были, или нет
Там во втором и третьем примере никогда не будет подсветки, так как считается одним словом, а скобка находится в середине этого слова.
Со словами исключениями очень бы не хотелось проверять дополнительный список исключений на каждый чих.
Так что поясни точно -- засвечивать надо любые вхождения, типа -- (*), или нет
Последнее исправлено, но не доступно, пока. Надо определиться с первыми двумя пунктами
карма: 22

0
Ответов: 1304
Рейтинг: 405
#34: 2009-08-22 01:02:44 ЛС | профиль | цитата
Чего то я заморочился, своё сообщение вместе с примерами убил. .

Упрощённый пример, а остальное придётся перенести на сегодня.


Add(MainForm,1641136,84,84)
{
Left=20
Top=105
Width=689
Height=382
Caption="SyntaxPad"
Position=1
Point(onResize)
}
Add(HilightMemo,15371114,147,84)
{
Width=681
Height=355
Align=5
Color=12632256
Font=[Courier New,10,0,0,204]
Ctl3D=1
Strings=#36:1. xxx (xxx) xxx (ххх) yyyy // zzz|26:Почему подсветились y и z?|0:|3:2. |11:xxxx //yyy |14: //yyy |13: //yyy|11:xxxx (yyy)|14: (yyy)|14: (yyy)|64:Несоответствие расположения игриков в HilightMemo, относительно |18:"Редактора строк".|0:|4: |0:|
HilightStrings=#11://*=Green=C|9:(*)=255=B|
HilightFont=[Courier New,10,0,0,0]
AutoComplete=1
MinWordLen=0
SmartTabs=1
RightMargin=1
Point(doHilightFont)
}





карма: 3

0
Разработчик
Ответов: 26160
Рейтинг: 2127
#35: 2009-08-22 01:28:35 ЛС | профиль | цитата
MAV, но так они у тебя и в списке не соответствуют, смещены на три символа, или это наблюдается при переводе каретки в режиме редактирования, но там подсветка совсем не причем, на любых строках такое может наблюдаться, так работает SmartTab, сам по себе, если так, то я попробую его исправить. Пункт 1 я уже исправил
------------ Дoбавленo в 01.33:
Да, а что это за фраза такая, мне совсем непонятная

Mav писал(а):
относительно "Редактора строк"

карма: 22

0
Ответов: 1304
Рейтинг: 405
#36: 2009-08-22 19:36:28 ЛС | профиль | цитата
nesco писал(а):
относительно "Редактора строк"

nesco, извеняюсь что заморочил голову со смещениями, это особенность шрифтов и к HilightMemo не относится.
nesco писал(а):
Так что поясни точно -- засвечивать надо любые вхождения, типа -- (*), или нет

Орентируюсь по редактору встроенному в HiAsm, поэтому думаю что все вхождения (*) засвечивать не нужно.
Возникло ещё пару вопросов, насколько сложно сделать что бы HilightMemo стал понимать символы перевода строки(10/13), думаю в этом есть необходимость. И второй, невозможно из потока записать данные в первую строчку.


Add(MainForm,2953706,42,28)
{
Width=366
Height=272
}
Add(RichEdit,1937506,161,28)
{
Left=75
Top=35
Width=235
}
Add(Edit,862150,105,28)
{
Left=15
Top=35
link(onChange,1937506:doAdd,[])
}
Add(Edit,12595206,105,91)
{
Left=15
Top=145
link(onChange,13219435:doAdd,[])
}
Add(HilightMemo,13219435,161,91)
{
Left=75
Top=143
Width=235
Font=[Courier New,8,0,0,1]
HilightFont=[Courier New,8,0,0,1]
SmartTabs=1
AutoFocus=1
}
Add(Label,13875223,210,28)
{
Left=155
Top=8
Width=44
Height=17
Caption="RichEdit"
}
Add(Label,2233503,210,91)
{
Left=155
Top=120
Width=62
Height=17
Caption="HilightMemo"
}
С исключениями разобрался, достаточно подсветить слово обычным шрифтом.


Add(MainForm,1641136,35,49)
{
Left=20
Top=105
Width=461
Height=331
Caption="SyntaxPad"
Position=1
Point(onResize)
}
Add(HilightMemo,15371114,98,49)
{
Width=453
Height=304
Align=5
Color=12632256
Font=[Courier New,10,0,0,204]
Ctl3D=1
Strings=#5:а б в|3:абв|3:бав|3:ваб|
HilightStrings=#9:а=Black=B|9:б=Green=B|7:в=255=B|9:абв=Black|9:бав=Black|9:ваб=Black|
HilightFont=[Courier New,10,0,0,204]
AutoComplete=1
MinWordLen=0
RightMargin=1
Point(doHilightFont)
}
карма: 3

0
Разработчик
Ответов: 26160
Рейтинг: 2127
#37: 2009-08-22 21:51:18 ЛС | профиль | цитата
MAV писал(а):
С исключениями разобрался, достаточно подсветить слово обычным шрифтом

Можно еще проще, достаточно прописать HiLiteFont таким же, как и основной шрифт, тогда, достаточно просто прписать слово подсветки без параметров, и оно будет выглядеть, как обычный шрифт
------------ Дoбавленo в 22.45:
MAV, Подправил Add, попробуй проверь, не будут ли ошибки
карма: 22

0
Ответов: 1304
Рейтинг: 405
#38: 2009-08-23 21:20:03 ЛС | профиль | цитата
nesco, да первая строчка доступна по doAdd, а насчёт символов переноса(10/13) по doAdd(Str)?
И вновь вопрос , мне глубоко непонятно взаимодеиствие курсора и символов при выделении, практически с первой попытки выделить необходимую группу символов невозможно. Всё таки дэ факто нулевой точкой отчёта является середина символа.
карма: 3

0
Разработчик
Ответов: 26160
Рейтинг: 2127
#39: 2009-08-23 21:35:50 ЛС | профиль | цитата
MAV писал(а):
да первая строчка доступна по doAdd, а насчёт символов переноса(10/13)

В этот редакторе привязка идет к встроеному StrList-у, для которого символы 10/13 являются уже следующей строкой с индексом, получится несоответствие при добавлении или вставке -- добавляя по индексу 0 строку с такими символами, мы, фактически, добавим несколько строк. Не знаю, насколько это оправдано, мое мнение -- этого делать не стоит

MAV писал(а):
практически с первой попытки выделить необходимую группу символов невозможно

Не замечал, только что проверил -- все прерасно выбирается с любой позиции и с любой попытки, и точкой отсчета является конец или начало символа
карма: 22

0
Ответов: 1304
Рейтинг: 405
#40: 2009-08-23 22:10:24 ЛС | профиль | цитата
nesco писал(а):
Не знаю, насколько это оправдано, мое мнение -- этого делать не стоит

Загрузить построчно не проблема, но загрузка 100кб текста за 4 секунды (проверял правда на слабом компе).
MAV писал(а):
практически с первой попытки выделить необходимую группу символов невозможно

Возможно я очень неловок в обращении с мышью , но в Memo букву "B", удаётся выделит хоть с лева на право хоть наоборот. В случае HilightMemo с слева на право всё отлично, а вот справо на лево не очень, если чётко не выстави на начало "В" то захватываю "А"


Add(MainForm,1641136,35,49)
{
Left=20
Top=105
Width=340
Height=320
Caption="SyntaxPad"
Position=1
Point(onResize)
}
Add(HilightMemo,15371114,112,42)
{
Left=1
Top=15
Width=329
Height=125
Color=12632256
Font=[Courier New,72,0,0,204]
Ctl3D=1
Strings=#3:АВС|
HilightStrings=#
HilightFont=[Courier New,10,0,0,0]
AutoComplete=1
MinWordLen=0
SmartTabs=1
RightMargin=1
AutoFocus=1
Point(doHilightFont)
}
Add(Memo,8810455,112,105)
{
Left=1
Top=170
Width=329
Height=120
Font=[Courier New,72,0,0,204]
Strings=#3:ABC|
}
Add(Label,2146820,168,56)
{
Left=1
Caption="HilightMemo"
}
Add(Label,7471272,168,105)
{
Left=1
Top=155
Caption="Memo"
}

карма: 3

0
Разработчик
Ответов: 26160
Рейтинг: 2127
#41: 2009-08-23 23:23:21 ЛС | профиль | цитата
MAV писал(а):
В случае HilightMemo с слева на право всё отлично, а вот справо на лево не очень, если чётко не выстави на начало "В" то захватываю "А"

Есть такое, исправлено
------------ Дoбавленo в 23.27:
MAV писал(а):
Загрузить построчно не проблема, но загрузка 100кб текста за 4 секунды

Зачем построчно, когда есть точка doText
Млин, MAV, ты создаешь себе трудности на пустом месте, eстественно, что этот компонент через doAdd будет грузить медленнее, чем тот же StrList, это и ежу понятно
карма: 22

0
Ответов: 1304
Рейтинг: 405
#42: 2009-08-24 00:34:40 ЛС | профиль | цитата
nesco, и точно забыл про doText . Предполагаю вопросов на эту тему будет немало, возможно в справке стоит отметить данную особенность элемента.
карма: 3

0
Разработчик
Ответов: 26160
Рейтинг: 2127
#43: 2009-08-24 00:52:51 ЛС | профиль | цитата
MAV писал(а):
возможно в справке стоит отметить данную особенность элемента

Какую особенность, что текст надо грузить через точку doText, а не построчно через doAdd, который и предназначен для отдельного добавления некоторого, небольшого, количества строк
А что, разве это не является общепринятым принципом

Могу предложить в качестве буфера использовать StrList в который по doAdd грузятся строки, а потом добавляются c точки Text в HiLiteMemo через точку doText, быстродейсвие такого буфера будет не маленькое
карма: 22

0
Ответов: 899
Рейтинг: 43
#44: 2009-08-25 18:51:45 ЛС | профиль | цитата
nesco писал(а):
На последней версии, доступной на SVN, как-то так, с включенным свойством HiLightCaseSens


немного не то что я хотел
должны подсвечиваться только аккорды, а не слова песни
пример
code_2370.txt
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_2370.txt [797B] [315]
Разработчик
Ответов: 26160
Рейтинг: 2127
#45: 2009-08-25 19:38:33 ЛС | профиль | цитата
unalex, здесь просто надо эксперементировать с группами засветки, возможно придется сделать весь перебор по всем группам символов. Я не знаю всего количества аккордов и их сочетаний, потому не могу тебе помочь с группировкой засветок. Собственно, если ты пытаешься их засветить, значит все эти сочетания у тебя есть
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)