1 (изменено: serzh82saratov, 2013-04-28 21:55:36)

Тема: AHK: Авто размер GUI, в зависимости от "Text"

Господа, есть окно

Gui, +AlwaysOnTop
Gui, -Border
Gui, Color,  Blue
Gui, Show, NoActivate x0 y0 w135 h70
Gui, font, s22
Gui, Add, Text, cWhite, 1234567
Sleep, 600
Gui, Destroy

Как сделать чтоб в зависимости от разного содержимого в "Text"  (текст в одну строку), автоматом подбиралась ширина окна с одинаковыми отступами по бокам?
Справку читал несколько раз, не доходит.

----

Решение: 33 пост

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

2

Re: AHK: Авто размер GUI, в зависимости от "Text"

Как-то так?

Gui, +AlwaysOnTop -Border
Gui, Color,  Blue
Gui, font, s22
Gui, Add, Text, cWhite, 1234567
Gui, Show, NoActivate x0 y0

3

Re: AHK: Авто размер GUI, в зависимости от "Text"

Большое спасибо

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4

Re: AHK: Авто размер GUI, в зависимости от "Text"

GuiConfig:
Gui, Destroy
Gui, +AlwaysOnTop -Border +ToolWindow +Disabled
Gui, Color,  Blue
Gui, font, s22 cWhite
Gui, Add, Text, , %Config%
Gui, Show, NoActivate x5 y5
Return
1::
Config = ...
Gosub, GuiConfig
Return
2::
Config = Очень длинный текст
Gosub, GuiConfig
Return

Как сделать чтоб окно не мелькало, то есть видимо без использования Gui, Destroy.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5 (изменено: creature.ws, 2012-09-01 15:52:50)

Re: AHK: Авто размер GUI, в зависимости от "Text"

Если длинна текста изменяется и требуется  при каждом изменении подгонять размер окна под текст — без нетривиальных ухищрений избежать Gui, Destroy не удастся.
Варианты предложены здесь

6

Re: AHK: Авто размер GUI, в зависимости от "Text"

creature.ws пишет:

Если длинна текста изменяется и требуется  при каждом изменении подгонять размер окна под текст — без нетривиальных ухищрений избежать Gui, Destroy не удастся.

Значит зря я голову ломал. Без Вашей помощи не обуйдусь. Подскажите как.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7

Re: AHK: Авто размер GUI, в зависимости от "Text"

Варианты предложены здесь

Даа, сложновато.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

8

Re: AHK: Авто размер GUI, в зависимости от "Text"

Интересно как окно получает ширину исходя из содержимого текста и величины шрифта, перед тем как появится. Получить бы эту формулу, и вопрос решён.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

9

Re: AHK: Авто размер GUI, в зависимости от "Text"

В сообщении #15, рабочий пример ведь приведен.

10

Re: AHK: Авто размер GUI, в зависимости от "Text"

creature.ws пишет:

В сообщении #15, рабочий пример ведь приведен.

Мало что в нём понятно, да и хотелось бы более "лёгкое" решение для казалось бы простой задачи.

GuiControl, Delete (not yet implemented): This sub-command does not yet exist. As a workaround, use Hide and/or Disable (above), or destroy and recreate the entire window via Gui Destroy.

Когда же это добавят...

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

11 (изменено: creature.ws, 2012-09-01 21:17:16)

Re: AHK: Авто размер GUI, в зависимости от "Text"

Возможности «включить» одной «галочкой» «автоматическое изменение размеров окна под размер дочерних окон при изменении их размера» нет.
Решение вопроса есть, но вы предпочитаете сетовать на отсутствие «фич» не имеющих к решению отношения.

Пример:

text := "123"
index := 1
marginX := marginY := 5
SysGet, XBORDER , % SM_CXBORDER := 5
SysGet, YBORDER , % SM_CYBORDER := 6
SysGet, XEDGE , % SM_CXEDGE := 45
SysGet, YEDGE , % SM_CYEDGE := 46
borderX := XBORDER+XEDGE
borderY := YBORDER+YBORDER

