Нужно PBNote2 + EDM32 = текстовый редактор с подсветкой
Добавлено:
06.12.2006 (Ср) 17:39
jangle
Помогите кому не в лом, нужно заменить обычный textbox из PBNote2 на EDM32 контрол, у меня блин знаний не хватает.
Хочется получить текстовый редактор с подсветкой синтаксиса.
Добавлено:
06.12.2006 (Ср) 18:47
volo
Если использовать richedit, то
вкраце: ..., Но одно неудобство - для очень больших текстов с множественной продстветкой довольно долго отрисовывает цветной текст.
- Код: Выделить всё
Control Add "RichEdit", hDlgM, %ID_LTEXT1,"",3&,125&,668&,190&, _
%WS_CHILD Or %WS_CLIPCHILDREN Or %WS_VISIBLE Or _
%ES_MULTILINE Or %WS_VSCROLL Or %ES_READONLY Or _
%WS_HSCROLL Or %ES_AUTOHSCROLL Or %ES_AUTOVSCROLL Or _
%ES_WANTRETURN, %WS_EX_CLIENTEDGE
Control Handle hdlgM, %ID_LTEXT1 To hEdit
SendMessage hEdit, %EM_SETBKGNDCOLOR, 0&, RGB(175,196,176)
Setcolor "project", %Red
Macro SETTEXT
Setcolor "OBJ0", %Red
SetColor "|", %Green
SetColor "OBJ1", %Blue
SetColor "OBJ2", %Magenta
SendMessage hEdit, %WM_SETREDRAW, 1&, 0& 'Refresh and reset redraw
InvalidateRect hEdit, ByVal %NULL, %FALSE
UpdateWindow hEdit
End Macro
Function SetColor(ByVal Txt As String, ByVal nColor As Long) As Long
#Register None
Register sLen As Long
Register stopPos As Long
sLen = Len(txt)
stopPos = InStr(OS_PATHS, Txt)
While stopPos
Call SendMessage(hEdit, %EM_SETSEL, stopPos - 1&, stopPos + sLen - 1&)
Call setRichColor(nColor)
stopPos = InStr(stopPos + sLen, OS_PATHS, Txt)
Wend
Call SendMessage(hEdit, %EM_SETSEL, 0&, 0&)
End Function
Function setRichColor(ByVal nColor As Long) As Long
#Register None
Static cf As CHARFORMAT
cf.cbSize = Len(cf) 'Length of structure
cf.dwMask = %CFM_COLOR 'Set mask to colors only
cf.crTextColor = nColor 'Set the new color value
Call SendMessage(hEdit, %EM_SETCHARFORMAT, %SCF_SELECTION, VarPtr(cf))
End Function
Добавлено:
07.12.2006 (Чт) 9:50
jangle
Но одно неудобство - для очень больших текстов с множественной продстветкой довольно долго отрисовывает цветной текст.
поэтому и не хочу использовать richedit, EDM не тормозит на больших объемах текста
Добавлено:
07.12.2006 (Чт) 14:58
volo
jangle писал(а):Но одно неудобство - для очень больших текстов с множественной продстветкой довольно долго отрисовывает цветной текст.
поэтому и не хочу использовать richedit, EDM не тормозит на больших объемах текста
Можно покапаться здесь,
http://www.powerbasic.com/support/forums/Forum7/HTML/001911.html
до раскраски руки не доходили, подозреваю что решение похоже на richedit. Если решение получится компактным - интересно взглянуть.
Добавлено:
08.12.2006 (Пт) 11:27
jangle
спасибо! Думаю пригодиться.
Добавлено:
08.12.2006 (Пт) 11:42
jangle
Пока буду пытаться создать SDI редактор, он намного проще в реализалии. Основа пример с EDM32 все кому надо, смотрите в аттаче
Добавлено:
08.12.2006 (Пт) 14:07
volo
jangle писал(а):Пока буду пытаться создать SDI редактор, он намного проще в реализалии. Основа пример с EDM32 все кому надо, смотрите в аттаче
Посмотрел, довольно неплохо !
заметил только что ! (ASM) и комментарии - красного цвета, что в принципе для примера не критично.
Добавлено:
08.12.2006 (Пт) 17:03
jangle
Вот переделаная версия EDM, добавлены следующие фичи:
1. Меню
2. Тулбар
3. Статус бар
Кому интересен небольшой проект open-source текстового редактора , присоеденяйтесь. Необходимо доделать следующие функции.
• Акселераторы.
• Настройка шрифта.
• Меню для быстрого открытия последних файлов.
• Функции поиска, замены строк в коде.
• Навигатор по функциям (довести до ума)
• Быстрый переход к опеределенной строке.
• Настройка цветовой схемы под языки C/C++;Pascal;XML;HTML и т.д.
Буду по тихоньку реализовывать эти функции, и выкладывать исходники в форум. Если у кого-нибудь есть знания и время, напишите какую-нибудь функцию и кидайте сорс в эту тему.
Добавлено:
29.03.2007 (Чт) 0:08
Dark Machine