Seite 1 von 2

Problem: Abstand zwischen Menüeintrag und Tastenkombination

Verfasst: 30.10.2007 21:29
von pebo
Hallo zusammen,

ich habe mal wieder ein kleines Problem und hoffe auf Eure Hilfe.
Wenn ich in einer Menüleiste zu einem Menüeintrag eine Tastenkombination angeben will, kann ich ja den Abstand zwischen Eintrag und Tastenkombi mit Chr(9) "steuern". Wie aber stelle ich es an das ich diesen Abstand noch weiter vergrössern kann?
Zum Beispiel ein Menü von der PB-IDE:

Bild
Da ist zwischen dem Eintrag und der Tastenkombi massig Platz.

Wenn ich ein Menü erstelle und 1 x Chr(9) einfüge, sieht das so aus:
Bild

Ich habe probiert 2 x Chr(9) einzufügen, also z.B.: "Programmhilfe" + chr(9) + chr(9) + "F1"
dann sieht das bei mir so aus:
Bild
Vor dem "F1" wird ein kleines Viereck dargestellt.

Hat da jemand einen Tipp für mich wie ich den Abstand vergrössern kann?
Und dann würde mich auch interessieren, wie man den Text der Tastenkombi's rechtsbündig bekommt wie in dem 1. Menübild (PB-IDE Menü).

Viele Grüsse
Peter

Verfasst: 30.10.2007 22:08
von D@nte
pebo hat geschrieben:Hat da jemand einen Tipp für mich wie ich den Abstand vergrössern kann?
0815 Lösung ohne viel nachdenken:

Code: Alles auswählen

  If OpenWindow(0, 200, 200, 200, 100, "Menu Example")
    If CreateMenu(0, WindowID(0))    ; hier beginnt das Erstellen des Menüs...
      MenuTitle("Project")
        MenuItem(1, "Open"    + "                    " + Chr(9) + "Ctrl+O")
        MenuItem(2, "Save"    + "                    " + Chr(9) + "Ctrl+S")
        MenuItem(3, "Save as" + "                    " + Chr(9) + "Ctrl+A")
        MenuItem(4, "Close"   + "                    " + Chr(9) + "Ctrl+C")
    EndIf
    Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
  EndIf

Verfasst: 30.10.2007 23:32
von pebo
@D@nte

vielen Dank :allright:

Echt simple Lösung die ich erst garnicht probiert habe :oops:
Ich hatte die Idee mit den Leerzeichen im Kopf, dachte aber durch die unterschiedliche Länge der Menüeinträge müsste ich auch unterschiedlich viele Leerzeichen einfügen. Das erschien mir dann zu umständlich und habe es deshalb nicht getestet.
Es reicht sogar aus nur beim 1. Menüeintrag die Leerzeichen einzufügen, die anderen Einträge richten sich dann danach:

Code: Alles auswählen

If OpenWindow(0, 200, 200, 200, 100, "Menu Example") 
    If CreateMenu(0, WindowID(0))    ; hier beginnt das Erstellen des Menüs... 
      MenuTitle("Project") 
        MenuItem(1, "Open"    + "                    " + Chr(9) + "Ctrl+O") 
        MenuItem(2, "Save"    + "" + Chr(9) + "Ctrl+S") 
        MenuItem(3, "Save as" + "" + Chr(9) + "Ctrl+A") 
        MenuItem(4, "Close"   + "" + Chr(9) + "Ctrl+C") 
    EndIf 
    Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow 
  EndIf 
Hast Du vielleicht noch so eine simple Lösung um den Text rechtsbündig auszurichten? :wink:

Gruss
Peter

Verfasst: 31.10.2007 13:18
von Tafkadasom2k5
pebo hat geschrieben: Hast Du vielleicht noch so eine simple Lösung um den Text rechtsbündig auszurichten? :wink:

Gruss
Peter
So?!

Code: Alles auswählen

Spaces.s = Space(15)
If OpenWindow(0, 200, 200, 200, 100, "Menu Example")
    If CreateMenu(0, WindowID(0))    ; hier beginnt das Erstellen des Menüs...
      MenuTitle("Project")
        MenuItem(1, Spaces + "Open"    + "                    " + Chr(9) + "Ctrl+O")
        MenuItem(2, Spaces + "Save"    + "" + Chr(9) + "Ctrl+S")
        MenuItem(3, Spaces + "Save as" + "" + Chr(9) + "Ctrl+A")
        MenuItem(4, Spaces + "Close"   + "" + Chr(9) + "Ctrl+C")
    EndIf
    Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
  EndIf
