Announcement

Collapse
No announcement yet.

PopUpMenu wieder schließen (Delphi 3.0x)

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

  • PopUpMenu wieder schließen (Delphi 3.0x)

    Hallo...

    ich habe mein Prog. als Icon in die TNA verschoben und die Hauptform per 'hide' versteckt. Das TNA-Icon enthält ein PopUp-Menu das wie gewohnt aufgerufen werden kann allerdings verschwindet es nicht, wenn ich irgendwo anders hin-'click'e. Wie kann ich es veranlassen, das das PopUpMenu von selbst wieder verschwindet, wenn ich außerhalb des Menüs 'click'e?<br>
    <br>
    Vielen Danke<br>
    <br>
    Nico Stöckigt<br>
    <br>
    <br>

  • #2
    Hi Nico

    Das Problem ist das wenn Du das PopupMenu darstellst Deine Anwendung NICHT das Vordergrund Fenster ist. Ich nehme mal an Du reagierst irgendwo in Deinen Sourcen auf WM_RButtonDown: Ich habe es so gelöst:

    procedure DoButtonUp(RightButton: Boolean);
    begin
    if Screen.ActiveCustomForm <> nil then
    SetForegroundWindow(Screen.ActiveCustomForm.Handle )
    else SetForegroundWindow(Handle); // handle der TrayIcon Componente
    if RightButton and (PopupMenu <> nil) and PopupMenu.AutoPopup then
    begin
    SendCancelMode(nil);
    PopupMenu.PopupComponent := Self;
    with ClientToScreen(SmallPointToPoint(TWMMouse(Msg).Pos )) do
    PopupMenu.Popup(X, Y);
    end else inherited WndProc(Msg);
    end;

    Gruß Hage

    Comment


    • #3
      Oh, scheiß Formatierung, man kann immer noch nicht einfach mal einen Text mit CR's schreiben oder hineinkopieren.

      procedure DoButtonUp(RightButton: Boolean);

      begin

      if Screen.ActiveCustomForm <> nil then

      SetForegroundWindow(Screen.ActiveCustomForm.Handle )

      else

      SetForegroundWindow(Handle);

      if RightButton and (PopupMenu <> nil) and PopupMenu.AutoPopup then

      begin

      SendCancelMode(nil);

      PopupMenu.PopupComponent := Self;

      with ClientToScreen(SmallPointToPoint(TWMMouse(Msg).Pos )) do

      PopupMenu.Popup(X, Y);

      end else inherited WndProc(Msg);

      end

      Comment


      • #4
        Hagen,

        es geht, wenn mit das PRE-Tag verwendet: < pre > .... < /pre >:
        <pre>
        procedure DoButtonUp(RightButton: Boolean);
        begin
        if Screen.ActiveCustomForm <> nil then
        SetForegroundWindow(Screen.ActiveCustomForm.Handle )
        else
        SetForegroundWindow(Handle);
        if RightButton and (PopupMenu <> nil) and PopupMenu.AutoPopup then
        begin
        SendCancelMode(nil);
        PopupMenu.PopupComponent := Self;
        with ClientToScreen(SmallPointToPoint(TWMMouse(Msg).Pos )) do
        PopupMenu.Popup(X, Y);
        end
        else
        inherited WndProc(Msg);
        end;
        </pre>

        P.S: Es freut mich, Dich hier wieder anzutreffen

        Comment


        • #5
          Hi Andreas

          Ja, ich weis um die "pre" und "br" und sonstwas. Mir reicht es aber
          wenn die beschis..en einfache Formatierungsmöglichkeiten eines ganz
          normalen Texteditors unterstützt würde. Ich brauche eine
          schnelle/einfache Formatierung und keine schöne und umständliche.
          Es kostet schon viel Zeit auf die Fragen einzugehen und Lösungen zu
          finden. Aber die aufwendige Editierung hier schreckt micht dann ab zu
          antworten. leider.

          Kurz gesagt: Ich will einen bestehenden Quelltext nicht nochmal
          aufarbeiten mit unsinnigen "pre" usw. sondern einfach einfügen.

          Übrigens: ALLE anderen Foren die ich besuche können das, warum dieses Forum nicht ?!

          Gruß Hage

          Comment


          • #6
            Hallo Hagen,

            da fragst Du den Falschen. Ich kann mit dieser Lösung gut leben, denn die < pre > / < /pre >-Tags muss ich nur unmittelbar vor und nach dem über die Zwischenablage kopierten Sourcecode einfügen.

            Wie sagt doch ein bekanntes Sprichwort: "<i>Einem geschenkten Gaul schaut man nicht in' s Maul</i>&quot

            Comment


            • #7
              Halt, hab ich das richtig verstanden, Du fügst die
              "pre" usw. nur einmal vor und nach dem zu formatiernden Text ein ?
              Wart, kann ja gleich mal selber probieren :-)

              <pre>
              function TBigNum.GetSign: Integer;
              asm
              MOV EDX,EAX
              XOR EAX,EAX
              CMP [EDX].TBigNum.FCount,0
              SETNZ AL
              JZ @@1
              MOVZX EDX,Byte Ptr [EDX].TBigNum.FNegative
              SHL EDX,1
              SUB EAX,EDX
              @@1:
              end;
              </pre>

              Cool, funktioniert, ich Idi.t dachte man muß für JEDES "<CR>" so'n "pre" setzten. Nun, dann entschuldige ich mich hiermit beim Forum für meine Unwissenheit :-)

              Gruß hage

              Comment


              • #8
                Hallo Hagen,

                gut das wir darüber gesprochen haben ;-

                Comment


                • #9
                  ... und ich dachte das wäre meine Diskussion... ;o)<br>
                  <br>
                  aber zum Thema Formatierung kann ich auch was beitragen...<br>
                  <br>
                  am Schluß dieser Nachricht steht:<br>
                  <br>
                  &nbsp;&nbsp;&nbsp;...<br>
                  &nbsp;&nbsp;&nbsp;Gruß.br.<br>
                  &nbsp;&nbsp;&nbsp;.nbsp.nbsp.nbsp.Nico.br.<br>
                  &nbsp;&nbsp;&nbsp;.nbsp.br.<br>
                  &nbsp;&nbsp;&nbsp;.nbsp.br.<br>
                  <br>
                  ...und trotzdem hört es bei 'Gruß' auf...<br>
                  <br>
                  <br>
                  Gruß<br>
                  &nbsp;&nbsp;&nbsp;Nico<br>
                  &nbsp;<br>
                  &nbsp;<br&gt

                  Comment

                  Working...
                  X