Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.09.2016, 18:00
xteam777 xteam777 вне форума
Прохожий
 
Регистрация: 14.03.2016
Сообщения: 33
Версия Delphi: RAD XE10
Репутация: 10
По умолчанию Замена кнопок системного меню

Здравствуйте.
Мне нужно на моей форме заменить все системные кнопки в заголовке окна своими. Т.е. сделав BorderIcons := [], мне нужно добавить свои.
До добавления пока не дошел. В версиях Windows до 10 все нормально, а вот в Windows 10 не получается получить данные кнопок из текущей темы (тема стандартная).

Код:
uses Vcl.Themes;
..
procedure TForm18.Button1Click(Sender: TObject);
var
  Details: TThemedElementDetails;
begin
  Details := StyleServices.GetElementDetails(twSmallCloseButtonNormal);
    { Special state for buttons drawn on a not active caption }
    if (GetForegroundWindow <> Handle)
      and (Details.State = 1) then
      Details.State := 5;
    StyleServices.DrawElement(Image1.Canvas.Handle, Details, Rect(0, 0, 32, 32))
end;

Пробую получить изображение кнопки Close. Получаю не совсем то, что надо. Видно на рисунке.



Переписал на API. Результат тот же.

Код:
uses Winapi.UxTheme;
...
procedure TForm18.Button1Click(Sender: TObject);
var
  Details: TThemedElementDetails;
  hTheme: THandle;
  RRect: TRect;
  ClipRect: PRect;
begin
  hTheme := OpenThemeData(Handle, 'Window');
  Details.State := 1;
  Details.Part := 19;
  RRect := Rect(0, 0, 32, 32);
  ClipRect := @RRect;
  Image1.Canvas.FillRect(RRect);
  DrawThemeBackground(hTheme, Image1.Canvas.Handle, Details.Part,
      Details.State, RRect, ClipRect);
  CloseThemeData (hTheme);
end;

Остальные кнопки тоже какие-то из старый версий Windows. Вопрос, как получить правильные изображения кнопок и их расположение?

Последний раз редактировалось xteam777, 04.09.2016 в 18:32.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:05.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter