Тема: AHK: Инкрементальный поиск в GUI
Доброго времени суток. Как в таком скрипте разбить вхождения в местах табуляции на три колонки и возможностью поиска по ним, а не как сейчас в общей колонке? Будет ли в таком формате скрипт быстро срабатывать на примерах до 2-х тысяч строк?
#NoEnv
SendMode, Input
SetBatchLines, -1
#SingleInstance Force
Process, Priority,, High
Box1 =
(
Östnyland ГЗТ 3356
АиФ Карелия (Петрозаводск) ГЗТ 0346
АиФ Кострома ГЗТ 0326
АиФ Магадан ГЗТ 0333
АиФ Минск ГЗТ 0336
АиФ Мурманск ГЗТ 0337
АиФ Петербург (Санкт-Петербург) ГЗТ 0347
АиФ Томск ГЗТ 0357
АиФ Юг (Краснодар) ГЗТ 0327
АиФ Ярославль ГЗТ 0370
АиФ в Бурятии (Улан-Уде) ГЗТ 0363
АиФ на Дону (Ростов) ГЗТ 0349
АиФ на Енисее (Красноярск) ГЗТ 0328
Аргументы и Факты (Москва) ГЗТ 0002
Белорусская военная газета ГЗТ 0233
Ваше здоровье ГЗТ 0261
Вести ГЗТ 0387
Витьбичи ГЗТ 0262
Газета по-українські ГЗТ 0375
Горизонт ГЗТ 0196
Гудок ГЗТ 0085
День (рус.) ГЗТ 0197
День (укр.) ГЗТ 0230
Жизнь ГЗТ 0210
Известия ГЗТ 0039
Коммерсантъ – Волгоград ГЗТ 0073
Коммерсантъ – Воронеж ГЗТ 0074
Коммерсантъ – Екатеринбург ГЗТ 0062
Коммерсантъ – Иркутск ГЗТ 0017
Коммерсантъ – Казань ГЗТ 0063
Коммерсантъ – Красноярск ГЗТ 0065
)
Gui, Add, ComboBox, vComboBox1 gComboBox1 w550 h300 Simple, % Box1 ; r10
Menu, MyContextMenu, Default, Открыть
Gui, Show, AutoSize
Return
GuiContextMenu:
if A_GuiControl <> ComboBox1
return
Menu, MyContextMenu, Show, %A_GuiX%, %A_GuiY%
return
GuiClose:
gui, submit, nohide
ExitApp
return
ComboBox1(CtrlHwnd) {
Global Box1
Static Replace
SendMessage, % 0x0147, 0, 0,, ahk_id %CtrlHwnd% ; CB_GETCURSEL
if A_GuiEvent = DoubleClick ;!!
GoSub, ContextOpenFile
If !((CB_ERR := ErrorLevel) < 0 || CB_ERR = 0xffffffff)
Return
GuiControlGet, Edit, , %CtrlHwnd%
If (Edit = "" && Replace)
{
GuiControl, , %CtrlHwnd%, % "`n" Box1
Return Replace := 0
}
GuiControl, -Redraw, %CtrlHwnd%
SendMessage, 0x0146, 0, 0, , ahk_id %CtrlHwnd% ; CB_GETCOUNT
Loop, %ErrorLevel%
SendMessage, 0x0144, 0, , , ahk_id %CtrlHwnd% ; CB_DELETESTRING
Loop, Parse, Box1, `n
If (A_LoopField ~= "i)\Q" Edit "\E.*$" && (Text := A_LoopField) != "")
SendMessage, 0x014A, 0, &Text , , ahk_id %CtrlHwnd% ; CB_INSERTSTRING
GuiControl, +Redraw, %CtrlHwnd%
Replace := 1
}
Return