| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > изменение вида TCheckBox |
| Автор: safright 14.8.2008, 12:52 |
| Доброго времени суток! Суть задачи - "сделать клон с другим лицом", т.е. полностью скопировать компонент, изменив его внешние данные. В данном случае - TCheckBox. Необходимые изменения: перерисовать сам бокс (убрать 3Д границы и изменить область на RoundRect) и сделать так, чтобы лейбл с ним рядом рисовался на прозрачном фоне. А, еще изменить цвет внутри коробочки (желательно - и grayed) на произвольный. В принципе, я представляю, как изменить внешний вид (region'ы рулять! Дабы не переписывать предка TCustomCheckBox, хорошо бы все реализовать на API... собсна, затем и пост |
| Автор: Burka 14.8.2008, 21:13 |
| Какое там вин апи http://www.hostmake.ru/articles/delphi/345/ |
| Автор: safright 14.8.2008, 21:55 | ||
Я этих книжек/статей/постов на форумах за последние пару недель перечитал стока, что уже могу сам написать книжку. Другое дело, что где-то в 90% из них говориться: предком берем что-нибудь типа TWinControl, рисуем свое, используем TCanvas, и радуемся! Так вот, уважаемые товарищи: фигня! З.Ы. пример - переделывал так TEdit. Начать с того, что НИ ОДИН стандартный компонент или высокоуровневое средство в дельфях не дает доступ к регионам, а как без них прикажете рисовать окошки неправильной формы? Пока про это не узнал, все тормозило и глючило. После того, как узнал и переделал - осталось 15 строчек кода, который работает и все делает и несколько override процедур, которые его вызывают Немного уточню вопрос - есть способ узнать дескриптор для вложенных компонентов? (пример - combobox, у которого отдельно область текста, отдельно кнопка, отдельно окошко списка). Как вариант - есть книжки/сайты/статьи, где разбираются компоненты vcl? |
| Автор: Yanis 15.8.2008, 09:04 |
| safright, http://www.sources.ru/delphi/delphi_change_checkboxes.shtml |
| Автор: safright 15.8.2008, 11:57 | ||
| Пасиб, Поработитель мира Нашел несколько интересных вещей, а коммент:
меня порадовал ...ППЦ... в DRKB есть мессаги винды... и так много Тема все еще открыта, ждем-с. |
| Автор: safright 15.8.2008, 23:10 |
| Эх, судя по всему, сделать как мне хоцца врядли получится... Дело в том, что с простыми компонентами (типа TEdit, TProgressBar и т.п.) подход "перекроить окошко, пока оно не очухалось" работает, т.к. собственно оконных элементов там одна штука (не вдаваясь в подробности - на самом деле больше, но это не важно), т.е. только один элемент может получить фокус ввода, есть один дескриптор, который и отвечает за окошко. В TCheckBox, TComboBox таких элементов больше. Так, в ComboBox есть аж 3 вложенных окна (дескрипторы можно достать в protected, имена FListHandler, FEditHandler, FDropDownHandler) и один дескриптор (собственно, свойство Handle), отвечающий за само окно. В общем - жуть! Придется все эти писать ручками... ну да ладн. Вопрос модерам и всем желающим - стоит статью тиснуть про простые вещи (Edit, ProgressBar и еще несколько), как их переделывать визуально? Тема, как показала практика, нетривиальная, вдруг пригодиться... Всем спасибо и досвидания. |
| Автор: Burka 16.8.2008, 01:53 | ||
Поддерживаю, вот есть исходник прогрессбара в котором можно вставлять картинку вместо полоски. Но разобратся в этом и правда сложно. |
| Автор: Del2007 27.9.2008, 19:14 |
| Хочу CheckBox'ы как у Nod'а |
| Автор: FoXIT 5.5.2009, 10:05 |
| Товарищи! Мне тоже нужен прозрачный чекбокс. Может есть готовые компоненты? Или кто нибудь сможет сделать стандартный чекбокс прозрачным. |
| Автор: cemick 6.5.2009, 12:33 |
| На крайний случай WM_Paint ловить |