Я получил способ сделать это! Так, я отправлю Ответ на этот вопрос сам ~, но Реми Лебо вдохновило меня. в начале, я использовал DrawFrameControl()
, чтобы сделать кнопку в списке. Он работает, но стиль был похож на классический стиль окна, и трудно сделать задний цвет, как в примере на рис. тогда, я использовал FillRect()
и DrawEdge()
сделать кнопку, я думаю, что это хорошо, вот код:
hitPoint := lst1.ScreenToClient(Mouse.CursorPos);
// there is a btnRect var of the Button Rect
edgeRect.Left := btnRect.Left - 1;
edgeRect.Top := btnRect.Top - 1;
edgeRect.Right := btnRect.Right + 1;
edgeRect.Bottom := btnRect.Bottom + 1;
// make button
lst1.Canvas.FillRect(btnRect);
// make edge, FListMouseDown is bool var and setting value at MouseDown/MouseUp Event
//
if PtInRect(edgeRect, hitPoint) and FListMouseDown then begin
DrawEdge(lst1.Canvas.Handle, edgeRect, EDGE_ETCHED, BF_RECT); // button down style
end else begin
DrawEdge(lst1.Canvas.Handle, edgeRect, EDGE_RAISED, BF_RECT);
end;
Следующая работа сохранить Rect кнопок в памяти, написать код события ButtonOnClick, и вызов ButtonOnClick событие в ListMouseUp()
Событие после того, как судья, если точка попадания мыши находится в кнопке Rect, код не имеет значения, как показано на рисунке выше, кнопки, поэтому он опущен
Какая версия Delphi вы используете? Используете ли вы VCL или FireMonkey для своего пользовательского интерфейса? Для чего-то вроде этого я обычно использую рисование владельца (например, используя функцию DrawFrameControl() 'или' DrawTheme ...() ', когда я хочу создавать элементы управления, которые используют стандартный внешний вид пользовательского интерфейса) для решения проблемы прокрутки, а затем использовать чтобы проверить клики на рисованных участках для запуска действий по мере необходимости. И «TListBox», и «TListView» поддерживают собственный чертеж. –
@Remy Тем не менее он все же зависит от того, используется ли 'VCL' или' FMX'. Для каждой задачи требуется совершенно другой ответ. –
Мне также интересно, почему этот вопрос помечен 'web', и почему образ образца выглядит так, как будто он приходит с веб-страницы ... –