Seite 1 von 2

Erstes Zeichen im ButtonGadget unterstreichen

Verfasst: 27.12.2005 21:18
von ullmann
Hallo,

wie kann ich bei der Beschriftung eines ButtonGadgets das erste Zeichen unterstreichen? Möglichst ohne Win-API-Aufrufe.
Das ist ein üblicher Hinweis an den Nutzer, um auf die Möglichkeit einer zusätzlichen Bedienung des Programms per Tastatur hinzuweisen.

Danke für Antworten.

Rainer

Verfasst: 27.12.2005 21:30
von ts-soft
Einfach mit "&" vor dem zu unterstreichenden Buchstaben

Verfasst: 27.12.2005 21:47
von ullmann
Danke, klappt.

TS-Soft, du scheinst recht oft und vielen zu helfen. Finde ich super, ich hoffe, du behältst das bei.

Rainer

Verfasst: 27.12.2005 21:53
von ts-soft
Wenn die Fragen eindeutig sind, macht es ja auch Spaß, aber manchmal ...

Verfasst: 27.12.2005 21:55
von edel
Jop , man koennte meinen ts-soft wohnt hier. ;-)

Verfasst: 27.12.2005 21:59
von ts-soft
Hab nur Angst, ich könnte einen der hervorragenden API-Tipps von hallodri
verpassen :wink:

Und im moment keine Lust zu proggen, trotz Langeweile.

Re: Erstes Zeichen im ButtonGadget unterstreichen

Verfasst: 01.06.2015 14:47
von friedelinde
Der Tipp mit einem doppelten "&&" PureBasic dazu zu bringen, ein Zeichen zu unterstreichen (so wie hier: Text)

Code: Alles auswählen

EnableExplicit

Define EventID

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  TextGadget(1, 10, 10, 480, 20, "&&Text", 0)
 
  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
funktioniert leider nicht mehr. Offenbar hat sich bei Windows etwas geändert, oder ist das etwa ein Bug von PureBasic?
Egal: Kennt einer eine verlässliche Methode einen Buchstaben zu unterstreichen?

Re: Erstes Zeichen im ButtonGadget unterstreichen

Verfasst: 01.06.2015 15:06
von NicTheQuick
Muss man unter Windows mittlerweile nicht die Alt-Taste gedrückt halten, damit man diese Unterstreichungen sieht?

Re: Erstes Zeichen im ButtonGadget unterstreichen

Verfasst: 01.06.2015 15:26
von RSBasic
Es liegt daran, dass beim TextGadget standardmäßig eine Konstante (#SS_NOPREFIX) aktiviert ist, die dafür sorgt, dass kein Buchstabe mit Hilfe des Und-Zeichens unterstrichen wird.
Um diese Darstellungsfunktion wieder aktivieren zu können, musst du folgendes machen:

Code: Alles auswählen

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  TextGadget(1, 10, 10, 480, 20, "&Text", 0)
  
  SetWindowLongPtr_(GadgetID(1), #GWL_STYLE, GetWindowLongPtr_(GadgetID(1), #GWL_STYLE) & ~#SS_NOPREFIX)
  SetGadgetText(1, GetGadgetText(1))
  
  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
Ob es nur bei PB oder bei allen anderen Anwendungen so ist, weiß ich nicht. Das habe ich nicht getestet.

Re: Erstes Zeichen im ButtonGadget unterstreichen

Verfasst: 01.06.2015 15:28
von STARGÅTE
Das Textgadget hat ja auch keine Interaktionsmöglichkeiten.

Aber bei ButtonGadget oder Menüs gehts:

Code: Alles auswählen

EnableExplicit

Define EventID

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ButtonGadget(1, 10, 10, 480, 20, "&Text", 0)
  CreateMenu(1, WindowID(0))
    MenuTitle("&File")
  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
Im übrigen ist es nur ein &-Zeichen, ein Doppel && erzeugt ja ein normales & das nicht unterstrichen ist.