Подберите изображение TButtonedEdit к изображению по умолчанию TComboBox - PullRequest
1 голос
/ 26 января 2011

Мое приложение использует стандартные TComboBox и TButtonedEdits для создания элементов управления с более сложными раскрывающимися панелями.Я хотел бы, чтобы два элемента управления выглядели одинаково.В частности, я хотел бы, чтобы изображение на моих TButtonedEdits было идентичным изображению на TComboBox, независимо от того, на какой операционной системе работает данная программа или в будущем (то есть, если предположить, что этот образ определяется операционной системой, а не Delphi).).

Я предполагаю, что мне придется установить во время выполнения ресурс, предоставляющий образ TComboBox, в TImageList, чтобы сделать его доступным для моих TButtonedEdits.Как найти и извлечь этот ресурс?

1 Ответ

2 голосов
/ 26 января 2011

Вы можете использовать движок тем, чтобы нарисовать кнопку самостоятельно - попробуйте что-нибудь подобное для начала:

uses
  Themes;

procedure DrawComboBoxButton(ACanvas: TCanvas; ADown, AMouseInControl: Boolean; const ARect: TRect);
var
  ComboElem: TThemedComboBox;
  Details: TThemedElementDetails;
begin
  if ThemeServices.ThemesEnabled then
  begin
    if ADown then
      ComboElem := tcDropDownButtonPressed
    else if AMouseInControl then
      ComboElem := tcDropDownButtonHot
    else
      ComboElem := tcDropDownButtonNormal;
    Details := ThemeServices.GetElementDetails(ComboElem);
    ThemeServices.DrawElement(ACanvas.Handle, Details, ARect);
  end
  else
  begin
    if ADown then
      DrawFrameControl(ACanvas.Handle, ARect, DFC_SCROLL, DFCS_SCROLLCOMBOBOX or DFCS_PUSHED)
    else
      DrawFrameControl(ACanvas.Handle, ARect, DFC_SCROLL, DFCS_SCROLLCOMBOBOX);
  end;
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
  DrawComboBoxButton(PaintBox1.Canvas, False, False, Bounds(0, 0, 20, 20));
  DrawComboBoxButton(PaintBox1.Canvas, True, False, Bounds(20, 0, 20, 20));
end;

(адаптировано из темы "Темы Windows в выпадающем списке" вФорумы Embarcadero).

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * на M9 * * * *.И посмотрите на этот поток .

...