Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Menu funktionalität ohne MainMenu (https://www.delphipraxis.net/185292-menu-funktionalitaet-ohne-mainmenu.html)

Mavarik 28. Mai 2015 18:35

Menu funktionalität ohne MainMenu
 
Hallo Zusammen!

Ich möchte die Funktionalität eines MainMenus ohne das Menu haben. Bedeutet...

Ich definieren

&Aufrufen
&Nichtaufruf
&Sonderfunktion
CooleFunktion STRG+C

Wenn keines der MDI-Childs auf Alt-A, Alt-N, Alt-S reagiert hat, möchte ich die Funktionen die hinter meinen Menüpunkten stehen aufrufen...
Das Ganze aber bitte ohne das ein MainMenu dargestellt wird...

Ich brauche also kein Keypreview.... sondern ein Shortcut/Accelerator wurde nicht verwendet Aufruf...

Jemand ne Idee hierfür?

Mavarik

Dalai 28. Mai 2015 18:40

AW: Menu funktionalität ohne MainMenu
 
TActionList?

MfG Dalai

Harry Stahl 28. Mai 2015 19:16

AW: Menu funktionalität ohne MainMenu
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich verwende hier ein TApplicationEvent-Object in der Mainform. Mit der folgenden Abfrage kann ich die Shortcuts aus dem Main-Manu verwenden und die Alt+Buchstabe-Abfrage machen, um z.B. den entsprechenden Menübandeintrag (Alt+S für "Start") anzeigen zu lassen. Gleichzeitig wird sichergestellt, dass bestimmte Alt (+Strg)-Kombinationen von den üblichen Objekten (z.T. TEdit für "@-Zeichen", das man normalerweise mit Alt+Strg+E aufruft) verarbeitet werden können.

Delphi-Quellcode:
procedure Tfrm_Main.AppEvents1ShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
  //Shortcut für mein nicht angezeigtes MainMenu?
  Handled := Menu1.IsShortCut(Msg);

  //Shortcut bzw. Key kam nicht aus dieser Form, daher hier keine weitere Prüfung
  //und statt dessen Verarbeitung in anderer Form (z.B. MDI)
  if Application.ActiveFormHandle <> self.handle then exit;

  if not handled then begin
    // Alt+Strg gedrückt?
    if (Getkeystate (VK_MENU) shr 15 <> 0) and (Getkeystate (VK_Control) <> 0) then begin
      if (msg.CharCode in [69,81]) then begin // @ und €-Zeichen wurden gedrückt
        Handled := false;
        exit;
      end;
    end;
  end;

  if not handled then begin
    // Tasten Alt+Buchstaben (A-Z) gedrückt?
    if Getkeystate (VK_MENU) shr 15 <> 0 then begin
      if (msg.CharCode in [65..90]) or (msg.CharCode.ToString = '186') then begin
        handled := True;
        sleep (10);
        // Tatsächliche Verarbeitung in der Form-KeyUp-Prozedur
        FormKeyup(NIL, msg.CharCode, [ssAlt]);
      end;
    end;
  end;
end;
Beispiel für eine Anwendung im anliegenden Screenshot: Mainmenu ist in Form, wird aber nicht angezeigt (Stattdessen arbeite ich mit eigenen Menübändern, nutze aber die Menüeinstellungen des Mainmenus, für die der User auch benutzerdefinierte Einstellungen vornehmen kann, um so z.B. eigene Shortcuts festzulegen).

Popov 28. Mai 2015 19:50

AW: Menu funktionalität ohne MainMenu
 
In jedem Buch alla "Wie diskutiere ich richtig" steht gleich am Anfang der Tipp: vereinbaren sie zuerst ein gemeinsames Glossar, so dass die Wörter für beide das gleiche bedeuten. Sonst reden sie evtl. aneignender vorbei.

Was meinst du mit "Menu funktionalität ohne MainMenu". Du hast kein Menü oder willst du nicht ein Menü aufklappen?

Dejan Vu 29. Mai 2015 04:47

AW: Menu funktionalität ohne MainMenu
 
Komisch, die anderen drei (Dalai, Harry und ich) haben die Frage verstanden. Vielleicht liegts doch an Dir? ;-)

Popov 29. Mai 2015 05:33

AW: Menu funktionalität ohne MainMenu
 
@Dejan Vu

Und jetzt?

Dejan Vu 29. Mai 2015 06:21

AW: Menu funktionalität ohne MainMenu
 
Und jetzt könntest Du deinen Beitrag überdenken. Ne wahr? ;-)

Daniel 29. Mai 2015 06:22

AW: Menu funktionalität ohne MainMenu
 
Alternativ könnte man auch einfach zum Thema zurück kommen. :roll:

Captnemo 29. Mai 2015 07:21

AW: Menu funktionalität ohne MainMenu
 
Zitat:

Zitat von Popov (Beitrag 1303439)
Was meinst du mit "Menu funktionalität ohne MainMenu". Du hast kein Menü oder willst du nicht ein Menü aufklappen?

Der Maverik möchte die Tastaturfunktionalität, die in einem Mainmenu gegeben ist, ohne Mainmenu auf in seinem Programm nutzen.
So hab ich es jedenfalls verstanden.

Union 29. Mai 2015 07:23

AW: Menu funktionalität ohne MainMenu
 
Du könntest das mit RegisterHotkey / WM_HOTKEY machen. Wobei ich nicht weiß, ob diese Hotkeys dann nicht evtl. durch die MDI-Childs verwendeten, gemergeten Menü-Hotkeys übersteuern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 Uhr.
Seite 1 von 3  1 23      

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