AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Ein eigenes menü bei rechtsklick auf taskbar icon
Thema durchsuchen
Ansicht
Themen-Optionen

Ein eigenes menü bei rechtsklick auf taskbar icon

Ein Thema von NikoMitDaMacht · begonnen am 30. Sep 2004 · letzter Beitrag vom 4. Okt 2004
Antwort Antwort
Benutzerbild von NikoMitDaMacht
NikoMitDaMacht

Registriert seit: 27. Apr 2004
Ort: Freiburg
298 Beiträge
 
Delphi 6 Enterprise
 
#1

Ein eigenes menü bei rechtsklick auf taskbar icon

  Alt 30. Sep 2004, 09:05
Wie bekomm ich mein eigenes popup menu in den Taskbar eintrag meines progs? (ich meine nicht das tray-ico)
Niko
Alles was ein Ende hat, hat auch ein Anfang
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.012 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

Re: Ein eigenes menü bei rechtsklick auf taskbar icon

  Alt 30. Sep 2004, 10:29
Dazu musst du das SystemMenu verändern. Das schöne an Delphi ist, dass der Button in der Taskleiste ein eigenes Fenster ist und somit unabhängig von dem eigentlichen ProgrammFormular ein eigenes Menu hat.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  SysMenu: HMENU;
  i: Integer;
begin

  // Hier holen wir uns das Menu aus der Taskleiste...
  SysMenu := GetSystemMenu(Application.Handle, False);
  // und löschen alle Elemente
  while DeleteMenu(SysMenu, 0, MF_BYPOSITION) do;

  // Für jedes Element im PopupMenu
  for i := 0 to Pred(PopupMenu1.Items.Count) do
  begin
    // wird abhängig von der Caption...
    if PopupMenu1.Items[i].Caption = '-then
      // entweder ein Seperator...
      AppendMenu(SysMenu, MF_SEPARATOR, 0, '')
    else
      // oder ein MenuItem mit einer ID basierend auf dem Index erzeugt
      AppendMenu(SysMenu, MF_STRING, WM_USER + Succ(i),
       PChar(PopupMenu1.Items[i].Caption));
  end;
end;
Dann musst du noch ein TApplicationEvents-Objekt auf deinem Formular plazieren und für das Event OnMessage folgendes festlegen:
Delphi-Quellcode:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  // Wenn ein eigenes Menu angeklickt wurde...
  if (Msg.wParam > WM_USER) and
   (Msg.wParam <= (WM_User + PopupMenu1.Items.Count)) then
    // einen Klick auf das zugehörige PopupMenuItem simulieren...
    PopupMenu1.Items[Pred(Msg.wParam - WM_USER)].Click;
end;
Wenn allerdings MenuItems mit Checkhäckchen oder inaktive erstellt werden sollen, ist das etwas aufwändiger. Schau dir doch einfach mal die MSDN-Dokumentation dazu an.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von NikoMitDaMacht
NikoMitDaMacht

Registriert seit: 27. Apr 2004
Ort: Freiburg
298 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Ein eigenes menü bei rechtsklick auf taskbar icon

  Alt 4. Okt 2004, 20:29
Danke!!
Niko
Alles was ein Ende hat, hat auch ein Anfang
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz