|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Как реализовать подсветку кода? |
|
Как реализовать подсветку кода?
|
Старожил Сообщения: 165 |
Профиль | Отправить PM | Цитировать
Здравствуйте. В поле edit находиться текст с bb тегами. Нужно подсветить определённые теги определённым стилем (например, тег [IMG][/IMG] сдалать зелёным, а тег [b][/b] сделать жирным). Вопрос: как это реализовать. Подскажите пожалуйста. Заранее спасибо.
|
|
Отправлено: 18:11, 25-08-2012 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата AZJIO:
Немного ошибся с описанием функции. Но всё равно работать с файлом легче, не добавляются лишние теги. |
|
------- Последний раз редактировалось Creat0R, 31-08-2012 в 02:08. Отправлено: 23:55, 30-08-2012 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Вот так получилось:
#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GUIRichEdit.au3> Global $sStream_File = @TempDir & '\au3_rtf.tmp' $hGUI = GUICreate('_GUICtrlRichEdit_SetFormat Demo', 300, 200) $hRichEdit = _GUICtrlRichEdit_Create($hGUI, 'Some data with [img]image[/img] tags, [b]bold[/b], and [color]color[/color].', 20, 20, 260, 160, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL)) _GUICtrlRichEdit_StreamToFile($hRichEdit, $sStream_File) GUISetState(@SW_SHOW, $hGUI) While 1 _GUICtrlRichEdit_SetFormat() Switch GUIGetMsg() Case $GUI_EVENT_CLOSE _GUICtrlRichEdit_Destroy($hRichEdit) FileDelete($sStream_File) Exit EndSwitch WEnd Func _GUICtrlRichEdit_SetFormat() If Not _GUICtrlRichEdit_IsModified($hRichEdit) Then Return EndIf Local $aPos, $sRead, $sColorTbl _GUICtrlRichEdit_StreamToFile($hRichEdit, $sStream_File) $aPos = _GUICtrlRichEdit_GetSel($hRichEdit) $sRead = FileRead($sStream_File) $sColorTbl = '\red255\green0\blue0;\red0\green150\blue0;\red0\green0\blue255' ;red(cf1;green(cf2);blue(cf3) Dim $aTags[3][3] = [['b', '\b', '\cf0'], ['img', '', '\cf2'], ['color', '', '\cf1']] For $i = 0 To UBound($aTags) - 1 $sRead = StringRegExpReplace($sRead, '(\[' & $aTags[$i][0] & '\].*?\[/' & $aTags[$i][0] & '\])', '{\' & $aTags[$i][1] & '\' & $aTags[$i][2] & ' \1}') Next $sRead = '{\rtf1 {\colortbl ;' & $sColorTbl & ';}' & StringReplace(StringStripCR($sRead), @LF, @LF & '\par ') & '}' $hFile = FileOpen($sStream_File, 2) FileWrite($hFile, $sRead) FileClose($hFile) _GUICtrlRichEdit_StreamFromFile($hRichEdit, $sStream_File) _GUICtrlRichEdit_SetSel($hRichEdit, $aPos[0], $aPos[1]) _GUICtrlRichEdit_SetModified($hRichEdit, False) EndFunc |
------- Отправлено: 02:56, 31-08-2012 | #22 |
Старожил Сообщения: 165
|
Профиль | Отправить PM | Цитировать ещё вопросик: а как изменить фон определённых слов?
|
Отправлено: 13:37, 01-09-2012 | #23 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Pavluha:
|
|
------- Отправлено: 03:32, 03-09-2012 | #24 |
Старожил Сообщения: 165
|
Профиль | Отправить PM | Цитировать Creat0R, вот-вот. я сделал документ в ворде с фоном, сохранил в формате ртф, работает, даже в вордпэде правильно показывает. открываю я исходный код, а там....... короче я не разобрался. но фон ооочень нужен. без него нормальную подсветку не сделаешь.
|
Отправлено: 22:33, 05-09-2012 | #25 |
Старожил Сообщения: 165
|
Профиль | Отправить PM | Цитировать |
Последний раз редактировалось Pavluha, 12-09-2012 в 18:51. Отправлено: 18:42, 12-09-2012 | #26 |
Старожил Сообщения: 165
|
Профиль | Отправить PM | Цитировать Ещё вопрос (не обязательно, но всё же): нужно сделать так, чтобы подсвечивались url и при нажатии на них (например, ctrl + нажатие или, например, двойной клик по ссылке) открывалась страница с этим url. _GUICtrlRichEdit_AutoDetectURL ($hRichEdit, True) только подсвечивает.
|
Последний раз редактировалось Pavluha, 13-09-2012 в 21:18. Отправлено: 21:06, 13-09-2012 | #27 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Pavluha:
#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GUIRichEdit.au3> Global $sStream_File = @TempDir & '\au3_rtf.tmp' $hGUI = GUICreate('_GUICtrlRichEdit_SetFormat Demo', 300, 200) $hRichEdit = _GUICtrlRichEdit_Create($hGUI, 'Some data with [img]image[/img] tags, [b]bold[/b], and [color]color[/color].' & @LF & @LF & 'http://autoitscript.com', _ 20, 20, 260, 160, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL)) GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY") _GUICtrlRichEdit_AutoDetectURL($hRichEdit, True) _GUICtrlRichEdit_SetEventMask($hRichEdit, $ENM_LINK) _GUICtrlRichEdit_StreamToFile($hRichEdit, $sStream_File) GUISetState(@SW_SHOW, $hGUI) While 1 _GUICtrlRichEdit_SetFormat() Switch GUIGetMsg() Case $GUI_EVENT_CLOSE _GUICtrlRichEdit_Destroy($hRichEdit) FileDelete($sStream_File) Exit EndSwitch WEnd Func _GUICtrlRichEdit_SetFormat() If Not _GUICtrlRichEdit_IsModified($hRichEdit) Then Return EndIf Local $aPos, $sRead, $sColorTbl _GUICtrlRichEdit_StreamToFile($hRichEdit, $sStream_File) $aPos = _GUICtrlRichEdit_GetSel($hRichEdit) $sRead = FileRead($sStream_File) $sColorTbl = '\red255\green0\blue0;\red0\green150\blue0;\red0\green0\blue255;\red255\green255\blue0' ;red(cf1;green(cf2);blue(cf3);yellow(cf4) Dim $aTags[3][3] = [['b', '\b', '\cf0'], ['img', '', '\cf2 \highlight4'], ['color', '', '\cf1']] For $i = 0 To UBound($aTags) - 1 $sRead = StringRegExpReplace($sRead, '(\[' & $aTags[$i][0] & '\].*?\[/' & $aTags[$i][0] & '\])', '{' & StringReplace($aTags[$i][1] & $aTags[$i][2], '\', '\\') & ' \1}') ;$sRead = StringRegExpReplace($sRead, '\[url=(.*?)\](.*?)\[/url\]', '{\\field{\\*\\fldinst{HYPERLINK "\1"}}{\\fldrslt{\\cf3 \\ul \2}}}') Next $sRead = '{\rtf1 {\colortbl ;' & $sColorTbl & ';}' & StringReplace(StringStripCR($sRead), @LF, @LF & '\par ') & '}' $hFile = FileOpen($sStream_File, 2) FileWrite($hFile, $sRead) FileClose($hFile) _GUICtrlRichEdit_StreamFromFile($hRichEdit, $sStream_File) _GUICtrlRichEdit_SetSel($hRichEdit, $aPos[0], $aPos[1]) _GUICtrlRichEdit_SetModified($hRichEdit, False) EndFunc Func WM_NOTIFY($hWnd, $iMsg, $iWparam, $iLparam) #forceref $hWnd, $iMsg, $iWparam Local $hWndFrom, $iCode, $tNMHDR, $tEnLink, $cpMin, $cpMax, $tMsgFilter $tNMHDR = DllStructCreate($tagNMHDR, $iLparam) $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom")) $iCode = DllStructGetData($tNMHDR, "Code") Switch $hWndFrom Case $hRichEdit Select Case $iCode = $EN_LINK $tMsgFilter = DllStructCreate($tagMSGFILTER, $iLparam) If DllStructGetData($tMsgFilter, "msg") = $WM_LBUTTONUP Then $tEnLink = DllStructCreate($tagENLINK, $iLparam) $cpMin = DllStructGetData($tEnLink, "cpMin") $cpMax = DllStructGetData($tEnLink, "cpMax") ShellExecute(_GUICtrlRichEdit_GetTextInRange($hRichEdit, $cpMin, $cpMax)) EndIf EndSelect EndSwitch Return $GUI_RUNDEFMSG EndFunc |
|
------- Отправлено: 23:05, 13-09-2012 | #28 |
Старожил Сообщения: 165
|
Профиль | Отправить PM | Цитировать Creat0R, если ссылка находится в каком-либо теге, то она не подсвечивается, а ведь должна.
|
Отправлено: 19:47, 14-09-2012 | #29 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Pavluha:
|
|
------- Отправлено: 05:48, 15-09-2012 | #30 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|