|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
09.12.2016, 10:38 | #1 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
Добавить или убрать стили ListBox
Здравствуйте.
В ходе выполнения программы, нужно у ListBox'а убрать или добавить ему стиль LBS_OWNERDRAWVARIABLE / LBS_OWNERDRAWFIXED / LBS_NOTIFY. Код:
И так же LBS_NOTIFY. Если не указать его при создании листбокса, то уведомления не приходят. И наоборот. Если создать листбокс с нужными стилями, а потом убрать их, то уведомления не перестанут приходить. |
09.12.2016, 11:01 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Во первых зачем это вообще нужно? Раз уж один раз сделали рисовалку так и рисуйте...
А раз уж так надо, то сделайте два листбокса и прячьте ненужный. |
09.12.2016, 11:27 | #3 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
Завернуть ListBox в класс, сделать свойство что-то типа OwnDraw:boolean.
Чтобы потом просто Код:
Но встала вышеописанная проблема. В общем, это не критично. Но разве нельзя изменять эти стили уже после создания контрола? VCL же это умеет вроде (могу ошибаться). |
09.12.2016, 23:41 | #4 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Можно ваще написать свой листбокс с нуля. И тогда в нем Вы хозяин.
А если берете готовый, то в вашем методе OwnDraw не трудно окно выгрузить, и загрузить по-новой с нужными стилями. Да, придется временно сохранить данные листбокса, но мы же программисты... |
10.12.2016, 10:14 | #5 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
|
10.12.2016, 10:47 | #6 | |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
Цитата:
ага, и тратить кучу времени на копирование строк. |
|
10.12.2016, 11:30 | #7 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Ааа, вот оно что...
Ну так создавайте всегда со стилем LBS_OWNERDRAWFIXED а обработчик вызывайте только если установлен OwnDraw, если не установлен рисуйте "стандартно". Но действительно будет проще изменить конструктор... |
10.12.2016, 11:33 | #8 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Динамическое изменение не каждого стиля даст ожидаемый результат. Можно получить большой облом
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
10.12.2016, 11:37 | #9 |
Форумчанин
Регистрация: 13.02.2012
Сообщений: 867
|
|
10.12.2016, 11:40 | #10 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Не скажу. Просто как-то тоже сталкивался, но давно, не помню ситуацию. Можно в исходниках того же делфи покопаться на счет использования SetWindowLong
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 10.12.2016 в 11:43. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Разные стили в одной строке ListBox | rota | Общие вопросы Delphi | 14 | 26.02.2012 21:48 |
Добавить/убрать раскладку | Stilet | Win Api | 5 | 20.07.2011 11:35 |
как добавить в listbox файлы(пишу с помощью bassplayer)(Listbox+opendialog=play) | blackstersl | Общие вопросы Delphi | 11 | 09.06.2010 13:23 |
Чем отличаются стили listBox'a? | TwiX | Общие вопросы Delphi | 2 | 14.11.2009 01:40 |
Как в RichView убрать стили? | KurtWagner | Компоненты Delphi | 2 | 05.02.2009 10:43 |