Pour reconnaître visuellement les éléments cochés lors de l'exécution, vous devez personnaliser leur dessin au moment du design.
Si vous avez cette opportunité, définissez votre propriété TPopupMenu.OwnerDraw
sur True
. Ensuite, pour chaque TMenuItem
concerné, vous devrez écrire un comportement pour son événement OnDrawItem
. Par exemple le code ci-dessous (rapidement écrit et non robuste du tout) peut gérer toutes les TMenuItem rendent dans une seule méthode:
procedure TForm1.MyMenuItemDrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Selected: Boolean);
var
_item: TMenuItem;
const
MARGIN = 4;
INDEX_CHECKMARK = 3; // Add a checkmark image in your TImageList
begin
// Get current item
_item := (Sender as TMenuItem);
// Set then fill background color depending on selected state
if Selected then
ACanvas.Brush.Color := clGreen
else
ACanvas.Brush.Color := clMenu;
ACanvas.FillRect(ARect);
ARect.Left := MARGIN;
// Draw a mark if item is checked
if _item.Checked then
AnImageList.Draw(ACanvas, ARect.Left, ARect.Top + 2, INDEX_CHECKMARK);
// Inflate left position even for unchecked items, to keep text left alignement
ARect.Left := ARect.Left + AnImageList.Width + MARGIN;
// Draw image if available
if _item.ImageIndex <> -1 then
AnImageList.Draw(ACanvas, ARect.Left, ARect.Top + 2, _item.ImageIndex);
ARect.Left := ARect.Left + AnImageList.Width + MARGIN;
// Draw caption
DrawText(ACanvas.Handle, PChar(_item.Caption), -1, ARect, DT_LEFT or DT_VCENTER or DT_SINGLELINE or DT_NOCLIP);
end;
Je suppose qu'au lieu d'utiliser une image personnalisée pour votre coche il y a quelques méthodes du système, un la recherche rapide m'amène à la page MSDN suivante qui mentionne DrawCheck
: https://msdn.microsoft.com/en-us/library/windows/desktop/ms647558(v=vs.85).aspx#_win32_Using_Custom_Check_Mark_Bitmaps
Tout article peut être vérifié, itéré et demandé la propriété 'Checked' de l'article. – Victoria
@Victoria: Oui, j'ai mis à jour la question en spécifiant "reconnaître visuellement". Je veux dire que l'utilisateur ne peut pas discerner entre un élément coché et un élément non coché. – ExDev
Ceci est voulu. Si vous avez un groupe d'éléments qui peuvent être vérifiés, ils ne devraient pas avoir d'icônes. –