Delphi 如何拥有Draw PopupMenuItem复选标记
如何在弹出菜单项上绘制复选标记 我试过这个:Delphi 如何拥有Draw PopupMenuItem复选标记,delphi,delphi-xe4,Delphi,Delphi Xe4,如何在弹出菜单项上绘制复选标记 我试过这个: var iLeftPos: Integer; iTopPos: Integer; iText: string; iState: integer; iGlyphRect: TRect; begin iTopPos := ARect.Top + (ARect.Bottom - ARect.Top - ACanvas.TextHeight('W')) div 2; { Draw checkmark } iGl
var
iLeftPos: Integer;
iTopPos: Integer;
iText: string;
iState: integer;
iGlyphRect: TRect;
begin
iTopPos := ARect.Top + (ARect.Bottom - ARect.Top -
ACanvas.TextHeight('W')) div 2;
{ Draw checkmark }
iGlyphRect := Rect(0, iTopPos, 20, iTopPos + 20);
if Touch2.Checked then
begin
iState := iState or DFCS_MENUCHECK;
DrawFrameControl(ACanvas.handle, iGlyphRect, DFC_POPUPMENU, iState);
end;
end;
但它得出这样的结论:
这解决了问题。谢谢特拉玛
if Touch2.Checked then
begin
iState := iState or DFCS_MENUCHECK;
DrawFrameControl(ACanvas.handle, iGlyphRect, DFC_MENU, iState);
end;
您的代码中的
iState
变量可能有随机值。但是无论如何,您可以为DFC_菜单
类型而不是DFC_弹出菜单
绘制该复选框。不知道为什么,但是DFC_POPUPMENU
类型的状态将DrawFrameControl
呈现为Windows 7计算机上系统菜单按钮的图标(最小化、最大化、关闭和帮助图标)。屏幕截图上只有最小化图标。带有iState
的语句是无用的。一件事是iState
变量值未初始化,第二件事是uState
只能是DFCS\u菜单的一个值…
标志,而不是任何组合。只需删除该行并直接将DFCS_MENUCHECK传递给uState
参数。@TLama。。是的,我也找到了。多谢各位。