Erstes Zeichen im ButtonGadget unterstreichen

Anfängerfragen zum Programmieren mit PureBasic.
ullmann
Beiträge: 205
Registriert: 28.10.2005 07:21

Erstes Zeichen im ButtonGadget unterstreichen

Beitrag 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
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Einfach mit "&" vor dem zu unterstreichenden Buchstaben
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
ullmann
Beiträge: 205
Registriert: 28.10.2005 07:21

Beitrag 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
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Wenn die Fragen eindeutig sind, macht es ja auch Spaß, aber manchmal ...
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Jop , man koennte meinen ts-soft wohnt hier. ;-)
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
friedelinde
Beiträge: 12
Registriert: 15.02.2010 16:46

Re: Erstes Zeichen im ButtonGadget unterstreichen

Beitrag 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?
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8808
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Erstes Zeichen im ButtonGadget unterstreichen

Beitrag von NicTheQuick »

Muss man unter Windows mittlerweile nicht die Alt-Taste gedrückt halten, damit man diese Unterstreichungen sieht?
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Erstes Zeichen im ButtonGadget unterstreichen

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Erstes Zeichen im ButtonGadget unterstreichen

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten