Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Изменение стиля элемента управления [D6, XP]


Ji ©   (2006-02-12 23:40:00) 

Есть диалоговое окно с элементом управления (например, RadioButton c Control_ID = 10).
Хочу изменить стиль этой RadioButton (поставить/убрать WS_DISABLED).
В документации нашел функцию SetWindowLong, которая вроде бы для этого применяется.
Использую так:
SetWindowLong(GetDlgItem(WindowHandle, 10),GWL_STYLE,WS_DISABLED);
При этом RadioButton становится некликабельной, но не затеняется.
А также не получается убрать это свойство (WS_DISABLED) если оно установлено изначально при загрузке окна, т.е. сделать элемент активным.
Как сделать чтобы элемент отключался полностью (зетенялся) и как вернуть его в рабочее состояние?


begin...end   (2006-02-13 10:10:00) [1]

EnableWindow(GetDlgItem(WindowHandle, 10), False)


Ji   (2006-02-13 09:45:00) [2]

Спасибо.
Понял.


Marser   (2006-02-13 01:55:00) [3]

Так как делаете вы, в общем случае делать принципиально неправильно. Вам нужно сначала получить стили данного элемента с помощью GetWindowLong, а уже затем работать с ними, добавляя или вычитая стили, используя битовую логику - or(добавление) или and not.
Таким образом, в вашем случае нужно было писать по крайней мере вот так:
SetWindowLong(GetDlgItem(WindowHandle, 10),GWL_STYLE,GetWindowLong(GetDlgItem(WindowHandle, 10),GWL_STYLE)or WS_DISABLED);


Наверх

Титульная страница Поиск, карта сайта Написать письмо