|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Как реализовать подсветку кода? |
|
Как реализовать подсветку кода?
|
Старожил Сообщения: 165 |
Профиль | Отправить PM | Цитировать
Здравствуйте. В поле edit находиться текст с bb тегами. Нужно подсветить определённые теги определённым стилем (например, тег [IMG][/IMG] сдалать зелёным, а тег [b][/b] сделать жирным). Вопрос: как это реализовать. Подскажите пожалуйста. Заранее спасибо.
|
|
Отправлено: 18:11, 25-08-2012 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Нужно использовать RichEdit.
Вывод текста в элемент RichEdit с поддержкой тегов |
------- Отправлено: 19:38, 25-08-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 165
|
Профиль | Отправить PM | Цитировать Creat0R, а можно сделать так, чтобы в примере, на который вы дали ссылку, теги не убирались.
И ещё: можно ли сделать так, чтобы пользователь мог редактировать код, и если пользователь вставил новый тег, то сразу автоматом приписывался нужный стиль, и наоборот, если пользователь убрал тег, то и стиль убирался. |
Отправлено: 20:54, 25-08-2012 | #3 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Pavluha,
Всё возможно. См. описание к функциям _GUICtrlRichEdit_* в справке. |
------- Отправлено: 00:33, 26-08-2012 | #4 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Как то так:
#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GUIRichEdit.au3> $sEditText = '' $hGUI = GUICreate("Test Script", 300, 200) $hRichEdit = _GUICtrlRichEdit_Create($hGUI, 'Some data with tags [img][/img], [b][/b], and more.', 20, 20, 260, 160, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL)) GUISetState(@SW_SHOW, $hGUI) AdlibRegister('_SetEdit', 100) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE _GUICtrlRichEdit_Destroy($hRichEdit) Exit EndSwitch WEnd Func _SetEdit() $aPos = _GUICtrlRichEdit_GetSel($hRichEdit) $sData = _GUICtrlRichEdit_GetText($hRichEdit) If $sEditText <> $sData Then $sEditText = $sData Else Return EndIf _GUICtrlRichEdit_SetReadOnly($hRichEdit, True) Dim $aTags[2][3] = [['[b][/b]', 'bo', 0x000000], ['[img][/img]', '', 0x0FFF00]] For $i = 0 To UBound($aTags)-1 StringReplace($sData, $aTags[$i][0], '') $iC = @extended For $j = 1 To $iC $iPos = StringInStr($sData, $aTags[$i][0], 2, $j) _GUICtrlRichEdit_SetSel($hRichEdit, $iPos-1, $iPos + StringLen($aTags[$i][0])-1) If $iPos Then If $aTags[$i][1] <> '' Then _GUICtrlRichEdit_SetCharAttributes($hRichEdit, '+' & $aTags[$i][1]) EndIf _GUICtrlRichEdit_SetCharColor($hRichEdit, $aTags[$i][2]) EndIf Next _GUICtrlRichEdit_SetSel($hRichEdit, $aPos[0], $aPos[1]) _GUICtrlRichEdit_SetCharAttributes($hRichEdit, '-' & $aTags[$i][1]) ;_GUICtrlRichEdit_SetCharColor($hRichEdit, Default) Next _GUICtrlRichEdit_SetReadOnly($hRichEdit, False) EndFunc |
|
------- Отправлено: 02:00, 26-08-2012 | #5 |
Старожил Сообщения: 165
|
Профиль | Отправить PM | Цитировать Creat0R, спасибо ещё раз, правда в вашем коде есть ошибочка ([b]some text[/b] не выделяет), но я это исправлю сам.
|
Отправлено: 11:42, 26-08-2012 | #6 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Pavluha:
В первом сообщении указано «тег сд Исправить можно так: ... Dim $aTags[4][3] = [['[b]', 'bo', 0x000000], ['[/b]', 'bo', 0x000000], ['[img]', '', 0x0FFF00], ['[/img]', '', 0x0FFF00]] ... |
|
------- Отправлено: 12:23, 26-08-2012 | #7 |
Старожил Сообщения: 165
|
Профиль | Отправить PM | Цитировать Creat0R, я заметил, что если текста в поле очень много, то создаётся ненужная прокрутка текста (попробуйте написать текста столько, что он уже не вместиться весь и появиться прокрутка). Как это исправить.
И ещё. Если очень быстро печатать, то часть символов каким-то странным образом оказывается с правой стороны от курсора ввода. Поставил задержку 500 мс, и всё нормализовалось, правда не так быстро подсвечивается код. |
Последний раз редактировалось Pavluha, 26-08-2012 в 13:26. Отправлено: 12:42, 26-08-2012 | #8 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Pavluha:
Цитата:
Я делал это на скорую руку, тестировать особо времени не было. |
||
------- Отправлено: 13:37, 26-08-2012 | #9 |
Старожил Сообщения: 165
|
Профиль | Отправить PM | Цитировать Creat0R, вы не так поняли (или это я не так сказал). Сама полоска прокрутки нужна. Просто когда текста слишком много, а ты допечатываешь, то текст сам по себе прокручивается от начала до конца. Скорее всего, это из-за функции _GUICtrlRichEdit_SetSel
|
Последний раз редактировалось Pavluha, 26-08-2012 в 14:15. Отправлено: 13:58, 26-08-2012 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
2010 - [решено] Excel - отключить подсветку гиперссылок в ячейках | ipvinner | Microsoft Office (Word, Excel, Outlook и т.д.) | 16 | 22-05-2018 14:59 | |
Интерфейс - [решено] Как в windows 7 отключить подсветку иконок рабочего стола при наведении мышкой. | Activated | Оформление Windows 11/ 10 / 8 / 7 / Vista | 4 | 04-01-2013 13:05 | |
Win32 API - Поменять подсветку окна | 21h | Программирование и базы данных | 5 | 08-12-2010 22:41 |
|