Нужно PBNote2 + EDM32 = текстовый редактор с подсветкой

Раздел посвящен программированию с использованием Power Basic.
jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Нужно PBNote2 + EDM32 = текстовый редактор с подсветкой

Сообщение jangle » 06.12.2006 (Ср) 17:39

Помогите кому не в лом, нужно заменить обычный textbox из PBNote2 на EDM32 контрол, у меня блин знаний не хватает. :( Хочется получить текстовый редактор с подсветкой синтаксиса.

volo
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 10.12.2004 (Пт) 11:18
Откуда: Soviet Union

Сообщение volo » 06.12.2006 (Ср) 18:47

Если использовать 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


jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 07.12.2006 (Чт) 9:50

Но одно неудобство - для очень больших текстов с множественной продстветкой довольно долго отрисовывает цветной текст.


поэтому и не хочу использовать richedit, EDM не тормозит на больших объемах текста

volo
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 10.12.2004 (Пт) 11:18
Откуда: Soviet Union

Сообщение volo » 07.12.2006 (Чт) 14:58

jangle писал(а):
Но одно неудобство - для очень больших текстов с множественной продстветкой довольно долго отрисовывает цветной текст.


поэтому и не хочу использовать richedit, EDM не тормозит на больших объемах текста



Можно покапаться здесь,
http://www.powerbasic.com/support/forums/Forum7/HTML/001911.html

до раскраски руки не доходили, подозреваю что решение похоже на richedit. Если решение получится компактным - интересно взглянуть.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 08.12.2006 (Пт) 11:27

Можно покапаться здесь,
http://www.powerbasic.com/support/forum ... 01911.html


спасибо! Думаю пригодиться.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 08.12.2006 (Пт) 11:42

Пока буду пытаться создать SDI редактор, он намного проще в реализалии. Основа пример с EDM32 все кому надо, смотрите в аттаче
Вложения
edm32.zip
(120.19 Кб) Скачиваний: 167

volo
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 10.12.2004 (Пт) 11:18
Откуда: Soviet Union

Сообщение volo » 08.12.2006 (Пт) 14:07

jangle писал(а):Пока буду пытаться создать SDI редактор, он намного проще в реализалии. Основа пример с EDM32 все кому надо, смотрите в аттаче




Посмотрел, довольно неплохо !

заметил только что ! (ASM) и комментарии - красного цвета, что в принципе для примера не критично.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 08.12.2006 (Пт) 17:03

Вот переделаная версия EDM, добавлены следующие фичи:

1. Меню
2. Тулбар
3. Статус бар

Кому интересен небольшой проект open-source текстового редактора , присоеденяйтесь. Необходимо доделать следующие функции.

• Акселераторы.
• Настройка шрифта.
• Меню для быстрого открытия последних файлов.
• Функции поиска, замены строк в коде.
• Навигатор по функциям (довести до ума)
• Быстрый переход к опеределенной строке.
• Настройка цветовой схемы под языки C/C++;Pascal;XML;HTML и т.д.


Буду по тихоньку реализовывать эти функции, и выкладывать исходники в форум. Если у кого-нибудь есть знания и время, напишите какую-нибудь функцию и кидайте сорс в эту тему.
Вложения
code_editor_1.zip
(128.39 Кб) Скачиваний: 151

Dark Machine
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 26.05.2004 (Ср) 13:12

Сообщение Dark Machine » 29.03.2007 (Чт) 0:08

Ещё одна слегка модифицированная версия контрола EDM32.
Источник: http://www.powerbasic.com/support/forum ... 03761.html

Ссылка на скачивание: http://www.phnxthunder.com/forums/phpBB ... .php?t=351


Вернуться в Power Basic

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23

    TopList