1

Тема: AHK: Увеличение окна GUI по мере ввода текста

Следующий код преобразует цифры в слова в окне GUI. После ввода 5-строки, высота окна остается фиксированной. Как добавить возможность увеличения окна вниз, по мере ввода?

Gui, +AlwaysOnTop +ToolWindow hwndMainWin
Gui, Color, F5F5F5
Gui, Font, S11, Tahoma
Gui, Add, Edit, w250 vn number hwndhEdit
Gui, Font, s11, Tahoma
Gui, Add, Text, vGuiText1 y43 x16 w303 h84  ;+0x201
obj := {h: hEdit}
obj.f := fn := Func("SetDots").Bind(obj)
GuiControl, +g, %hEdit%, % fn
Gui, Show,, 
Return

GuiClose:
   ExitApp

SetDots(obj)  {
   GuiControl, -g, % obj.h
   GuiControlGet, num,, % obj.h
   num := StrReplace(num, " ")

   n := num
   n:=RegExReplace(n,"0", "ноль`n")
   n:=RegExReplace(n,"1", "один`n")
   n:=RegExReplace(n,"2", "два`n")
   n:=RegExReplace(n,"3", "три`n")
   n:=RegExReplace(n,"4", "четыре`n")
   n:=RegExReplace(n,"5", "пять`n")
   n:=RegExReplace(n,"6", "шесть`n")
   n:=RegExReplace(n,"7", "семь`n")
   n:=RegExReplace(n,"8", "восемь`n")
   n:=RegExReplace(n,"9", "девять`n")

   GuiControl, , GuiText1, %n%

   GuiControl,, % obj.h, % RegExReplace(num, "\d(?=(\d{3})+$)", "$0 ")
   Send {End}
   fn := obj.f
   GuiControl, +g, % obj.h, % fn
}

2

Re: AHK: Увеличение окна GUI по мере ввода текста

Gui, +AlwaysOnTop +ToolWindow hwndMainWin -dpiscale
Gui, Color, F5F5F5
Gui, Font, S11, Tahoma
Gui, Add, Edit, w250 vn number hwndhEdit
Gui, Font, s11, Tahoma
Gui, Add, Text, vGuiText1 y43 x16 w303 ,  ;+0x201
obj := {h: hEdit}
obj.f := fn := Func("SetDots").Bind(obj)
GuiControl, +g, %hEdit%, % fn
Gui, Show,,
GuiControlGet,H,Pos,GuiText1
GuiControl, , GuiText1,
WinGetPos, X, Y, Width, Height, ahk_id %MainWin%
global MainWin,HH,Height
Return

GuiClose:
  ExitApp
  return

SetDots(obj)  {
  GuiControl, -g, % obj.h
  GuiControlGet, num,, % obj.h
  num := StrReplace(num, " ")

  n := num
  n:=RegExReplace(n,"0", "ноль`n")
  n:=RegExReplace(n,"1", "один`n")
  n:=RegExReplace(n,"2", "два`n")
  n:=RegExReplace(n,"3", "три`n")
  n:=RegExReplace(n,"4", "четыре`n")
  n:=RegExReplace(n,"5", "пять`n")
  n:=RegExReplace(n,"6", "шесть`n")
  n:=RegExReplace(n,"7", "семь`n")
  n:=RegExReplace(n,"8", "восемь`n")
  n:=RegExReplace(n,"9", "девять`n")

  GuiControl, , GuiText1, %n%

  static c
  c++
  WinMove, ahk_id %MainWin%,,,,,% Height+HH*c
  GuiControlGet,Pos,Pos,GuiText1
  GuiControl,Move,GuiText1,% "h" PosH+HH*c

  GuiControl,, % obj.h, % RegExReplace(num, "\d(?=(\d{3})+$)", "$0 ")
  Send {End}
  fn := obj.f
  GuiControl, +g, % obj.h, % fn
}

esc::exitapp
Win 10 x64
AHK
                       Справка AHK v1 тебе в помощь.

3

Re: AHK: Увеличение окна GUI по мере ввода текста

Спасибо!

4

Re: AHK: Увеличение окна GUI по мере ввода текста

Alectric
Попробуйте поудалять цифры бэкспейсом.

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