1

Тема: AHK: Цвет текста

Доброго времени суток.
Посоветуйте решение.

+ открыть спойлер

#SingleInstance force

Gui, Add, edit, x140 y140 r5 w200 h200 ReadOnly ,
(
22222222222
2222222
5555555555
5555
55555
55555555
555555
222222222
22222222222
)


Gui, Show, Center w475 h400, New GUI Window
Return

GuiClose:
ExitApp

Прокрутку текста сделал через "Edit"
Но есть проблема,нужно что бы  "2" был красного цвета а "5" зеленого или любого другого цвета без разницы.
Через "Font" не получилось он захватывает весь текст, или я что-то не правильно делаю.

Помогите это реализовать,или возможно есть альтернатива "Edit".

Заранее благодарен.

2

Re: AHK: Цвет текста

Не очень понятно, как связан заголовок и вопрос. Или я вопроса не понял.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3 (изменено: RedBishep, 2018-07-02 19:29:18)

Re: AHK: Цвет текста

Ммм. извиняюсь если не понятно объяснил..попробую более подробно.

Я сделал прокрутку текста в окошке "Edit".
Т.е. сколько хочешь можешь туда писать текста он "наверное" весь поместиться.. и можешь прокручивать его вниз вверх и читать а окошко само остаётся маленьким не занимает весь экран.
А вопрос.. как сделать отдельные части текста цветным.. пол текста красным например а остальную часть зелёную.

Или есть  другая альтернатива, о которой я незнаю.

4

Re: AHK: Цвет текста

Так у вас заголовок о прокрутке, а вопрос о цвете. Не логичнее ли было бы назвать как-нибудь "изменение цвета части текста в Edit"?

В Edit никак. Можно использовать RichEdit, но он нативно в AHK не поддерживается, им придётся управлять через DllCall или com-объекты.
В зависимости от цели можно использовать ListView, в нём путём некоторых ухищрений можно раскрасить строки разным цветом.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Цвет текста

teadrinker пишет:

Можно использовать RichEdit, но он нативно в AHK не поддерживается, им придётся управлять через DllCall или com-объекты.

Вот это: cRichEdit - Standard RichEdit control for AutoHotkey scripts - Scripts and Functions - AutoHotkey Community, это: GitHub - AHK-just-me/Class_RichEdit: AHK RichEdit Control, это: Autohotkey-Scripts/RichEdit.ahk at master · dufferzafar/Autohotkey-Scripts · GitHub в качестве враппера не подойдёт?

6

Re: AHK: Цвет текста

teadrinker пишет:

В зависимости от цели можно использовать ListView, в нём путём некоторых ухищрений можно раскрасить строки разным цветом.

Если можно пример\шаблон привидите с "ListView"  как это сделать правильно в моей ситуации.

7 (изменено: teadrinker, 2018-07-03 02:36:02)

Re: AHK: Цвет текста

А, забыл, ещё можно через ActiveX-control htmlfile:

html =
(
<style>
   .red {
      color: 'red';
   }
   .lime {
      color: 'lime';
   }
</style>
<body>
   <span class="red">22222222222<br>
   2222222<br></span>
   <span class="lime">5555555555<br>
   5555<br>
   55555<br>
   55555555<br>
   555555<br></span>
   <span class="red">222222222<br>
   22222222222</span>
</body>
)

Gui, Margin, 0, 0
Gui, Add, ActiveX, vText w475 h400, htmlfile
Text.write(html)
Gui, Show
Return

GuiClose:
   ExitApp

C ListView пример есть, но не мой, я не разбирался:

#SingleInstance,Force
Gui, +LastFound
Gui, Add, ListView, x5 y5 w200 h200 vLV_Sample hwndlv,Номер|День
lv:=new ListView(lv)
LV.Add("",1,"Понедельник")
LV.Add("",2,"Вторник")
LV.Add("",3,"Среда")
LV.Add("",4,"Четверг")
LV.Add("",5,"Пятница")
LV.Add("",6,"Субота")
LV.Add("",7,"Воскресенье")
Gui,Show, w210 h210

lv.Color(1,0xA8FFFF,0xC030FF)

lv.Color(3,0xA8FFFF,0xA8FF84)

WinSet,Redraw,,A
Return 
GuiClose:
GuiEscape:
Exitapp
class ListView{
    static list:=[]
    __New(hwnd){
        this.list[hwnd]:=this
        OnMessage(0x4e,"WM_NOTIFY")
        this.hwnd:=hwnd
        this.control:=[]
    }
    add(options,items*){
        Gui,ListView,% this.hwnd
        for a,b in items{
            if A_Index=1
                item:=LV_Add(options,b)
            Else
                LV_Modify(item,"col" A_Index,b)
        }
    }
    clear(){
        this.control:=[]
    }
    Color(item,fore="",back=""){
        LV_GetText(text,item)
        if fore!=""
            this.Control[text,"fore"]:=fore
        if Back!=""
            this.Control[text,"back"]:=back
    }
}
WM_NOTIFY(Param*){
    Critical
    if (this:=ListView.list[NumGet(Param.2)])&&(NumGet(Param.2,2*A_PtrSize,"int")=-12){
        stage:=NumGet(Param.2,3*A_PtrSize,"uint")
        if (stage=1)
            return 0x20 ;sets CDRF_NOTIFYITEMDRAW
        if (stage=0x10001){ ;NM_CUSTOMDRAW && Control is in the list
            index:=numget(Param.2,A_PtrSize=4?9*A_PtrSize:7*A_PtrSize,"uint")
            LV_GetText(text,index+1)
            info:=this.Control[text]
            if info.fore!=""
                NumPut(info.fore,Param.2,A_PtrSize=4?12*A_PtrSize:10*A_PtrSize,"int") ;sets the foreground
            if info.back!=""
                NumPut(info.back,Param.2,A_PtrSize=4?13*A_PtrSize:10.5*A_PtrSize,"int") ;sets the background
        }
    }
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8

Re: AHK: Цвет текста

teadrinker пишет:

А, забыл, ещё можно через ActiveX-control htmlfile:

Спасибо большое  есть над чем подумать и разобраться.=)

9

Re: AHK: Цвет текста

OFF: В 7ом сообщении жму кнопку "Копировать код" около нижнего кода, а копируется верхний. А, например, в этом сообщении каждая кнопка копирования соответствует своему коду. В чём подвох?

10

Re: AHK: Цвет текста

У меня в 7 соответствует, по крайней мере в FF.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11

Re: AHK: Цвет текста

Windows 7 SP1, FF 52.7.2 (64-бит).

12

Re: AHK: Цвет текста

У меня тоже в порядке FF 61.0.