кто знает как сделать этот чекбокс не серым и не жирным
| Автор
| Сообщение |
|
|
|
Цитата |
|
при создании формы можно вывести чекбоксы на стандартном TreeView через
SetWindowLong(AVTreeView1.Handle,GWL_STYLE,GetWindowLong(AVTreeView1.Handle,GWL_STYLE) or OBM_CHECKBOXES);
попробуйте сами
procedure TForm1.FormCreate(Sender: TObject);
var
CurrNode : TTreeNode;
begin
SetWindowLong(AVTreeView1.Handle,GWL_STYLE,GetWindowLong(AVTreeView1.Handle,GWL_STYLE) or OBM_CHECKBOXES);
CurrNode := AVTreeView1.Items.AddChild(nil,'Узел 1');
CurrNode := AVTreeView1.Items.AddChild(CurrNode,'Узел 1.1');
CurrNode := AVTreeView1.Items.AddChild(CurrNode,'Узел 1.1.1');
CurrNode := AVTreeView1.Items.AddChild(nil,'Узел 2');
CurrNode := AVTreeView1.Items.AddChild(CurrNode,'Узел 2.1');
CurrNode := AVTreeView1.Items.AddChild(CurrNode,'Узел 2.1.1');
end;
а кто знает как сделать этот чекбокс не таким серым и не таким жирным? |
|
| В начало |
|
 |
|
|
 |
DrPass
Знающий :) /Почетный Модератор/

Возраст: 31
Знак зодиака: 
Зарегистрирован: 02.05.2002
Сообщения: 5709
Откуда: Донецк
|
|
|
Цитата |
|
Я, честно говоря, долго смеялся над чьей-то удачной шуткой (или случайно сработавшим маразмом)
| Цитата: | | SetWindowLong(AVTreeView1.Handle,GWL_STYLE,GetWindowLong(AVTreeView1.Handle,GWL_STYLE) or OBM_CHECKBOXES); |
Фишка в том, что константа OBM_CHECKBOXES никакого отношения к стилям окна не имеет. Она используется как идентификатор ресурса стандартной картинки чекбокса, которую при необходимости можно подгрузить в программу.
Самое интересное, что эта константа равна 32759, что в двоичном виде равно 111111111110111 - установлены все биты, кроме самого старшего и четвертого. Т.е. когда выполняешь GetWindowLong(AVTreeView1.Handle,GWL_STYLE) or OBM_CHECKBOXES, это эквивалентно команде "добавить к окну практически все доступные для него стили". Естественно, среди них находится и стиль с чекбоксами.
Вопрос только в том, можно ли эти чекбоксы как-то использовать. В официальной микрософтовской документации по TreeView насчет этого нет ни слова (правда, у меня MSDN не самая свежая, ей уже два года от роду). Но и недокументированные фичи иногда неплохо работают... _________________ Да пребудет с вами Сила! |
|
| В начало |
|
 |
|
|
|
Цитата |
|
ессно не имеет, я вообще с трудом нашел этот кусок,
- нарисовал дерево с чекбоксами, но....без скролл баров,
хрен знает почему они исчезают!!!!
потом с еще большим трудом методом научного тыка -
"научился" активизировать скролл-бар - вставил вместо OBM_CHECKBOXES ---> WM_VSCROLL
// SetWindowLong(TV_Employees.Handle,GWL_STYLE,GetWindowLong(TV_Employees.Handle,GWL_STYLE) or WM_VSCROLL);
иначе она рисует дерево с чекбоксами без скроллбаров
затем научился как снимать показания чекнутости для узлов
но все равно осталась одна задача нерешенной,
как фон внутри этого системного чекбокса сделать прозрачным или хотя бы белым принудительно. Да и сам квадратик не мешало бы тонким сделать.
дело в том, что у меня в системе установлена своя палитра для окон, декстопа и т.д. - в результате фон внутри этого системного чекбокса не может перехватить установки винды и лепится серым а рамка жирным черным цветом, если же ничего не трогать - то да, внутри чекбокса белый цвет, но если в дереве установить другой цвет фона -то внутри чекбокса так и останется белый цвет.
Song, модератор, блин, на исходниках.ru ломается как целочка, но так и не говорит толком про то как прозрачность установить, может тут знающие люди есть? |
|
| В начало |
|
 |
|
Новая тема
Ответить
Печать
|
Вы можете начинать темы Вы можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете присоединять файлы в этом форуме Вы можете скачивать файлы в этом форуме
|
|