AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hauptmenü mit Toolbar verbinden

Ein Thema von schöni · begonnen am 9. Feb 2005 · letzter Beitrag vom 10. Jan 2019
Antwort Antwort
Seite 1 von 2  1 2      
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#1

Hauptmenü mit Toolbar verbinden

  Alt 9. Feb 2005, 11:49
Hallo Delphi Kenner!

Ich will einen Toolbar verwenden, um ein Menü anzuzeigen. Es gibt ja diese schönen sogenannten Floating Toolbars. Mein Problem: Die ActionBand-Kompos fehlen in der D7 Personal. Es gibt zwar schöne Drittanbieterkompos für sowas. Aber wie macht man das selber. Kann man ja nur von lernen. Ich hab es zuerst mit Popup-Menüs versucht, da der ToolBar nur Popupmenüs zuläßt. Auch die Toolbuttons akzeptieren nur Popup-Menüs. Das Problem dabei ist, daß das Maustracking dann nicht optimal funzt. Wenn ich ein Menü in einer sonstigen Anwendung offen habe und mit der Maus die Menüleiste enltangfahre, öffnet sich jeweils dasjenige Menü, das ich mit dem Mauszeiger anwähle. Und genau dieses Verhalten kriege ich bei meinem Menü-ToolBar nicht hin. Will ich aber haben. Jedoch muß ich bisher jedes Menü neu anklicken, damit es sich öffnet. Deshalb habe ich folgendes versucht:

Delphi-Quellcode:
procedure TMenuToolBar.CreateButtons;
var btn: array of TMenuToolButton; i: Integer;

 function AssignedMenu(Src: TMenu; Index: Integer): TMenu;
 var j: Integer; Dst: TMainMenu;
 begin
    Dst := nil;
    Result := nil;
    if Assigned(Src) then
    begin
      if (Index >= 0) and (Index <= Src.Items.Count-1) then
      begin
        Dst := TMenu.Create(self);
        for j := 0 to Src.Items[Index].Count-1 do
        Dst.Items.Add(Src.Items[Index].Items[j]);
      end;
    end;
    Result := Dst;
 end;

begin
   if Menu <> NIL then
   begin
     SetLength(btn, Menu.Items.Count);
     for i:=0 to Menu.Items.Count-1 do
     begin
       btn[i] := TMenuToolButton.Create(self);
       btn[i].Parent := TMenuToolBar;
       btn[i].ToolBar := TMenuToolBar;
       btn[i].AutoSize := true;
       if Menu<>NIL then
       begin
         btn[i].Caption := Menu.Items[i].Caption;
         btn[i].Menu := AssignedMenu(Menu,i);
// btn[i].PopupMenu := TPopupMenu(btn[i].Menu);
// PopupMenü will ich eigentlch vermeiden, Es sei denn, das Maustracking ist irgenwie
// hinzukriegen. Dann konnte ich vielleicht auch ein Popup-Menü erzeugen, dem ich die
// Menu.Items vom entspr. Hauptmenü zuweise. Aber ohne Maustracking?
       end;
     end;
   end;
end;
Ich will damit erreichen, das einem ToolButton der Caption des jeweiligen Hauptmenüs zugewiesen wird und die Menüs, die dann aufklappen, dem jeweiligen Menü des ToolButtons zuweisen. Jedoch akzeptiert ein Standard-ToolButton nur Popup-Menüs, womit das Problem mit dem Maustracking bestehen bliebe. Deshalb habe ich die Unterfunktion AssignedMenu geschrieben, mit der ich ein generisches Menü zuweisen will. Aber Delphi beschwert sich mit EAbstractError. Wenn ich aber in AssignedMenu(src: TMainMenu; Index: Integer): TMenu; schreibe, gibt es Typkonflikt bzw. Feler: Menü wurde zweimal zugewiesen.

Ich will eine Toolbarkompo entwickeln, der ich ein TMainMenu zuweisen kann. Um alles andere soll sich die Methode CreateButtons kümmern. Die Klassendefinition ist wie folgt:

Delphi-Quellcode:
type
 TMenuToolbar = class(TToolbar)
   ..... //was sonst noch so geraucht wird
   FMenu: TMainMenu;
   procedure SetMenu: value: TMainMenu);
   procedure CreateButtons;
 public
   constructor create(AOwner: TComponent);
 published
   Menu: TMainMenu read FMenu write SetMenu;
   ..... //anderes Zeug
 end;

procedure SetMenu(value: TMainMenu);
begin
  if value <> nil then if value <> FMenu then FMenu := value;
  CreateButtons;
end;
Wer kann mir helfen?

In guter Hoffnung verbleibt

schöni
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat
Progcoder

Registriert seit: 8. Feb 2005
17 Beiträge
 
#2

Re: Hauptmenü mit Toolbar verbinden

  Alt 9. Feb 2005, 13:03
Hallo schöni!

Da wird Dit nichts weiter übrig bleiben, als eine neue Menükomponente abzuleiten, die sich genau so, wie ein Hauptmenü verhält. Und ein neuer ToolButton, der die Items des jeweiligen Hauptmenüs aufnehmen kann, ist ebenfalls Pflicht. Ich hoffe, Dir damit ein Stück geholfen zu haben.



