![]() |
[TrayIcon] Bild im Popup-Menu?
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab mir ein Proggie gebastelt, das nur im TNA sichtbar wird und auch ein Popup-Menu hab ich schon ganz schön hingekriegt. Aber wie schaffe ich es, oben (über den verschiedenen Menupunkten) ein Bild anzuzeigen?
Damit ihr auch genau wisst, was ich meine, hab ich mal ein perfektes Beispiel dafür angehängt, was ich will. Es stammt von GDATA InternetSecurity 2008... MfG Z4ppy |
Re: [TrayIcon] Bild im Popup-Menu?
um das hinnzubekommen musst du (glaub ich) den device kontext des menüs ermitteln, und diesen dann erweitern und das bild dort reinzeichnen...
100% ig sicher bin ich mir aber nicht vllt googelst einfach mal nach dem dc und popup menü |
Re: [TrayIcon] Bild im Popup-Menu?
Thx für den Tipp, beim ersten Blick bei Google hab ich noch nix gefunden, aber ich werd mir das morgen nochmal ansehen :)
MfG Z4ppy |
Re: [TrayIcon] Bild im Popup-Menu?
Guck dir mal diese Programme an, die machen auch so etwas.
![]() ![]() Der Quellcode ist mit dabei.
Delphi-Quellcode:
procedure TForm1.PopUpDrawItems(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Selected: Boolean); var r: TRect; FontName: TFontName; ico: TIcon; begin if TMenuItem(Sender).Tag < 0 then begin ACanvas.Brush.Color := clInactiveCaption; ACanvas.Pen.Color := clCaptionText; ACanvas.Font.Color := ACanvas.Pen.Color; FontName := ACanvas.Font.Name; ACanvas.Font.Name := 'arial'; case TMenuItem(Sender).Tag of -1: begin Inflaterect(ARect, -1, -1); DrawGradient(ACanvas, ARect, TRUE, [clGradientActiveCaption, clGradientInactiveCaption]); // oder: DrawGradient(ACanvas, ARect, TRUE, [$00964220, $00BD8045]); DrawMYCaption(ACanvas, ARect, TMenuItem(Sender).Caption, DT_SINGLELINE or DT_VCENTER or DT_CENTER, TRUE, TRUE); end; -2: begin DrawGradient(ACanvas, ARect, FALSE, [clGradientActiveCaption, clGradientInactiveCaption, clGradientActiveCaption]); //oder: DrawGradient(ACanvas, ARect, FALSE, [$00964220, $00BD8045, $00964220]); ico := TIcon.Create; ico.Handle := LoadIcon(HInstance, MAKEINTRESOURCE(2) ); ACanvas.Draw(4, 1, ico); FreeAndNil(ico); // oder: ACanvas.Draw(1, 1, Application.Icon); ACanvas.Font.Style := ACanvas.Font.Style + [fsBold]; ACanvas.Font.Size := ACanvas.Font.Size + 6; DrawMYCaption(ACanvas, ARect, TMenuItem(Sender).Caption, DT_SINGLELINE or DT_VCENTER or DT_CENTER, TRUE, TRUE); ACanvas.Font.Size := ACanvas.Font.Size - 6; ACanvas.Font.Style := ACanvas.Font.Style - [fsBold]; end; end; ACanvas.Font.Name := FontName; end else begin if TMenuItem(Sender).IsLine then begin Inflaterect(ARect, -2, -3); DrawGradient(ACanvas, ARect, TRUE, [clBtnFace, clBtnHighlight]); end else begin ACanvas.FillRect(ARect); FontName := ACanvas.Font.Name; ACanvas.Font.Name := mnuExtraFont; ACanvas.Font.Color := clNavy; //ACanvas.Font.Style := [fsBold]; ACanvas.Font.Size := ACanvas.Font.Size + 4; r := ARect; r.Right := mnuCheckBoxWidth; if TMenuItem(Sender).Hint = 'Checker' then if TMenuItem(Sender).Checked then DrawMYCaption(ACanvas, r, 'R', DT_SINGLELINE or DT_VCENTER or DT_CENTER, FALSE) else DrawMYCaption(ACanvas, r, '£', DT_SINGLELINE or DT_VCENTER or DT_CENTER, FALSE); //ACanvas.Font.Style := []; ACanvas.Font.Size := ACanvas.Font.Size - 4; ACanvas.Font.Name := FontName; if TMenuItem(Sender).Enabled then begin if not Selected then ACanvas.Font.Color := clMenuText else ACanvas.Font.Color := clHighlightText; end else ACanvas.Font.Color := clGrayText; ARect.Left := mnuCheckBoxWidth; DrawMYCaption(ACanvas, ARect, TMenuItem(Sender).Caption, DT_SINGLELINE or DT_VCENTER or DT_LEFT, FALSE); end; end; end; procedure TForm1.mnuOnMeasureItem(Sender: TObject; ACanvas: TCanvas; var Width, Height: Integer); begin Width := Width + mnuCheckBoxWidth; if TMenuItem(Sender).Tag = -2 then Height := Application.Icon.Height + 2; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz