Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
20 / 4 / 1
Регистрация: 26.12.2014
Сообщений: 86

Бледный вид TSpeedButton в Delphi 10.4

02.04.2021, 08:07. Показов 6872. Ответов 34

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Подскажите, что произошло с компонентом TSpeedButton в Delphi 10.4 ??? Изображение на кнопочке теперь бледное. Хотя в свойствах изображения - нормальное. В предыдущей Delphi 10.3 такого не наблюдалось! Как исправить, кто знает ???
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.04.2021, 08:07
Ответы с готовыми решениями:

Внешний вид программы в Delphi
Возник такой вопрос. Можно ли в delphi сделать так, чтобы внешний вид компонентов на всех системах Windows (XP/Vista/7) был такой же, как и...

скрытый вид программы в Delphi
Здравствуйте, хочу написать программу, которая при загрузки Windows будет в скрытом виде висеть в процессах, а при нажатии exeшника будит...

Привести Delphi XE4 в привычный вид
Целый день искал в интернете информацию о том, как настроить внешний вид Delphi XE4.Нашел только статью о Delphi 2010, но не помогло.Мне...

34
Злостный нарушитель
 Аватар для Verevkin
10883 / 5822 / 1288
Регистрация: 12.03.2015
Сообщений: 26,874
02.04.2021, 11:32
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Phil357 Посмотреть сообщение
Какой апдейт у вас стоит?
0
06.04.2021, 11:20

Не по теме:

Меня удивляет и вымораживает тот факт, что до сих пор не сделали SpeedButton с png-глифом. Значит, ToolBar поддерживает png-иконки, а тут, ска, какая логика действует? к BitBtn, кстати, та же претензия. Всратые 30летней давности битмапы всрато выглядят в нынешние дни

0
20 / 4 / 1
Регистрация: 26.12.2014
Сообщений: 86
19.04.2021, 11:23  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
так таки и не пойму я, в чем проблема-то... Как по мне - все нормально показывает в вашем проекте...
День добрый! Если не секрет, где вы брали инастлляху delphi? Может у меня какая-то кривая?
Кстати, заметил, что в ресурсах формы при загрузке и сохранении из новой версии меняется код подгруженной картинки. Может в этом проблема?
0
19.04.2021, 11:38

Не по теме:

Цитата Сообщение от Phil357 Посмотреть сообщение
Если не секрет, где вы брали инастлляху delphi?
Вот и рад бы ответить, но...
1. На нашем форуме просто запрещено публиковать ссылки на пиратский софт...
2. Я просто этого реально не помню... Нашел, скачал, поставил - работает...

0
20 / 4 / 1
Регистрация: 26.12.2014
Сообщений: 86
19.04.2021, 11:51  [ТС]
В общем никто не поможет по сути вопроса... Придется откатиться на delphi 10.3...
0
Модератор
 Аватар для D1973
9954 / 6489 / 2461
Регистрация: 21.01.2014
Сообщений: 27,488
Записей в блоге: 3
19.04.2021, 12:05
Цитата Сообщение от Phil357 Посмотреть сообщение
В общем никто не поможет по сути вопроса
А как помочь, если сути не видно? Проблема-то не воспроизвелась ни у кого...
0
4 / 3 / 1
Регистрация: 11.10.2009
Сообщений: 8
19.04.2021, 12:53
Похожая проблема.
Но только при запуске проекта на Windows 7.
При запуске того же проекта на Windows 10 - все отлично, по старому.
0
20 / 4 / 1
Регистрация: 26.12.2014
Сообщений: 86
19.04.2021, 15:06  [ТС]
Цитата Сообщение от ZBEP Посмотреть сообщение
Похожая проблема.
Но только при запуске проекта на Windows 7.
Вот! Я знал что причина есть. Моя основная рабочая система - семерка. Можно вот с этого места поподробнее? Лечится как то?
0
Модератор
 Аватар для D1973