Tschüß

Progcoder
Dumm kann man ruhig sein. Man muß sich nur zu helfen wissen.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#3

Re: Hauptmenü mit Toolbar verbinden

  Alt 9. Feb 2005, 13:18
Hallo Schöni,

mit den ActionBands kannst du das ganze etwas einfacher lösen. Sieh einfach mal in der Online-Hilfe unter Delphi-Referenz durchsuchenActionBands nach, da müsste auch eine Verwendungsanleitung stehn. Evtl. helfen dir auch noch ein paar andere Suchbegriffe: [oh]TActionManager, TActionMainMenuBar, TActionToolBar[/oh]

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#4

Re: Hauptmenü mit Toolbar verbinden

  Alt 9. Feb 2005, 13:33
Hallo alcaeus!

Das Problem ist, dass in der D7 Personal die ActionBand Kompos fehlen. Und da dachte ich mir, machst das mal selber, kannst ja dabei nur lernen. Und ich brauche noch bissl Übung mit der Verwendung der einzelnen Ereignisse. Na ja, und da selber programmieren am meisten bildet, mach ich das halt.

Auch wenn Dein Rat erst mal nicht weiterhilft, weil D7 Personal... sei trotzdem gegrüßt von

schöni
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat
delphifan2004

Registriert seit: 26. Nov 2004
Ort: Dresden
274 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Hauptmenü mit Toolbar verbinden

  Alt 9. Feb 2005, 17:17
Hallo schöni!

Ich weiß nicht ob das klappt, aber versuch mal, Deine Menu-Items zuerst in eine Stringliste zu laden, dann das Hauptmenü freizugeben und dann die Items aus der Stringliste der Eigenschaft DropDownMenu.Items zuzuweisen. Damit ist das Maustracking zwar noch nicht gelöst, aber die Menüzuweisung dürfte dann erst mal klappen. Mehr kann ich Dir momentan auch nicht raten. Ich hoffe, das hilft erst mal n Stück

Mfg

Delphifan2004
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Hauptmenü mit Toolbar verbinden

  Alt 9. Feb 2005, 17:22
Hi,

Du kannst auch mit den Standardkomponenten ganz einfach Dein Vorhaben realisieren.

Gehe dabei wie folgt vor
  • TMainMenu auf die Form, TToolbar auf die Form
  • Im MainMenu Deine Einträge entwerfen
  • Anschließend im Objekt Inspektor die "MainMenu" Eigenschaftes des Formulares leeren (das Menü sollte nun aus der Form veschwinden)
  • Bei der Toolbar die Eigenschaft "Menu" auf das MainMenu setzen
  • Vóila

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#7

Re: Hauptmenü mit Toolbar verbinden

  Alt 9. Feb 2005, 18:46
Hallo mirage228!

Perfekt. Genau, was ich wollte. Danke. Da mache ich das jetzt auch so.

Es grüßt Dich

schöni
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat
profmaster

Registriert seit: 9. Feb 2005
Ort: Frakfurt/Oder
21 Beiträge
 
Delphi 7 Professional
 
#8

Re: Hauptmenü mit Toolbar verbinden

  Alt 9. Feb 2005, 19:19
Hallo!

Ich beschäftige mich grad mit der Toolbar-Kompo und beim Stöbern in der Delphi Praxis bin ich auf das Thema hier gestoßen. Hab das auch gleich mal ausprobiert. Funzt auch. Aber nur für eine VCL Anwendung. Wie kriege ich das gleiche mit einer CLX Anwendung hin? Da fehlt dem Toolbar die Eigenschaft Menu. Zumindest erscheint sie nicht im Objektinspektor. Es gibt ein DropDownMenu, das ist aber vom Typ PopupMenu. Und es gibt die PopupMenu Eigenschaft, aber eben kein MainMenu.

Wer kann mir den richtigen Tipp für eine CLX Anwendung geben?

Profmaster grüßt Euch und dankt schon jetzt für Eure Hilfe.
  Mit Zitat antworten Zitat
Progcoder

Registriert seit: 8. Feb 2005
17 Beiträge
 
#9

Re: Hauptmenü mit Toolbar verbinden

  Alt 9. Feb 2005, 20:49
Hallo profmaster!

Schau dir mal folgenden Link an: http://<img src="styles/elise/misc/i...clxtoolbar</a>

Viel Erfolg

Progcoder
Dumm kann man ruhig sein. Man muß sich nur zu helfen wissen.
  Mit Zitat antworten Zitat
profmaster

Registriert seit: 9. Feb 2005
Ort: Frakfurt/Oder
21 Beiträge
 
Delphi 7 Professional
 
#10

Re: Hauptmenü mit Toolbar verbinden

  Alt 9. Feb 2005, 23:03
Danke progcoder, werde mir die Kompo kaufen. Ist kommerziell, aber igr Geld wert.

Sei gegrüßt von profmaster
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:31 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