Что нового

Позиционирование текста в элементе Input

vovsla

Осваивающий
Сообщения
607
Репутация
36
Есть элемент формы
Код:
$Input1 = GUICtrlCreateInput("Описание", 10, 242, 965, 21)


При выборе пункта меню в элемент $Input1 прописывается текст.
Код:
GUICtrlSetData($Input1, $Text)


Если текст длиннее, чем элемент, то видна концовка текста, а начала не видно.
Как сделать чтобы в элементе отображалось начало текста?
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Код:
$Input1 = GUICtrlCreateInput("Описание", 10, 242, 965, 21, $ES_LEFT )
 
Последнее редактирование:

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Стоит отметить, что дело не в $ES_LEFT, он и так задан по умолчанию. Дело в том что также по умолчанию задан и стиль $ES_AUTOHSCROLL (который и прокручивает текст в конец), поэтому если задать только $ES_LEFT, то стиль $ES_AUTOHSCROLL не будет задан.

Кстати текст можно подогнать под ширину элемента (если конечно не нужно потом его считывать):
Код:
#include <GUIConstantsEx.au3>
#include <WinAPIShPath.au3>

$hGUI = GUICreate('Test Script', 300, 200)

$sStr = ''

For $i = 1 To 100
    $sStr &= ($i = 100 ? 'z' : 'a')
Next

$iID = GUICtrlCreateInput('', 20, 40, 200, 20)
GUICtrlSetData(-1, _WinAPI_PathCompactPath(GUICtrlGetHandle($iID), $sStr))

GUISetState(@SW_SHOW, $hGUI)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
можно так
Код:
#include <EditConstants.au3>
$Form1 = GUICreate("Form1", 500, 200, -1,-1)
$Input1 = GUICtrlCreateInput("Описание", 10, 10, 350, 20)
GUISetState()
GUICtrlSetData($Input1, 'длинный текст - 11111111111111111111111111111111111111111111111111111111111111 - окончание текста')
GUICtrlSendMsg($Input1, $EM_SETSEL, 0, 0)
While 1
    Switch GUIGetMsg()
        Case -3
            Exit

    EndSwitch
WEnd
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
Всем большое спасибо за ответы, отключил $ES_AUTOHSCROLL следующим образом
Код:
$Input1 = GUICtrlCreateInput("Описание", 10, 242, 965, 21, 0)
 
Верх