Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Button ganz rechts im MainMenu
CodexX - Do 19.03.09 20:21
Titel: Button ganz rechts im MainMenu
Ich würde gerne in einem normalen TMainMenu ganz rechts eine Schaltfläche platzieren.
Es könnte z.B. ein normaler Button sein, den ich vom Aussehen anpassen kann. Zur Not würde es sogar reichen, wenn ich ein normales MainMenu-Item ganz rechts plazieren könnte, also mit Leerraum zu den anderen Items, die normal links angeordnet sind (Optimal wäre hier dann, wenn ich den irgendwie leicht hervorheben könnte - durch einen Rahmen o.ä.).
Hat wer eine Idee?
ffgorcky - So 03.05.09 14:43
Hallo CodexX,
also ich wüsste im Moment jetzt nur die Möglichkeit, es durch ein dazwischengeschobenes (nicht anclickbares) Item zu machen, was genau die Anzahl an Leerzeichen hat, so dass Dein Item dann ganz rechts ist.
Aber ich meine, dass ich genau das Thema schon mal irgendwo gelesen habe.
Ich hoffe also, dass noch andere, bessere Vorschläge kommen.
Delete - So 03.05.09 16:23
CodexX hat folgendes geschrieben : |
Ich würde gerne in einem normalen TMainMenu ganz rechts eine Schaltfläche platzieren. |
Menüs haben Menüeinträge. Toolbars haben Schaltflächen. Um was geht es jetzt?
ffgorcky - So 03.05.09 17:02
Gucke Dir mal das Thema
31676 [
http://www.delphi-forum.de/viewtopic.php?t=31676&highlight=menuitem+rechts] an.
Dort steht es doch genau!
(Wusste ich doch, dass es irgendwann schon mal behandelt wurde...)
Oder hier einfach mal der für Dich relevante Teil:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| procedure TEnhancedCtrl.MenuRight(const Value: Byte); var m: TMenuItemInfo; h: hMenu; s: String; begin with Owner as TForm do begin h := GetMenu(Handle); m.cbSize := SizeOf(m); m.cch := SizeOf(s); m.dwTypeData := PChar(@s[1]); m.fMask := MIIM_TYPE;
GetMenuItemInfo(h,Value,true,m); m.ftype := m.ftype or MFT_RIGHTJUSTIFY; SetMenuItemInfo(h,Value,true,m); Refresh; end; end; |
CodexX - Mo 04.05.09 18:05
@ffgorcky
Danke für Deine PN. Aus irgendwelchen Gründen habe ich keine Benachrichtigung bei Euren Postings bekommen...
Zur "MenuRight"-Funktion:
Scheint in die richtige Richtung zu gehen, aber funktioniert irgendwie nicht so wirklich...
Ich habe zum Testen eine neue Form mit einem MainMenu und drei Items und jeweils einem SubItem erstellt. Dann einen Button platziert und ihm die Funktion wie folgt zugewiesen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| procedure TForm1.FormCreate(Sender: TObject); procedure MenuRight(const Value: Byte); var m: TMenuItemInfo; h: hMenu; s: String; begin with Form1 do begin h := GetMenu(Handle); m.cbSize := SizeOf(m); m.cch := SizeOf(s); m.dwTypeData := PChar(@s[1]); m.fMask := MIIM_TYPE;
GetMenuItemInfo(h,Value,true,m); m.ftype := m.ftype or MFT_RIGHTJUSTIFY; SetMenuItemInfo(h,Value,true,m); Refresh; end; end; begin MenuRight(1); end; |
Nach einem Klick auf den Button scheint erstmal nichts zu passieren. Schiebt man jedoch das Fenster aus dem Bildschirmanzeigebereich heraus und wieder herein, sieht man dass der mittlere Menüeintrag verschwunden ist. Die anderen beiden funktionieren normal. Die nicht aktualisierte Anzeige ist durch das Refresh wohl nicht getan und auch ein Repaint brachte nichts.
Bei einem erneuten Klick auf den Button (und wieder Fenster durch Verschieben aktualisieren) befindet sich der dritte Menüeintrag ganz rechts. Der zweite fehlt nachwievor.
Wenn jetzt also der mittlere Menüeintrag (also die übergebene 1) nicht verschwindet und das ganze auch richtig aktualisiert wird, dann wärs top.
Edit: Getestet mit Vista
Luckie hat folgendes geschrieben : |
Menüs haben Menüeinträge. Toolbars haben Schaltflächen. Um was geht es jetzt? |
Es geht um ein TMainMenu. Ob da jetzt ein einzelner Menüeintrag ganz rechts angeordnet wird oder ob es irgendwie möglich ist einen Button auf das Menü ganz rechts zu positionieren, ist mir egal. Hauptsache, da ist ein klickbarer Text.
CodexX - Mo 04.05.09 18:56
Perfekt, danke! :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!