Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
Ciao a tutti! А кто-нибудь может знает, как красиво и изящно решить скорее всего нерешаемое: изменить цвет фонта у контрола, который в состоянии Enabled := false? 1. Ни в какой контейнер (TPanel и др.) контролы не хочу помещать. 2. Ставить сторонние компоненты нежелательно, так как никто не хочет потом у себя доустанавливать. Разработка таки коллективная. 3. В крайнем случае можно переопределить метод WMPaint - видимо это самое простое. Но компонент не TEdit, а TrzNumericEdit. Первая попытка уже была, работает, но криво. А надо, чтоб не криво... Компонент наследуется от .......TMaskEdit и дальше от TWinControl.... далее методы отрисовки уходят в WinAPI....... контролы - это окна и винда их рисует, как окна... Исходников RaizeComponent чего-то нету у меня, посмотреть, что там и как пока что не получается... А хотелось бы... Может еще какие варианты есть? Только желательно по делу, а не как обычно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2021, 01:21 |
|
||
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
Вариантов два: 1. Искать исходники 2. Написать всё самим PS: бонусный вариант - не маяться дурью ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2021, 01:46 |
|
||
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2021, 07:40 |
|
||
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
white_nigger Вариантов два: 1. Искать исходники 2. Написать всё самим PS: бонусный вариант - не маяться дурью За бонус согласен, но вот хотят именно так :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2021, 09:35 |
|
||
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
wadman о спасибо! посмотрел втуда. Вот чего нашел втам: "Read-only or disabled edit controls do not send the WM_CTLCOLOREDIT message; instead, they send the WM_CTLCOLORSTATIC message." Значит надо курить в сторону WM_CTLCOLORSTATIC! Thanks! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2021, 09:40 |
|
||
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
Galadriel75 Значит надо курить в сторону WM_CTLCOLORSTATIC! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2021, 12:59 |
|
||
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2021, 13:23 |
|
||
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
Galadriel75, см. http://delphimaster.net/view/1-1124453135/all (ого 2005 г. !) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2021, 14:26 |
|
||
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
white_nigger Galadriel75 Значит надо курить в сторону WM_CTLCOLORSTATIC! Вроде как нету. Или я не нашел. Но скорее всего нету. До меня тоже уже искали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2021, 15:58 |
|
||
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2021, 16:01 |
|
||
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
kapas Galadriel75, см. http://delphimaster.net/view/1-1124453135/all (ого 2005 г. !) Да, я видел этот пример и попробовал. Он не работает, как надо: Затирает белым фоном все подряд вместе с бордюром. Куча артефактов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2021, 16:09 |
|
||
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
Galadriel75, не понял. У мня такая картинка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2021, 16:33 |
|
||
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
kapas Galadriel75, не понял. У мня такая картинка На тестовом проекте у меня тоже все отлично! Ну, прям аж на душе полегчало. Думал, решил задачу. И принялся переносить все на боевой. Создал компонентик-наследник TRzNumericEditExt, заменил им TRzNumericEdit. И получил компоненты без границ - они все склеились в один, так как между ними малое совсем расстояние. На формочке они изначально плотненько практически были - форма до меня спроектирована, менять я там ничего не могу. Цифры были смещены все влево, а должны быть справа. И это неудивительно - там есть вывод текста, начиная слева. Тем не менее, все остальное работает! Если не выйдет сделать как-то иначе придется пилить эту версию. Текст посадить вправо таки вообще не проблема! И останется понять, почему на тестовом все хорошо, а на боевом - все плохо. На боевом еще дополнительные всякие украшательства используются, стили. Возможно, они и подмешивают артефакты. На тестовом - просто голая форма и на ней компоненты. А в реальном проекте просто лавина всяких стилей отрисовки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2021, 22:02 |
|
||
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
Таки сделал обработчик WM_CTLCOLORSTATIC Ну, примерно вот как Код: pascal 1. 2. 3. 4. Ключевое здесь - костыль. Без него не будет работать!: Код: pascal 1. Костыль нарисовал благодаря тому, что по исходникам винды сразу и видно, что если цвет фона совпадает с цветом задизабленного фонта, то винда только в этом случае любезно оный цвет фонтовый и позволяет изменить, а иначе и никак! Спасибо всем добрым и умным людям за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2021, 03:58 |
|
||
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
Ciao a tutti! И вот неожиданно продолжение темы.... А на панели, как оказалось, не меняет цвет... Хотя вроде панель в окне живет... Вот облом так облом. Я не знаю, как разрулить это попроще. Нагуглил такого, что не уверен, что решение правильное... Вот такой код Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2021, 14:41 |
|
||
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
Galadriel75, А что непонятного во фразе: авторA static control, or an edit control that is read-only or disabled, sends the WM_CTLCOLORSTATIC message to its parent window when the control is about to be drawn. Как вариант - сделай глобальный обработчик в Application.OnMessage. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2021, 17:42 |
|
||
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
alekcvp Galadriel75, А что непонятного во фразе: авторA static control, or an edit control that is read-only or disabled, sends the WM_CTLCOLORSTATIC message to its parent window when the control is about to be drawn. Как вариант - сделай глобальный обработчик в Application.OnMessage. ОООООО, спасибо!!! Попробую! Вся моя беда в том, что я НЕ ЧИТАЮ доку! Во фразе таки понятно все до последней буквы, даже без словаря! Но я ж не читатель :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2021, 17:52 |
|
||
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
Ну вроде что-то вышло.... Немного причешу код, попробую понять, что я сделал и выложу сюда. Может кому-то пригодится, может кто замечания по делу скажет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2021, 17:13 |
|
||
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
Galadriel75, посмотрите TWinControl.DefaultHandler Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. он возвращает сообщение контролу как CN_CTLCOLORSTATIC = CN_BASE + WM_CTLCOLORSTATIC; видно, что DefaultHandler с CN_CTLCOLORSTATIC делает как у вас, значит кто-то в компоненте пошаманил с CN_CTLCOLORSTATIC, либо в стилях что-то не так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2021, 08:52 |
|
||
|
Delphi. Смена цвета фонта в disabled control
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan) Galadriel75, посмотрите TWinControl.DefaultHandler Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. он возвращает сообщение контролу как CN_CTLCOLORSTATIC = CN_BASE + WM_CTLCOLORSTATIC; видно, что DefaultHandler с CN_CTLCOLORSTATIC делает как у вас, значит кто-то в компоненте пошаманил с CN_CTLCOLORSTATIC, либо в стилях что-то не так оки,спасибо, гляну! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2021, 12:07 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40071813&tid=2037232]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
177ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 305ms |

| 0 / 0 |
