Я работаю в настраиваемом элементе управления, который смешивает два элемента управления Windows (listview и treeview). В какой-то момент мне нужно нарисовать изображение, которое использует окна 7 (с включенными темами) для идентификации родительских узлов, я использую DrawThemeBackground
с частью TVP_GLYPH
и состоянием GLPS_CLOSED
(я безуспешно пытался со всеми частями и состояниями, связанными с классом TREEVIEW
), но образ результата всегда является старым (+) или (-).
На этом изображении отображается проблема
Я хочу нарисовать изображение стрелки (внутри черного круга) вместо знака (+) (внутри оранжевого круга).
Это пример кода, который я использую для рисования изображения.
uses
UxTheme;
procedure TForm40.Button1Click(Sender: TObject);
var
iPartId : integer;
iStateId: integer;
hTheme : THandle;
begin
hTheme := OpenThemeData(Handle, VSCLASS_TREEVIEW);
iPartId := TVP_GLYPH;
iStateId:= GLPS_CLOSED;
//iPartId := TVP_TREEITEM;
//iStateId:= TREIS_NORMAL;
if hTheme <> 0 then
try
//if (IsThemeBackgroundPartiallyTransparent(hTheme, iPartId, iStateId)) then
// DrawThemeParentBackground(Handle, PaintBox1.Canvas.Handle, nil);
DrawThemeBackground(hTheme, PaintBox1.Canvas.Handle, iPartId, iStateId, Rect(0, 0, 31, 31), nil);
finally
CloseThemeData(hTheme);
end;
end;
Я проверяю пару инструментов, таких как приложение, сделанное Andreas Rejbrand и this, но я не могу найти изображение, которое я хочу.
Мой вопрос: как я могу получить изображение стрелки?
UPDATE
Благодаря ответу на Стигма я нашел дополнительные ресурсы для значений частей и состояний класса Explorer::Treeview
.