Oder wie meinst du das ;)

Gr33tz
Tafkadasom2k5

Verfasst: 31.10.2007 14:48
von AND51
> durch die unterschiedliche Länge der Menüeinträge müsste ich auch unterschiedlich viele Leerzeichen einfügen
Das ist überhaupt nicht umständlich, oder wozu gibt es LSet()?

Im übrigen reicht es, nur beim 1. Menüeintrag 20 Leerzeichen einzufügen und bei jedem Menüeintrag wie gehabt ein #TAB$ bzw. Chr(9) anzuhängen.

Verfasst: 31.10.2007 16:10
von Tafkadasom2k5
AND51 hat geschrieben:Im übrigen reicht es, nur beim 1. Menüeintrag 20 Leerzeichen einzufügen und bei jedem Menüeintrag wie gehabt ein #TAB$ bzw. Chr(9) anzuhängen.
Netter Tip :allright:
Ich persönlich finds aber Codeübersichtstechnisch so ein bisschen schöner.

Auf die paar Bytes Arbeitsspeicher kommts mir dann nicht drauf an ;)
Aber gute Idee, wär ich jetzt selber nicht drauf gekommen ^^

Verfasst: 31.10.2007 16:21
von AND51
> wär ich jetzt selber nicht drauf gekommen
Ist aber ziemlich simpel: In der Hilfe steht ja, dass ein Chr(9) die Tastenkombinationen so anpasst, dass auch der längste Eintrag berücksichtigt wird. Und wenn ich nur beim 1. (oder nur beim letzten) Eintrag 20 Leerzeichen hinzufüge, wird daraus der längste EIntrag, an denen sich die anderen ausrichten. <)

Verfasst: 31.10.2007 16:22
von D@nte
@Tafkadasom2k5
Nein so meint er's weohl nit :D
Bild
Schau dir mal ganz unten
"Suchen/Ersetzen... Strg+F"
und
"Weitersuchen F3"
an, ich denke darum wird's im gehen, also das die Menuname linksbündig und die Shortcuts rechtsbündig sind...

@AND51
Das mit dem x-mal Space zwischen Text & Shortcut bei JEDEM MenuItem ist auf meinem Mist gewachsen, pedo hatte schon selber erkannt das es reicht das erste MenuItem mit Spaces zu versehen...

Wobei ich es hier wie Tafkadasom2k5 sehe <3 übersichtliche Quelltextformatierung

Verfasst: 31.10.2007 16:24
von AND51
> also das die Menuname linksbündig und die Shortcuts rechtsbündig sind
Mir fiele nur die Möglichkeit ein, mit einer Kombination aus TextWidth() und Space() zu ermitteln, wie viele Leerzeichen dazwischen passen, damit es so schön aussieht.
Das Problem ist jedoch, dass du nicht weißt, welche Schriftart der Benutzer auf seinem Computer eingestellt hat.

Verfasst: 31.10.2007 18:26
von pebo
AND51 hat geschrieben:Im übrigen reicht es, nur beim 1. Menüeintrag 20 Leerzeichen einzufügen und bei jedem Menüeintrag wie gehabt ein #TAB$ bzw. Chr(9) anzuhängen.
Das hab ich, trotz Anfänger, doch auch schon bemerkt :wink:
Ist aber ziemlich simpel: In der Hilfe steht ja, dass ein Chr(9) die Tastenkombinationen so anpasst, dass auch der längste Eintrag berücksichtigt wird. Und wenn ich nur beim 1. (oder nur beim letzten) Eintrag 20 Leerzeichen hinzufüge, wird daraus der längste EIntrag, an denen sich die anderen ausrichten.
Würde mich mal interessieren wo genau das in der Hilfe steht? Bei der Hilfe zu den Menübefehlen kann ich nähmlich nichts finden, oder habe ich altersbedingt schon eine leichte Sehschwäche :shock: :wink:

Ansonsten danke ich allen für die Hinweise und Tipps :allright:
Das mit dem "rechtsbündig" werde ich mal mit den genannten Befehlen LSet() und Space() probieren, vielleicht bekomme ich da was "einfaches" hin.

Gruss
Peter