如图所示,我需要在每个项目上创建一个带有按钮的列表,项目左下角有一个按钮,右下角有一些按钮。
我使用ListBox
控件和ListBox
上面的Panel中的一些按钮制作演示应用,但是当ListBox
滚动时,很难让按钮跟随ListItem
}。
谁能提供帮助,谢谢~~~
答案 0 :(得分:0)
我找到了成功的方法!所以,我会自己发布答案,但是Remy Lebeau给了我灵感。
在开始时,我使用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 of Buttons存储在内存中,编写ButtonOnClick事件代码,并在判断Mouse Hit Position是否在Button Rect中之后调用ListMouseUp()
事件中的ButtonOnClick事件,Code不重要上面的图纸按钮,因此省略