J'essaye de dessiner sur la toile d'un TTrayIcon mais je n'ai pas de succès. Je suis programmation avec Lazarus V1.6.2 sur Windows 10.Comment dessiner sur un TTrayIcon
Ce que j'ai essayé jusqu'à présent est:
procedure TForm1.TrayIcon1Paint(Sender: TObject);
var
tmpcanvas: TCanvas;
begin
tmpcanvas := TrayIcon1.Canvas;
tmpcanvas := TrayIcon1.Icon.Canvas; // also not working
tmpcanvas.Font.Size := 22;
tmpcanvas.Brush.Color := RGBToColor(255,255,255);
tmpcanvas.FillRect(1,1,200,200);
tmpcanvas.Font.Color := RGBToColor(0,0,0);
tmpcanvas.TextOut(1,1, 'TEST');
end;
J'ai essayé ce code en cas Form1.OnPaint avec les Form1.Canvas et là-bas cela fonctionne comme prévu.
Mais je n'ai pas de chance de peindre sur le TTrayIcon.Canvas. Il semble que le dessin sur toile de TTrayIcon est différent de dessiner sur d'autres canevas ...
Après un débogage, j'ai réalisé que l'événement TTrayIcon.OnPaint n'est jamais déclenché. Mais même quand je force à exécuter TrayIcon1Paint (..) rien ne se passe.
Maintenant, je n'ai plus d'idées. Toute aide est grandement appréciée.
Le système ne fonctionne pas de cette façon. Si vous voulez une icône différente, vous devez fournir une icône différente. Le système sous-jacent n'est pas basé sur des messages de peinture. –
Je souhaite afficher des informations dynamiques sur la barre des tâches. Je pensais que cela devrait fonctionner puisque le "temps de Windows" est aussi "dynamique" –
L'heure de Windows n'est pas une icône de notification et est dessinée par le shell. Il peut faire ce qu'il veut. Vous devez vous adapter à l'API. Et cela demande des icônes. Les icônes de notification ne sont pas découpées pour l'interface utilisateur dynamique riche. –