Gui, +AlwaysOnTop -Border +ToolWindow +Disabled +LastFound +HWNDguiHWND
Gui, Color,  Blue
Gui, Margin, %marginX%, %marginY%
Gui, font, s15 cWhite, Arial
Gui, Add, Text, vText, %text%
Gui, Show, NoActivate x5 y5

SetTimer, ChangeText_ResizeWindow, 50
return

ChangeText_ResizeWindow:
    text .=  Mod(++index, 12 )? index : "`n123"
    pResult := GetTextSize(text, "Arial", "s15")
    w := NumGet(pResult+0, 0, "UInt")
    h := NumGet(pResult+0, 4, "UInt")
    WinMove, ahk_id %guiHWND%,,,, w + marginX*2 + borderX*2, h + marginY*2 + borderY*2
    GuiControl, Move, Text, w%w% h%h%
    GuiControl,, Text, %text%
    return

Esc::Exitapp

GetTextSize(String, FontName, Options)
{
    static SIZE
    coding := A_IsUnicode ? "W" : "A"
    LOGPIXELSY := 90
    FW_NORMAL := 400, FW_BOLD := 700
    DEFAULT_CHARSET := 1
    DEFAULT_QUALITY := OUT_DEFAULT_PRECIS := CLIP_DEFAULT_PRECIS := 0

    if !RegExMatch(Options, "i).*s(\d+).*", Found)
    {
        MsgBox, Не задан размер шрифта!
        Return
    }
    s := Found1

    if !InStr(Options, "bold")
    {
        if !RegExMatch(Options, "i).*w(\d+).*", Found)
            w := FW_NORMAL
        Else
            w := Found1
    }
    Else
        w := FW_BOLD
    if w not Between 1 and 1000
    {
        MsgBox, Неверно задан параметр w.`nДолжен быть в пределах от 1 до 1000
        Return
    }

    italic     := InStr(Options, "italic") > 0
    underline := InStr(Options, "underline") > 0
    strike     := InStr(Options, "strike") > 0

    hDC := DllCall("GetDC", UInt, 0)

    nHeight := -DllCall("MulDiv", Int, s
                        , Int, DllCall("GetDeviceCaps", UInt, hDC, Int, LOGPIXELSY), Int, 72)
    hFont := DllCall("CreateFont" . coding
                                          , Int, nHeight, Int, 0
                                          , Int, 0, Int, 0, Int, w
                                          , UInt, italic, UInt, underline, UInt, strike
                                          , UInt, DEFAULT_CHARSET, UInt, OUT_DEFAULT_PRECIS
                                          , UInt, CLIP_DEFAULT_PRECIS, UInt, DEFAULT_QUALITY
                                          , UInt, 0, Str, FontName)

    hPrevObj := DllCall("SelectObject", UInt, hDC, UInt, hFont)

    VarSetCapacity(Buf, 40)
    DllCall("GetTextFace" . coding, UInt, hDC, Int, 40, Str, Buf)
    if (Buf != FontName)
    {
        FreeMemory(hPrevObj, hDC, hFont)
        MsgBox, Указанный шрифт не поддерживается системой!
        Return
    }

    VarSetCapacity(SIZE, 8)
    width = 0
    Loop, parse, String, `n, `r
    {
        DllCall("GetTextExtentPoint32" . coding
            , UInt, hDC, Str, A_LoopField, Int, StrLen(A_LoopField), Ptr, &SIZE)
        width := (r := NumGet(SIZE, 0, "UInt")) > width ? r : width
        n := A_Index
    }
    h := NumGet(SIZE, 4, "UInt")
    NumPut(width, SIZE, "UInt"), NumPut(h*n, SIZE, 4, "UInt")
    FreeMemory(hPrevObj, hDC, hFont)
    Return &SIZE
}

FreeMemory(hPrevObj, hDC, hFont)
{
    DllCall("SelectObject", UInt, hDC, UInt, hPrevObj)
    DllCall("ReleaseDC", UInt, 0, UInt, hDC)
    DllCall("DeleteObject", UInt, hFont)
}

12

Re: AHK: Авто размер GUI, в зависимости от "Text"

предпочитаете сетовать на отсутствие «фич» не имеющих к решению отношения.

Почему не имеющих к решению отношения? Разве так не сработало бы?

GuiConfig:
GuiControl, Delete, Message
Gui, +AlwaysOnTop -Border +ToolWindow +Disabled
Gui, Color,  Blue
Gui, font, s22 cWhite
Gui, Add, Text, vMessage, %Config%
Gui, Show, NoActivate AutoSize x5 y5
Return
1::
Config = ...
Gosub, GuiConfig
Return
2::
Config = Очень длинный текст
Gosub, GuiConfig
Return

...

Спасибо за пример, всё работает. Я бы сам не адаптировал.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

13

Re: AHK: Авто размер GUI, в зависимости от "Text"

Разве так не сработало бы?

Команды такой нет, о чем может быть разговор?

14 (изменено: serzh82saratov, 2012-09-01 21:51:48)

Re: AHK: Авто размер GUI, в зависимости от "Text"

Команды такой нет, о чем может быть разговор?

Так в справке и написано - GuiControl, Delete (еще не реализовано): Эта суб-команда еще не существует
Видимо когда-то появится

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

15 (изменено: creature.ws, 2012-09-01 22:00:16)

Re: AHK: Авто размер GUI, в зависимости от "Text"

Появится реализация, что эта реализация будет «предоставлять пользователю» будет известно после. Делиться домыслами смысла не вижу, обсуждать как потенциальную  альтернативу — тем более.

16

Re: AHK: Авто размер GUI, в зависимости от "Text"

С окном понятно. А если у меня в окне "GroupBox", а уже в нём "Text"?  Убрал все "w", но что-то не получается добиться, чтобы "GroupBox" вслед за "Text" расширялся, если строка такой длины, что не умещается.  Это вообще возможно сделать?

17

Re: AHK: Авто размер GUI, в зависимости от "Text"

Хороший вопрос «возможно ли» почаще используйте.

У вас есть дочернее окно содержащее текст, нужный размер дочернего окна при изменении текста расчитывается GetTextSize
«Размер» прямоугольника это ширина и высота. Нужно изменить размер — новые значения размера известны — изменяете.
Нужно изменить размер прочих дочерних окон? — изменяйте и прочие.

Задача с двумя прямоугольниками с фиксированными координатами левого верхнего угла, 3-й класс?

18

Re: AHK: Авто размер GUI, в зависимости от "Text"

"GetTextSize"? Это что? На http://www.script-coding.com/AutoHotkey/CommandList.html нет ничего подобного. Откуда Вы каждый раз какие-то новые операторы берёте? Дайте ссылку на список всех комманд, пожалуйста!


  "Огласите, пожалуйста весь список!" (с)     Может там и gibmy1M$ есть?

19 (изменено: creature.ws, 2012-09-07 00:26:47)

Re: AHK: Авто размер GUI, в зависимости от "Text"

С окном понятно

Откуда Вы каждый раз какие-то новые операторы берёте?

Эти фразы противоречивы. Какой верить?

чтобы "GroupBox" вслед за "Text" расширялся

Формулировку эту я трактую как «изменение размера GroupBox пропорционально изменению размера Text»
Если же речь о задании относительных координат дочерних окон при создании родительского окна — соответствующий параграф в справке есть.

exampleText := "
(
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
)"
Gui, Margin, 30, 30
Gui, Add, Text,, %exampleText%
Gui, Add, GroupBox, xp-10 yp-20 wp+20 hp+40, LoremBox
Gui, Show

20

Re: AHK: Авто размер GUI, в зависимости от "Text"

creature.ws пишет:

Эти фразы противоречивы. Какой верить?

Я имел ввиду, что мне удалось заставить окно подстраиваться под длину текста без дополнительных усилий и каких либо специальных ухищрений.  Поэтому в код поста #11 я не вникал. Теперь понял откуда взялся "GetTextSize".

чтобы "GroupBox" вслед за "Text" расширялся

Формулировку эту я трактую как «изменение размера GroupBox пропорционально изменению размера Text»

Да, правильно. Я пытаюсь вынести в Gui путь к файлу. Сделал GroupBox на глазок шириной в 250 пикселей. Но если файл закопан достаточно глубоко или имена папок длинные, то получается отвратная картина.

Убрал w250 :

stroka1 = C:\Alternative\Files\abrakadabra\MyFileNomer1000762.txt
Gui, Add, GroupBox, x3 y3 h590, Раздел 1
Gui, Add, Text, x8 y25, %stroka1%
Gui, Show

Лучше не стало:
http://s017.radikal.ru/i425/1209/6d/ed1948a2ac3f.jpg


Вот я и хочу, чтобы GroupBox и самое окно Gui менялись в зависимости от длины текста. Скажем для GroupBox от минимальных 170 пикселей до максимальных 400.

21 (изменено: creature.ws, 2012-09-07 02:22:39)

Re: AHK: Авто размер GUI, в зависимости от "Text"

чтобы "GroupBox" вслед за "Text" расширялся

Формулировку эту я трактую как «изменение размера GroupBox пропорционально изменению размера Text»

Да, правильно.

При создании дочернего окна оно «уже» нужного размера тут нет «изменения». Так что, не «да»

чтобы GroupBox и самое окно Gui менялись в зависимости от длины текста

Менялись после создания родительского окна при изменении размеров блока текста отображаемого в дочернем окне? — GetTextSize и математика в помощь.
Чтоб GroupBox при создании окна очерчивал Text — Пример в сообщении.

22

Re: AHK: Авто размер GUI, в зависимости от "Text"

GetTextSize измеряем размер текста
GuiControl, Move изменяем GroupBox

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

23

Re: AHK: Авто размер GUI, в зависимости от "Text"

creature.ws пишет:

чтобы GroupBox и самое окно Gui менялись в зависимости от длины текста

Менялись после создания родительского окна при изменении размеров блока текста отображаемого в дочернем окне? — GetTextSize и математика в помощь.
Чтоб GroupBox при создании окна очерчивал Text — Пример в сообщении.

Теперь понятно. Я почему-то пытался вложить Text в GroupBox, чтобы он ему "принадлежал".  Что-то похожее я делал в Delphi лет 18 назад.   А тут всё по-другому.

  Спасибо, пример из сообщения отлично выполняет половину поставленной задачи. Теперь попытаюсь понять, как ограничить максимум и минимум.

24

Re: AHK: Авто размер GUI, в зависимости от "Text"

GuiControl, Delete (not yet implemented):

Когда же это добавят...

Gui Margin, 20, 20
Gui Add, text, hwndhStatic, текст исчезнет через 3 секунды
Gui Show
Sleep 3000
Gui New, hwndhTrash
DllCall("SetParent", "Ptr", hStatic, "Ptr", hTrash)
Gui %hTrash%: Destroy
Sleep 1000
ExitApp

25

Re: AHK: Авто размер GUI, в зависимости от "Text"

Gui Margin, 20, 20
Gui Add, text, hwndhStatic, текст исчезнет через 3 секунды
Gui Show
Sleep 3000
DllCall("DestroyWindow", "Ptr", hStatic)
Sleep 1000
ExitApp
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

26

Re: AHK: Авто размер GUI, в зависимости от "Text"

Удаление hwnd, это интересно.
А это может как-то решить сабж?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

27

Re: AHK: Авто размер GUI, в зависимости от "Text"

Не знаю, ссылка на пример же была дана. Там функция для определения размера текста.

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

28

Re: AHK: Авто размер GUI, в зависимости от "Text"

Не знаю, ссылка на пример же была дана

Не очень нравится как оно работает, не много тормознуто и не всегда ровно.

А как (где, зачем) в принципе можно использовать удаление hwnd?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

29

Re: AHK: Авто размер GUI, в зависимости от "Text"

Удаление можно использовать для изменения вида GUI, если есть уверенность, что удаляемый контрол больше не понадобится.

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

30

Re: AHK: Авто размер GUI, в зависимости от "Text"

То есть исключительно для освобождения ресурсов?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

31

Re: AHK: Авто размер GUI, в зависимости от "Text"

Точно.

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

32 (изменено: serzh82saratov, 2013-04-29 03:07:59)

Re: AHK: Авто размер GUI, в зависимости от "Text"

teadrinker
Эх, над дилетантом подшучиваете


Gui, -Border
Gui, Font, s22
Gui Add, Text, hwndhStatic
Return

Space::
    DllCall("DestroyWindow", "Ptr", hStatic)
    Gui Add, Text, hwndhStatic x10 y15, % (T := !T) ? "..." : "Очень длинный текст "
    GuiControlGet, Pos, Pos, %hStatic% 
    Gui, Show, % "x5 y5 w" PosX*2+PosW " h" PosY*2+PosH
    Return

Для решения задачки вроде подходит. Или я что-то снова недопонял...

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

33 (изменено: serzh82saratov, 2013-04-28 22:42:40)

Re: AHK: Авто размер GUI, в зависимости от "Text"

Решение:

 
Gui +AlwaysOnTop +ToolWindow -0x400000 +E0x08000000
Gui Font, % "s" Font := 22  
Gui Color, FF8C00

Space::
    DllCall("DestroyWindow", "Ptr", hText)
    Gui Add, Text, hwndhText x%Font% y%Font%, % (T := !T) ? "..." : "Очень`n             длинный текст"  
    Gui Show, NA x5 y5 AutoSize
    Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

34 (изменено: serzh82saratov, 2013-04-27 16:40:53)

Re: AHK: Авто размер GUI, в зависимости от "Text"

Решил сделать своеобразный ToolTip.
И вопросик появился:  возможно ли как-то сделать его поверх всех окон? То есть и поверх тех что тоже имеют стиль "AlwaysOnTop".



#SingleInstance force   

Space::
    Gui, +AlwaysOnTop -0x400000 +E0x08000000 
    Gui, Color, % T ? "95746A" : "FF8C00"
    Gui, Font, % "Italic s" (T ? "18 cWhite": "200 c95746A"), Times New Roman
    DllCall("DestroyWindow", "Ptr", hStatic)
    Gui Add, Text, hwndhStatic x20 y20 Center, % (T := !T) ? "..." : "Очень`n`nдлинный текст" 
    GuiControlGet, Pos, Pos, %hStatic%    
    MouseGetPos, mX, mY
    Gui, Show, % "NA x" mX+15 " y" mY+15 " w" PosX*2+PosW " h" PosY*2+PosH
    Return
    
Esc::
    GuiClose:
    ExitApp  

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

35 (изменено: serzh82saratov, 2013-04-28 23:27:40)

Re: AHK: Авто размер GUI, в зависимости от "Text"

Использование клона окна для относительного позиционирования контролов, и перерисовки окна:


Gui Add, Text, Center vText
Gui, Add, GroupBox, Center vGroupBox
Gui, Add, Button, vButton1 
Gui, Add, Button, vButton2 
Gui, Add, Button, vButton3
Gui, Show
Gosub Space
Return 
    
Space::
    Text := (T := !T) ? "наблюдаем " : "`n`n`n`nза поведением текста`n`n`n`nи кнопок`n`n`n`n"
    Button := (T) ? "min" : "MAXIMIZE" 
    Gui, Clo:Add, Text, vText xm+10 ym+30 Center, % Text
    Gui, Clo:Add, GroupBox, vGroupBox xp-10 ys-20 wp+20 hp+30
    Gui, Clo:Add, Button, vButton2 x+15 y+15 Section, % Button
    Gui, Clo:Add, Button, vButton1 xm ys, % Button
    Gui, Clo:Add, Button, vButton3 xs ym, % Button
    GuiControl, , % Move("Text"), % Text 
    GuiControl, , % Move("Button1"), % Button
    GuiControl, , % Move("Button2"), % Button
    GuiControl, , % Move("Button3"), % Button 
    GuiControl, , % Move("GroupBox"), % Button 
    Gui, Clo:Destroy 
    Gui, Show, AutoSize
    Return 
    
Move(Control) {
    GuiControlGet, Pos, Clo:Pos, % Control
    GuiControl, Move, % Control, w%Posw% h%Posh% x%Posx% y%Posy%   
    Return Control
} 

Или:


Space::
    Text := (T := !T) ? "наблюдаем " : "`n`n`n`nза поведением текста`n`n`n`nи кнопок`n`n`n`n"
    Button := (T) ? "min" : "MAXIMIZE" 
    
    DllCall("DestroyWindow", "Ptr", hText)
    Gui Add, Text, xm+10 ym+30 Center hwndhText, % Text
    
    DllCall("DestroyWindow", "Ptr", GroupBox)
    Gui, Add, GroupBox, xp-10 yp-20 wp+20 hp+30 Center hwndGroupBox, % Button
    
    DllCall("DestroyWindow", "Ptr", Button1 )
    Gui, Add, Button, hwndButton1  x+15 y+15 Section, % Button
    
    DllCall("DestroyWindow", "Ptr", Button2)
    Gui, Add, Button, hwndButton2 xm ys, % Button
    
    DllCall("DestroyWindow", "Ptr", Button3)
    Gui, Add, Button, hwndButton3 xs ym+15, % Button
    
    Gui, Show, AutoSize 
    Return 

Есть идеи попроще?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

36

Re: AHK: Авто размер GUI, в зависимости от "Text"

Как сделать чтоб окно не мелькало, то есть видимо без использования Gui, Destroy.

Лишний раз выполнить команду Gui, Show, AutoSize.

37

Re: AHK: Авто размер GUI, в зависимости от "Text"

ypppu
Сильно похоже на голую теорию.
Вы код можете привести?

--------------

Это как раз было первым что пришло в голову, и сразу ушло:

Space::
    Gui, +AlwaysOnTop -0x400000 +E0x08000000 
    Gui, Color, % T ? "95746A" : "FF8C00"
    Gui, Font, % "Italic s" (T ? "18 cWhite": "200 c95746A"), Times New Roman 
    Gui Add, Text, x20 y20 Center, % (T := !T) ? "..." : "Очень`n`nдлинный текст"  
    Gui, Show, AutoSize
    Return
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

38

Re: AHK: Авто размер GUI, в зависимости от "Text"

Это был ответ на вопрос о том, как сделать чтоб окно не мелькало, то есть без использования Gui, Destroy.

Gui, +AlwaysOnTop -Border +ToolWindow +Disabled
Gui, Color,  Blue
Gui, font, s22 cWhite
Gui, Add, Text, vMyText, Text0
Gui, Show, NoActivate x5 y5
Return

1::
Config = ...
w := 100
Gosub, GuiConfig
Return

2::
Config = Очень длинный текст
w := 400
Gosub, GuiConfig
Return

GuiConfig:
GUIControl, , MyText, %Config%
GuiControl, MoveDraw, MyText, w%w%
Gui, Show, AutoSize

39

Re: AHK: Авто размер GUI, в зависимости от "Text"

ypppu
ну задавая ширину тексту конечно-же всё просто и очевидно (хотя подобрать под каждый, и чтобы всё ровно было... способ не айс). Речь то про то, что текст заранее неизвестен.

Но напоминание про AutoSize немного помогло упростить код из 35 поста

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

40 (изменено: serzh82saratov, 2013-04-28 22:57:31)

Re: AHK: Авто размер GUI, в зависимости от "Text"

http://xbmc.ru/forum/images/smilies/facepalm.gif
Да и сабж упрощает тоже:


Gui +AlwaysOnTop +ToolWindow -0x400000 +E0x08000000
Gui Font, % "bold italic cWhite s" Font := 32, Times New Roman  
Gui Color, 696969

Space::
    DllCall("DestroyWindow", "Ptr", hText)
    Gui Add, Text, hwndhText x%Font% y%Font%, % (T := !T) ? "..." : "Очень`n             длинный текст"  
    Gui Show, NA x5 y5 AutoSize
    Return

,

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui