我的自定义菜单是很好的磨磨蹭蹭,当鼠标在链接矩形的范围内可以检测并响应鼠标松开事件。 我现在想它做的是更改链接矩形的颜色,当用户将鼠标悬停其边界内的鼠标。 我之前,但手动,而不是已经设置颜色属性,这样动态。
基本上,没有任何反应。 调试表明,鼠标位置程序可以正常使用,但矩形保持相同的颜色。
我创建ButtonStates的简单数组并设置了颜色:
type
T_ButtonState = (bttn_off);
private
{ Private declarations }
bttnStatus : TOC_ButtonState;
const stateColor : array[T_ButtonState, false..true] of TColor = ((clDkGray, clGray));
而我现在试图操纵T_ButtonState的价值,所以我可以在我的油漆常规设置颜色:
// User actions
procedure T_MenuPanel.MouseMove(Shift:TShiftState; X,Y:Integer);
var
loop : integer;
begin
for loop := 0 to High(MenuRects) do
begin
if PtInRect(MenuRects[loop], Point(X, Y)) then
bttnStatus := bttn_off;
end;
inherited;
end;
这是我的绘图程序:
for count := 0 to fLinesText.Count - 1 do
begin
// Define y2
y2 := TextHeight(fLinesText.strings[count])*2;
// Draw the rectangle
itemR := Rect(x1, y1, x2, y2*(count+1));
Pen.color := clGray;
Brush.color := stateColor[bttn_off][bttnStatus = bttn_off]; // Nothing Happens!!!
Rectangle(itemR);
// Push rectangle info to array
MenuRects[count] := itemR;
// Draw the text
TextRect(itemR, x1+5, y1+5, fLinesText.strings[count]);
// inc y1 for positioning the next box
y1 := y1+y2;
end;