Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2016.03.06;
Скачать: [xml.tar.bz2];

Вниз

Как определить наличие 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2016.03.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.002 c
15-1435181402
Юрий
2015-06-25 00:30
2016.03.06
С днем рождения ! 25 июня 2015 четверг


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


4-1276171766
bss
2010-06-10 16:09
2016.03.06
Как определить наличие ScrollBox у компонента


15-1435500579
xayam
2015-06-28 17:09
2016.03.06
Как подружить TWebBrowser и Google Adsense?


2-1408617720
InstAndrOrdec
2014-08-21 14:42
2016.03.06
Как открыть .tiff ? (ShellExecute() )





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский