Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получить и установить системные цвета

Delphi , Графика и Игры , Цвета и Палитра

Получить и установить системные цвета

Заходит компьютерщик в булочную после бессонной ночи у компьютера, провозивщись с установкой кривой видеокарты и говорит: - Мне, пожалуйста, буханку черно-белого хлеба и батон цветного....


var 

  OldColor: TColor; 
  Element: TColor = COLOR_BTNFACE; 

  {....} 

{ 
  Set the color for a system element. SetSysColors function 
  changes the current Windows session only. 
  The new colors are not saved when Windows terminates. 
  For a list of color elements see  Win32 API Help - Function GetSysColor 


  Open the ColorDialog - and set the new color systemwide 
} 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  if ColorDialog1.Execute then 
  begin 
    SetSysColors(1, Element, ColorDialog1.Color); 
  end; 
end; 

{ 
  Save the old color value of the element COLOR_BTNFACE to restore on Button2 click 
} 

procedure TForm1.FormShow(Sender: TObject); 
begin 
  OldColor := GetSysColor(COLOR_BTNFACE); 
end; 

{ 
  Restore the old color value 
  Stellt den alten Farbwert wieder her 
} 

procedure TForm1.Button2Click(Sender: TObject); 
begin 
  SetSysColors(1, Element, OldColor); 
end;

Перевод текста на русский язык:

Код написан на языке Delphi, основанном на Паскале. Он демонстрирует, как получить и установить системные цвета в Windows с помощью функции SetSysColors.

Вот разбивка на части кода:

  1. Первая секция определяет переменные: OldColor для хранения оригинального значения цвета, а Element для указания, какой системный элемент нужно изменить.
  2. Процедура Button1Click вызывается при клике кнопки. Она открывает диалоговое окно выбора цвета с помощью компонента ColorDialog1, позволяя пользователю выбрать новый цвет для указанного системного элемента (в этом случае - лицо кнопки). Если пользователь выбирает новый цвет и нажимает "OK", функция SetSysColors обновляет текущую сессию Windows новым значением цвета.
  3. Процедура FormShow вызывается при отображении формы. Она сохраняет оригинальное значение цвета лица кнопки с помощью функции GetSysColor.
  4. Процедура Button2Click вызывается при клике другой кнопки. Она возвращает оригинальное значение цвета, вызвав SetSysColors с сохраненным значением OldColor.

Вот некоторые предложения и улучшения:

  • Вместо использования жесткого кода индекса элемента (1) в функции SetSysColors, рассмотрите использование константы или enum для указания системного элемента, который нужно изменить. Это сделает код более читаемым и поддерживаемым.
  • Вы можете использовать функцию GetSysColor для получения текущего значения цвета для указанного элемента перед обновлением его новым значением. Это может помочь предотвратить неожиданные поведения, если пользователь нажимает кнопку "Отмена" в диалоговом окне выбора цвета.
  • Если вы хотите сделать изменения цвета постоянными между сессиями Windows, рассмотрите использование реестра Windows или внешнего файла конфигурации для хранения значений цветов.

Вот обновленная версия кода, которая включает эти предложения:

type
  TColorElement = (ceButtonFace, ceMenuItem, ceWindowFrame);

var
  OldColor: TColor;
  Element: TColorElement = ceButtonFace;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if ColorDialog1.Execute then
  begin
    SetSysColors(Element, GetSysColor(Element), ColorDialog1.Color);
  end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  OldColor := GetSysColor(Element);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SetSysColors(Element, OldColor);
end;

Обратите внимание, что я определил enum TColorElement для указания системного элемента, который нужно изменить. Вы можете добавить больше элементов в этом enum, какNeeded.

В статье описывается как получить и установить системные цвета в приложении для Windows с помощью функции SetSysColors и диалогового окна выбора цвета.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Цвета и Палитра ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 06:01:33/0.0034041404724121/0