Announcement

Collapse
No announcement yet.

Ereignisabhandlung für selbst erstellten System-Menü-Eintrag

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ereignisabhandlung für selbst erstellten System-Menü-Eintrag

    Hallo,<br>
    Ich habe herausgefunden, wie man einen eigenen Eintrag ins Systemmenü seines Programmes hinzufügen kann.<br>
    Zum Beispiel würde es mich interessieren, wie es gemacht wird, dass man auf "Immer im Vordergrund" klicken kann.<br>
    50% davon habe ich schon, nähmlich den Eintrag, jetzt fehlen noch die anderen 50%, die Ereignisabhandlung.<br>
    Wie weise ich nun diesen neuen Eintrag ein Ereignis OnClick zu?<br>
    Ich habe in diesem Forum schon ein bisschen gesucht nach Systemmenü und hab da im C++-Teil was gefunden, aber da meine C++-Kentnisse nicht so toll sind, habe ich halt nur die ersten 50% verstanden )<br>
    So, wie ich mir das bisher überlegt habe, braucht man (theoretisch!) eine Prozedur, die immer und ununterbrochen abläuft und die Prüft, ob nun dieser eine Eintrag (mit der speziellen ID) geklickt wurde.<br>
    Das erinnert jetzt natürlich sehr an einen Timer, aber ich glaube, das ist soziemlich die unkomvortabelste Lösung von allen.<br>
    Für Hinweise, wie ich das hinbekomme, währe ich sehr dankbar!<br>
    So denn...<br>

  • #2
    Hallo Rene,<br>bei mir sieht die Sache so aus.<br>
    <pre><font size="1" face="Verdana">
    SysMenuCommand = 1; // Konstante für die Systemmenü Erweiterung

    type
    TFormMain = class(TForm)
    ...
    protected
    procedure WMSysCommand(var Message : TWMSyscommand); message WM_SYSCOMMAND;
    public
    ...
    end;

    procedure TFormMain.FormCreate(Sender: TObject);
    var
    MenuHandle : THandle;
    begin
    MenuHandle:=GetSystemMenu(Handle,False);
    AppendMenu(MenuHandle,MF_SEPARATOR,0,'-');
    AppendMenu(MenuHandle,MF_STRING,SysMenuCommand,'SV Ampel -&gt; Info');
    end;

    procedure TFormMain.WMSysCommand(var Message: TWMSyscommand);
    begin
    If Message.cmdType=SysMenuCommand then
    begin
    hmInfo.OnClick(Self);
    end
    else
    inherited;
    end;
    </font></pre>
    <br>Jens Schuman

    Comment


    • #3
      Hallo nochmal,<br>
      vielen Dank für deine Hilfe, dein kleines Beispiel war sehr informativ )<br>
      Ich denke mal, das mit dem "Im Vordergrund" bekomme ich auch noch hin. Teilweise klappt's auch schon, dummerweise sind, wenn FormStyle auf fsStayOnTop gesetzt wird, die Einträge im Systemmenü weg, auch ein neu Eintragen nützt da nichts... aber wie gesagt, wird schon )<br>
      Vielen Dank nochmal!<br>
      Und Tschüss..

      Comment

      Working...
      X