-
bss (10.06.10 16:09) [0]Нужно определить - есть ли скрол бокс у компонента или нет. Конкретнее - компонент TElTree, может кто знает, у него есть Handle свойство.
Код аля:w := GetWindowLong(ElTree1.Handle, GW_STYLE);
if (w and WS_HSCROLL) = WS_HSCROL then ...
срабатывает всегда, хотя скрола визуально не видно по крайней мере.
Еще один вариант пробовал:GetScrollBarInfo(ElTree.Handle, OBJID_VSCROLL, sbi) ...
В Sbi.rgstate[0] проверяю флаг STATE_SYSTEM_INVISIBLE - его никогда нету.
А, допустим, флаг STATE_SYSTEM_OFFSCREEN есть всегда...
Что еще можно сделать? -
KilkennyCat © (10.06.10 16:46) [1]можно сделать выскакивающий мессадждиалог, с вопросом "Извините пожалуйста, Вы не подскажите, скролл есть?" и вариантами ответов "да, "нет", "не скажу"
-
bss (10.06.10 17:16) [2]лучше тогда "Посчитайте на калькуляторе нужное вам в итоге число и введите его в поле ввода" ))
-
Игорь Шевченко © (10.06.10 17:27) [3](GetWindowLog(hwnd, GWL_STYLE) and WS_VSCROLL) <> 0,
(GetWindowLog(hwnd, GWL_STYLE) and WS_HSCROLL) <> 0 -
Игорь Шевченко © (10.06.10 17:28) [4]так ScrollBox или ScrollBar ?
-
bss (10.06.10 18:04) [5]конструкция:
(GetWindowLong(ElTree.Handle, GWL_STYLE) and WS_VSCROLL) <> 0
всегда дает true, даже когда скрола не видно.
> так ScrollBox или ScrollBar ?
я не очень в этом разбираюсь. У меня:
1) есть компонент TElTree
2) я пробовал GetWindowLong - результат выше
3) пробовал GetScrollBarInfo как показано в топике. -
Игорь Шевченко © (10.06.10 18:44) [6]bss (10.06.10 18:04) [5]
Я не знаю, что такое ELTree. Могу посоветовать использовать Spy++ для просмотра структуры окон и их стилей у нужного компонента.
Spy++ искать в интернете.
Стандартный неклиентский скроллбар определяется именно тем способом, который описан в [3], нестандартные или клиентские не определяются вовсе. -
bss (10.06.10 19:01) [7]
> Могу посоветовать использовать Spy++
я там ничего не понимаю в нем. Вот картинка: http://s55.radikal.ru/i149/1006/c5/a78033e07cca.jpg
TfrmFieldsEditor - это форма, на которой лежит компонент TElTree. -
Игорь Шевченко © (10.06.10 20:07) [8]
> Вот картинка
судя по картинке, там свой, а не стандартный скорллбал
тогда ищи окна класса TElScrollbar через FindWindowEx -
bss (10.06.10 22:01) [9]попробую... Хотя картинка сделана в тот момент, когда скролбаров не было, видимо, имеет смысл проверять свойство visible окна как-то...