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

Добавление групп стандартных цветов в TColorListBox в Delphi 10.4.2 без перезаписи пользовательских

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

В статье рассмотрим проблему, с которой сталкиваются разработчики, использующие компонент TColorListBox в среде Delphi 10.4.2. Речь пойдет о добавлении групп стандартных цветов в TColorListBox во время выполнения программы, не затрагивая при этом пользовательские цвета, которые уже были добавлены.

Проблема

Разработчик имеет TColorListBox в приложении VCL, где уже добавлены некоторые пользовательские цвета. При попытке добавить стандартные цвета через изменение свойства Style компонента, происходит перезапись существующих пользовательских цветов. Это нежелательное поведение, так как требуется сохранить пользовательские цвета, а добавить только стандартные.

Решение проблемы

Чтобы решить эту проблему, необходимо сохранить список существующих цветов в временный список, а затем, после добавления стандартных цветов, восстановить пользовательские цвета, не изменяя их порядок.

procedure TForm1.btnAddGroupClick(Sender: TObject);
var
  CL: TStringList;
begin
  CL := TStringList.Create;
  try
    CL.Assign(ColorListBox1.Items); // Сохраняем существующие цвета в временный список
    ColorListBox1.Style := ColorListBox1.Style + [cbStandardColors]; // Добавляем стандартные цвета
    ColorListBox1.Items.AddStrings(CL); // Восстанавливаем пользовательские цвета
  finally
    CL.Free;
  end;
end;

Также, если необходимо сохранить пользовательские цвета в начале списка, следует вставлять их обратно по одному, начиная с последнего:

procedure TForm1.btnAddGroupClick(Sender: TObject);
begin
  if not (cbStandardColors in ColorListBox1.Style) then
    AddColorGroup([cbStandardColors]);
end;

procedure TForm1.AddColorGroup(AColorGroup: TColorBoxStyle);
var
  CL: TStringList;
  i: Integer;
begin
  CL := TStringList.Create;
  try
    CL.Assign(ColorListBox1.Items); // Сохраняем существующие цвета в временный список
    ColorListBox1.Items.BeginUpdate;
    try
      ColorListBox1.Style := ColorListBox1.Style + AColorGroup;
      // Добавляем существующие цвета обратно в начало списка по одному
      for i := CL.Count - 1 downto 0 do
        ColorListBox1.Items.InsertObject(0, CL[i], CL.Objects[i]);
    finally
      ColorListBox1.Items.EndUpdate;
    end;
  finally
    CL.Free;
  end;
end;

Заключение

При работе с TColorListBox в Delphi 10.4.2 важно правильно управлять добавлением групп стандартных цветов, чтобы не потерять пользовательские цвета, добавленные ранее. Представленные выше методы позволяют избежать перезаписи пользовательских цветов и добавлять стандартные цвета без потерь.

Создано по материалам из источника по ссылке.

Разработчики в Delphi 10.4.2 сталкиваются с проблемой добавления стандартных цветов в TColorListBox, не перезаписывая при этом уже добавленные пользовательские цвета.


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-03-14 09:19:09/0.0032401084899902/0