AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Speedbutton mit Hauptmenuepunkt?

Ein Thema von Mattze · begonnen am 18. Nov 2015 · letzter Beitrag vom 19. Nov 2015
Antwort Antwort
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#1

AW: Speedbutton mit Hauptmenuepunkt?

  Alt 18. Nov 2015, 11:37
Hallo,

habe ich ja eigentlich geahnt!
Meinst Du mit dem Tipp, ein eigenes Popupmenu mit den "gleichen Einträgen" wie im Hauptmenue basteln?

Daran hatte ich jedenfalls auch schon gedacht. Aber, irgendwie, war das wohl nicht sooo schön bequem...

Auf die Gefahr hin, dass ich jetzt einen lauten Aufschrei höre (obwohl ich gehörlos bin!):
Ich fand TAction immer ziemlich sinnlos. Vielleicht auch deshalb, weil ich das Konzept dahinter nicht richtig verstanden habe. Was hindert mich, mehreren Buttons die gleiche Onclick-Methode zuzuordnen. Was macht TAction besser?

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Speedbutton mit Hauptmenuepunkt?

  Alt 18. Nov 2015, 11:44
Was macht TAction besser?
TAction verwaltet z.B. auch verschiedene Statuswerte (z.B. Enabled, GroupIndex, ImageIndex, Caption usw.) deren Änderung sich auf alle angehängten Clients auswirken. So kann man mit einer Zuweisung gleich alle Buttons/Menus/Popupmenus in- oder ausschalten. Außerdem können mit dem Update-Event einer TAction diese Eigenschaften verwaltet werden ohne selbst viele Statusvariablen verwalten zu müssen.
Ralf Kaiser
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#3

AW: Speedbutton mit Hauptmenuepunkt?

  Alt 18. Nov 2015, 11:58
Hallo,

diese Möglichkeit von TAction habe ich vor ganz Kurzem erst bemerkt.
Wenn man einem Menupunkt ein Untermenu zuordnet, geht das automatische Checked setzen nur per TAction.

Komisch, aber (scheinbar) wahr.

Falls das nicht anders zu machen geht, werde ich wohl doch mal auf TAction übergehen müssen...

Gruß
Mattze
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: Speedbutton mit Hauptmenuepunkt?

  Alt 18. Nov 2015, 12:10
@Mattze:

Offenbar hast du ein HauptMenü (TMainMenu) mit diversen Einträgen und dazu entsprechende Event-Handler. Nun möchtest du via Buttonklick eines dieser Events auslösen. Nichts leichter als das: Dem OnClick des Buttons weist du einfach den Event-Handler zu. Bei Verwendung von TAction weist du dem Action-Property einach das jeweilige TAction-Item zu; damit erhält dein Button dieselbe Caption und reagiert auf denselben Event-Handler.
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#5

AW: Speedbutton mit Hauptmenuepunkt?

  Alt 18. Nov 2015, 17:39
Hallo,

das ist schon klar und kein Problem.

Meine Frage, vielleicht deutlicher:
Ich habe ein Hauptmenu mit 4 Items (Datei, Bearbeiten, Ansicht, Hilfe).
An den Items hängen dann natürlich die "Untermenüs" dran.
Mein Problem:
Ich möchte das "Untermenü", das an Hilfe hängt, über einen Speedbutton aufrufen.
Bloß wie? Einen Namen hat es ja nicht, oder?

Gruß
Mattze
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: Speedbutton mit Hauptmenuepunkt?

  Alt 18. Nov 2015, 18:17
Schau einfach nach:
Delphi-Quellcode:
  for i := 0 to Application.MainForm.Menu.Items.Count - 1 do begin
    ShowMessage(TMenuItem(Application.MainForm.Menu.Items[i]).Caption + #13
              + TMenuItem(Application.MainForm.Menu.Items[i]).Name);
  end;
Wenn Du ein Hauptmenü (TMainMenu) auf dem Formular hast, dann muss es (eigentlich) auch die entsprechenden Einträge für die Untermenüs geben und die müssten auch Namen haben.

Soll denn das Untermenü der Hilfe dann am Speedbutton erscheinen oder soll im Hauptmenü das Menü Hilfe aufgeklappt werden?

Suchst Du eher sowas hier? http://www.delphi-treff.de/tipps-tri...nu-aufklappen/
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#7

AW: Speedbutton mit Hauptmenuepunkt?

  Alt 18. Nov 2015, 19:03
Ob ich dich richtig verstanden habe, weiß ich nicht genau.

Bloß wie? Einen Namen hat es ja nicht, oder?

Gruß
Mattze
Ein Menupunkt z.B. Hilfe hat ganz sicher einen Namen. Wenn du ihn über die GUI angelegt hat, dann lautet er wahrscheinlich "Hilfe1". Dieses MenuItem hat dann Items, die selbst auch TMenuItems sind und eben als SubMenu angezeigt werden.
Jetzt könnte man denken, dass sich ein MenuItem auch einem zweiten Menu zuordnen ließe. Dem ist aber nicht so. Man erhält dann die Exception "Menü zweimal eingefügt".

Aber du könnte die dir einfach eine Kopie des Submenus in ein Popupmenu kopieren.

Ich habe mal einen Beispielcode angehängt. Ggf. ist das das was du machen willst. Ist natürlich nur ein Beispiel. Eigenschaften wie ImageIndex, SubMenuImages, Checked, Enabled usw. kannst du ja bei Bedarf selber noch ergänzen.

