Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2016.03.06;
Скачать: CL | DM;

Вниз

Как определить наличие ScrollBox у компонента   Найти похожие ветки 

 
bss   (2010-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 ©   (2010-06-10 16:46) [1]

можно сделать выскакивающий мессадждиалог, с вопросом "Извините пожалуйста, Вы не подскажите, скролл есть?" и вариантами ответов "да, "нет", "не скажу"


 
bss   (2010-06-10 17:16) [2]

лучше тогда "Посчитайте на калькуляторе нужное вам в итоге число и введите его в поле ввода" ))


 
Игорь Шевченко ©   (2010-06-10 17:27) [3]

(GetWindowLog(hwnd, GWL_STYLE) and WS_VSCROLL) <> 0,
(GetWindowLog(hwnd, GWL_STYLE) and WS_HSCROLL) <> 0


 
Игорь Шевченко ©   (2010-06-10 17:28) [4]

так ScrollBox или ScrollBar ?


 
bss   (2010-06-10 18:04) [5]

конструкция:

(GetWindowLong(ElTree.Handle, GWL_STYLE) and WS_VSCROLL) <> 0

всегда дает true, даже когда скрола не видно.


> так ScrollBox или ScrollBar ?

я не очень в этом разбираюсь. У меня:

1) есть компонент TElTree
2) я пробовал GetWindowLong - результат выше
3) пробовал GetScrollBarInfo как показано в топике.


 
Игорь Шевченко ©   (2010-06-10 18:44) [6]

bss   (10.06.10 18:04) [5]

Я не знаю, что такое ELTree. Могу посоветовать использовать Spy++ для просмотра структуры окон и их стилей у нужного компонента.

Spy++ искать в интернете.

Стандартный неклиентский скроллбар определяется именно тем способом, который описан в [3], нестандартные или клиентские не определяются вовсе.


 
bss   (2010-06-10 19:01) [7]


> Могу посоветовать использовать Spy++

я там ничего не понимаю в нем. Вот картинка: http://s55.radikal.ru/i149/1006/c5/a78033e07cca.jpg

TfrmFieldsEditor - это форма, на которой лежит компонент TElTree.


 
Игорь Шевченко ©   (2010-06-10 20:07) [8]


>  Вот картинка


судя по картинке, там свой, а не стандартный скорллбал

тогда ищи окна класса TElScrollbar через FindWindowEx


 
bss   (2010-06-10 22:01) [9]

попробую... Хотя картинка сделана в тот момент, когда скролбаров не было, видимо, имеет смысл проверять свойство visible окна как-то...



Страницы: 1 вся ветка

Текущий архив: 2016.03.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.005 c
2-1408703636
TPersistent
2014-08-22 14:33
2016.03.06
наследник TBlobField


15-1434922216
Юрий
2015-06-22 00:30
2016.03.06
С днем рождения ! 22 июня 2015 понедельник


15-1434978019
Дмитрий С
2015-06-22 16:00
2016.03.06
Как в много-серверной системе обновляют софт?


2-1408695186
Sw
2014-08-22 12:13
2016.03.06
TXMLDocument


15-1434841945
Германн
2015-06-21 02:12
2016.03.06
Вопрос к знатокам аглицкого.