9954 / 6489 / 2461
Регистрация: 21.01.2014
Сообщений: 27,488
Записей в блоге: 3
19.04.2021, 16:48
Цитата Сообщение от Phil357 Посмотреть сообщение
Лечится как то?
Цитата Сообщение от ZBEP Посмотреть сообщение
на Windows 10 - все отлично
Еще вопросы???
0
20 / 4 / 1
Регистрация: 26.12.2014
Сообщений: 86
19.04.2021, 16:54  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
Еще вопросы???
Ответа на вопрос нет. Если вопрос: "у меня на машине новый узел Х барахлит", то ответ не должен звучать как "смените машину на более новую модель". Решение должно быть типа "заменить узел на другую модификацию" или "допилить узел напильником в таких то местах"
0
4 / 3 / 1
Регистрация: 11.10.2009
Сообщений: 8
20.04.2021, 01:11
Можно конечно переписать Vcl.Buttons.TSpeedButton, но пока этим не занимался и хотелось бы найти менее кардинальное решение.

Если не затруднит, то можете скинуть Vcl.Buttons.pas из предыдущей версии Delphi, в которой с TSpeedButton все нормально.
0
20 / 4 / 1
Регистрация: 26.12.2014
Сообщений: 86
20.04.2021, 09:37  [ТС]
Цитата Сообщение от ZBEP Посмотреть сообщение
Можно конечно переписать Vcl.Buttons.TSpeedButton, но пока этим не занимался и хотелось бы найти менее кардинальное решение.
Думаю что проблема глубже. Та же проблема у TBitBtn. А вот у сторонних компонентов типа Tollbar2000, проблема другая. Там картинка в режиме disabled не бледная как раньше (светлосерая), а темная, почти не отличается от нормального отображения в режиме enabled
0
4 / 3 / 1
Регистрация: 11.10.2009
Сообщений: 8
21.04.2021, 00:24
Да, проблема чуть глубже.
Некоторые кнопки и темы переписаны.

В данном случае, при TButtonGlyph(FGlyph).FThemesEnabled := True
Вокруг и поверх текста / изображения, появляется излишний эффект стекла в Windows 7.

Далеко копаться не стал и просто присвоил в
procedure TCustomSpeedButton.Paint;
TButtonGlyph(FGlyph).FThemesEnabled := False;
Строка 1801 и 1856

Назвать это полноценным решением нельзя и не всем подойдет, но для моих задач, визуально получилось именно то, что нужно.
С изображениями проверил - тоже работает.

Для TBitBtn не проверял, но "исправляться" должно так же.
Миниатюры
Бледный вид TSpeedButton в Delphi 10.4   Бледный вид TSpeedButton в Delphi 10.4   Бледный вид TSpeedButton в Delphi 10.4  

Вложения
Тип файла: 7z Vcl.Buttons.7z (17.1 Кб, 7 просмотров)
1
4 / 3 / 1
Регистрация: 11.10.2009
Сообщений: 8
21.04.2021, 01:24
Лучший ответ Сообщение было отмечено Phil357 как решение

Решение

Более правильное решение.
TButtonGlyph(FGlyph).FThemesEnabled не трогать и заменить
Delphi
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
procedure TButtonGlyph.DrawButtonText(Canvas: TCanvas; const Caption: string;
  TextBounds: TRect; State: TButtonState; Flags: LongInt);
 
 
  procedure DoDrawText(DC: HDC; const Text: UnicodeString;
    var TextRect: TRect; TextFlags: Cardinal);
  var
    LColor: TColor;
    LFormats: TTextFormat;
    LStyle: TCustomStyleServices;
    LOptions: TStyleTextOptions;
  begin
    if FThemesEnabled then
    begin
      LStyle := StyleServices(FControl);
      if (State = bsDisabled) or (not LStyle.IsSystemStyle and FThemeTextColor) then
      begin
        if not LStyle.GetElementColor(FThemeDetails, ecTextColor, LColor) or (LColor = clNone) then
          LColor := Canvas.Font.Color;
      end
      else
        LColor := Canvas.Font.Color;
 
      LFormats := TTextFormatFlags(TextFlags);
 
      LOptions.Flags := [stfTextColor, stfGlowSize];
      LOptions.TextColor := LColor;
      LOptions.GlowSize := 20;
 
      if FPaintOnGlass then
        Include(LFormats, tfComposited);
      LStyle.DrawText(DC, FThemeDetails, Text, TextRect, LFormats, LOptions);
    end
    else
      Winapi.Windows.DrawText(DC, Text, Length(Text), TextRect, TextFlags);
  end;
 