[Edit] Nach nochmaligem Lesen des Threads habe ich doch das Gefühl dich falsch verstanden zu haben. Aber je nach Delphiversion verfügt ein TButton über die Eigenschaften DropDownMenu und Style, den man auf bsSplitButton setzen kann und mit dem Popupmenu verbinden kann. Das ermöglicht dann vielleicht etwas in der Art, was du dir vorstellst [\Edit]
Angehängte Dateien
Dateityp: rar PopupMenuTest.rar (644,9 KB, 7x aufgerufen)
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo

Geändert von Captnemo (18. Nov 2015 um 19:45 Uhr)
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#8

AW: Speedbutton mit Hauptmenuepunkt?

  Alt 19. Nov 2015, 08:05
Hallo,

ich hatte eigentlich gehofft, dass ich mir den Umweg über das Popupmenue sparen und das "Hilfemenu" im Grunde als Popup am Speedbutton aufrufen kann.

Konkret:
Ich habe eine Toolbar, die mit dem Hauptmenue verknüpft ist.
Das Hilfemenue hätte ich aber gerne am rechten Rand und nicht als Toolbutton. (Ich möchte nur ein "?", keine Caption und die Dimensionen entsprechend einstellen. Das geht aber beim Toolbutton nicht! Wenn man in der Toolbar die Captions anzeigt, kann man den Button nicht mehr auf Bildgröße ändern, selbst, wenn man für den Toolbutton kein Caption angibt. Ist nur eine Kleinigkeit, sieht aber eben hübscher aus, wenn die Dimension des Schalters dem Bild entspricht!)
Also schreibe ich da einen Speedbutton hin. Das geht auch gut.
Das Problem war eben nur, wie kann ich mit dem Speedbutton das Hilfemenue direkt aufrufen und zwar positioniert am Hilfespeedbutton?

Aber mit dem Popup geht es auch. Wenn man da Ownerdraw:=true setzt, gibt es auch diese hässliche vertikalen Linie nicht mehr.

Gruß
Mattze
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#9

AW: Speedbutton mit Hauptmenuepunkt?

  Alt 18. Nov 2015, 22:48
Hallo, das ist schon klar und kein Problem.
Was genau ist jetzt klar und kein Problem? Ich kann leider nicht hellsehen ...

Meine Frage, vielleicht deutlicher:
Ich habe ein Hauptmenu mit 4 Items (Datei, Bearbeiten, Ansicht, Hilfe).
An den Items hängen dann natürlich die "Untermenüs" dran.
Mein Problem:
Ich möchte das "Untermenü", das an Hilfe hängt, über einen Speedbutton aufrufen.
Bloß wie? Einen Namen hat es ja nicht, oder?
Auch das, was du als "Untermenüs" bezeichnest, sind Items. Alle Einträge in deinem TMainMenu sind Items. Und vor allem: Alle Menü-Items, die du über den Menü-Designer anlegst, erfordern zwingend das Belegen der Name-Eigenschaft. Name, das ist der Name, den deine Menüeinträge angeblich nicht haben.

Die Frage ist doch: Hat das Menü-Item, das du ausführen möchtest, bereits einen Event-Handler? Oder wenn du diese Frage nicht verstehst, anders ausgedrückt: Hast du im Menü-Designer einen Doppelklick auf den Menü-Eintrag ausgeführt und dadurch eine Ereignisbehandlung erzeugt und dort Befehle eingetragen, die ausgeführt werden sollen, sobald der Anwender diesen Menü-Eintrag anklickt? Wenn es da noch keinen Eventhandler gibt, dann wird beim Klick auf diesen Menüeintrag auch nichts ausgeführt. Gibt es bereits einen Eventhandler, dann trage den bei deinem Button in OnClick ein. Was ist daran jetzt so schwierig?

Oder willst du gar nicht dieses Ereignis auslösen und das ausführen, was im Eventhandler zu diesem Menüeintrag steht, sondern lediglich das Menü an dieser Stelle aufklappen? Also irgendwie solltest du schon deutlich machen, was du eigentlich erreichen willst oder was genau es bedeutet, wenn du schreibst: Ich möchte das "Untermenü", das an Hilfe hängt, über einen Speedbutton aufrufen. Das Untermenü kannst du nicht aufrufen, du kannst lediglich den Eventhandler aufrufen. Du kannst auch keinen Button aufrufen, sondern lediglich dessen Eventhandler. Deine Ausdrucksweise ist nicht eindeutig ...
  Mit Zitat antworten Zitat
bepe

Registriert seit: 17. Okt 2006
119 Beiträge
 
#10

AW: Speedbutton mit Hauptmenuepunkt?

  Alt 19. Nov 2015, 19:28
Mir war gerade irgendwie danach... Wenn ich das Problem richtig überflogen habe, dann findest du im Anhang eine(n) Lösung(sansatz).

Das Package DPM registrieren, im FormCreate (oder ähnlichem) dem DynamicPopupMenu.MenuItems das Hilfemenü zuweisen und im Button Click öffnen. Beispielprojekt ist dabei.

ACHTUNG, WARNUNG, VORSICHT etc.: Das ist auf die Schnelle, billig und schlecht zusammen geschustert. Das sollte so, vermutlich, nicht in ein echtes Projekt kopiert werden (meinen Segen hast du). Das soll nur als Inspiration dienen. Also keinerlei Haftung
Angehängte Dateien
Dateityp: zip DPM.zip (6,5 KB, 5x aufgerufen)

mfg,
bp
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 19:01 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