![]() |
|
#1
|
|||
|
|||
![]() Подскажите как на 99% определить, что окно ввода текста однострочное (напр. TEdit). Прверял стили окна - ES_MULTILINE не всегда есть у многострочных окон. З.Ы. Окна не моего приложения.
Код:
function HasMultLine(AHandle: HWND): Boolean; var dwStyle: DWORD; begin dwStyle := GetWindowLong(AHandle, GWL_STYLE); Result := (dwStyle and ES_MULTILINE) = ES_MULTILINE; end; |
#2
|
||||
|
||||
![]() Хмм... По-хорошему, никак. Можно например сделать окно (простой белый прямоугольник), на котором рисовать строки вводимого текста и мигающий курсор. И это тоже будет окном ввода текста в каком-то смысле. Могу ошибаться, но по-моему тот же TMemo сделан подобным образом.
jmp $ ; Happy End! The Cake Is A Lie. |
#3
|
||||
|
||||
![]() Если быть точным, то TMemo и TEdit суть одно и тоже. Просто по какой-то причине, в своё время, фирма Borland решила сделать их как 2 разных контрола. У TMemo как раз выставлен флаг ES_MULTILINE
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#4
|
|||
|
|||
![]() Есть 3 спорные идеи.
1. Проверять высоту контрола. У однострочных она обычно 20-24. Хотя тут многое зависит от размера шрифта и извращенной фантазии разработчика. Поэтому под вопросом. 2. По классу контрола (напр. TEdit). Тут вообще мрак. При использовании нестандартных компонентов или после обфускации кода вообще бред будет. 3. Ну и самая фантастическая. Определять реакцию контрола на <VK_RETURN> (в смысле переводит он каретку на след строку или нет). Тут вообще - "звезда в шоке". У кого какие еще идеи будут ? |
#5
|
||||
|
||||
![]() Можно попытаться использовать функцию GetDlgItemText и проверить на символы переноса строк.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#6
|
||||
|
||||
![]() многострочное окно скорее всего должно иметь возможность прокручивания, т.е. иметь стили WS_VSCROLL и ES_AUTOVSCROLL. может стоит попытаться проверить еще и их? если оно конечно не "FullCustomWindow" какое-нибудь.
Пишу программы за еду. __________________ |
#7
|
|||
|
|||
![]() Цитата:
|
#8
|
|||
|
|||
![]() Спасибо всем, кто не прошел мимо. Буду пробовать все варианты и их комбинации.
|