begin
  with Canvas do
  begin
    Brush.Style := bsClear;
    if (State = bsDisabled) and not FThemesEnabled then
    begin
      OffsetRect(TextBounds, 1, 1);
      Font.Color := clBtnHighlight;
      DoDrawText(Handle, Caption, TextBounds, DT_NOCLIP or DT_CENTER or DT_VCENTER or Flags);
      OffsetRect(TextBounds, -1, -1);
      Font.Color := clBtnShadow;
      DoDrawText(Handle, Caption, TextBounds, DT_NOCLIP or DT_CENTER or DT_VCENTER or Flags);
    end
    else
      DoDrawText(Handle, Caption, TextBounds, DT_NOCLIP or DT_CENTER or DT_VCENTER or Flags);
  end;
end;
LOptions.GlowSize := 20; - да уж...


На версию 10.3.2:
Delphi
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
procedure TButtonGlyph.DrawButtonText(Canvas: TCanvas; const Caption: string;
  TextBounds: TRect; State: TButtonState; Flags: LongInt);
 
  procedure DoDrawText(DC: HDC; const Text: UnicodeString;
    var TextRect: TRect; TextFlags: Cardinal);
  var
    LColor: TColor;
    LFormats: TTextFormat;
  begin
    if FThemesEnabled then
    begin
      if (State = bsDisabled) or (not StyleServices.IsSystemStyle and FThemeTextColor) then
      begin
        if not StyleServices.GetElementColor(FThemeDetails, ecTextColor, LColor) or (LColor = clNone) then
          LColor := Canvas.Font.Color;
      end
      else
        LColor := Canvas.Font.Color;
 
      LFormats := TTextFormatFlags(TextFlags);
      if FPaintOnGlass then
        Include(LFormats, tfComposited);
      StyleServices.DrawText(DC, FThemeDetails, Text, TextRect, LFormats, LColor);
    end
    else
      Winapi.Windows.DrawText(DC, Text, Length(Text), TextRect, TextFlags);
  end;
 
begin
  with Canvas do
  begin
    Brush.Style := bsClear;
    if (State = bsDisabled) and not FThemesEnabled then
    begin
      OffsetRect(TextBounds, 1, 1);
      Font.Color := clBtnHighlight;
      DoDrawText(Handle, Caption, TextBounds, DT_NOCLIP or DT_CENTER or DT_VCENTER or Flags);
      OffsetRect(TextBounds, -1, -1);
      Font.Color := clBtnShadow;
      DoDrawText(Handle, Caption, TextBounds, DT_NOCLIP or DT_CENTER or DT_VCENTER or Flags);
    end
    else
      DoDrawText(Handle, Caption, TextBounds, DT_NOCLIP or DT_CENTER or DT_VCENTER or Flags);
  end;
end;
Вложения
Тип файла: 7z Vcl.Buttons.7z (17.1 Кб, 18 просмотров)
1
20 / 4 / 1
Регистрация: 26.12.2014
Сообщений: 86
21.04.2021, 09:21  [ТС]
ZBEP, Спасибо тебе, добрый человек!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.04.2021, 09:21

Картинка в TspeedButton
Можно ли добавить свою картинку на SpeedButton как в VCL? А то я там нашёл только стандартные значки Android... Если так нельзя, то скажите...

Поместить кнопку на TSpeedButton
Доброго, как возможно на кнопку поместить другую кнопку, что бы был эффект как на картинке. С обычной кнопкой все норм. но вот на...

TSpeedButton, запретить MultiClick
Нужно запретить последующие нажатие если кнопка уже нажата (Down).

TSpeedButton: цвет затемнения
ДОброго дня! Как задать цвет кнопки в нажатом состоянии. Имеется затемнение. Я хочу сделать его более контрастным.\ Спасибо!

Сжатие изображения у TSpeedButton
Нужно поставить изображение 24х24. Такое имеется, но при загрузке оно почему то как-то по своему сжимается еще раз (вообще не пойму), и в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru