Seite 2 von 2

Re: Erstes Zeichen im ButtonGadget unterstreichen

Verfasst: 01.06.2015 15:38
von ts-soft
NicTheQuick hat geschrieben:Muss man unter Windows mittlerweile nicht die Alt-Taste gedrückt halten, damit man diese Unterstreichungen sieht?
Alt- oder Control-Taste, weiß ich im moment auch nicht (nutze im moment auch Linux), aber eine von beiden sollte mit STARGÅTEs-Code funktionieren. Oder den XP-Style entfernen.

Re: Erstes Zeichen im ButtonGadget unterstreichen

Verfasst: 01.06.2015 15:40
von RSBasic
ts-soft hat geschrieben:
NicTheQuick hat geschrieben:Muss man unter Windows mittlerweile nicht die Alt-Taste gedrückt halten, damit man diese Unterstreichungen sieht?
Alt- oder Control-Taste, weiß ich im moment auch nicht (nutze im moment auch Linux), aber eine von beiden sollte mit STARGÅTEs-Code funktionieren. Oder den XP-Style entfernen.
Es ist die Alt-Taste.
Bei Buttons funktioniert es auch, nur bei TextGadgets muss man es manuell aktivieren. Aufgrund der Standard-Deaktivierung (#SS_NOPREFIX) funktioniert die Darstellung eines Unterstrichs nicht. Man muss nachträglich diese Konstante entfernen, damit es wieder funktioniert.

Re: Erstes Zeichen im ButtonGadget unterstreichen

Verfasst: 01.06.2015 17:37
von udg
STARGÅTE hat geschrieben: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.
Ich bin gerade auch auf der Suche nach einer Lösung für das Problem, einen Buttontext zu unterstreichen. Ich habe dein Beispiel einmal in PureBasic 5.3 geladen. Leider wird nichts unterstrichen :(

gibt es eine Möglichkeit dies zu realisieren? Ich stelle einen Flat Button dar.

Grüße

Re: Erstes Zeichen im ButtonGadget unterstreichen

Verfasst: 01.06.2015 18:37
von RSBasic
@udg
Drücke die Alt-Taste, dann hast du eine Unterstreichung. Vorausgesetzt, es gibt kein Menü, weil das Menü eine höhere Priorität hat.

Re: Erstes Zeichen im ButtonGadget unterstreichen

Verfasst: 01.06.2015 20:10
von NicknameFJ
Möglicherweise ist es ein Fehler des Nutzers :mrgreen:


Ging mir auch so.

sh. hier

http://www.purebasic.fr/german/viewtopi ... 0&start=15

NicknameFJ

Re: Erstes Zeichen im ButtonGadget unterstreichen

Verfasst: 04.06.2015 18:53
von friedelinde
Vielen Dank für die Hinweise.
Wenn man die Standard-Deaktivierung (#SS_NOPREFIX) aufhebt, lassen sich auch in Textgadgets tatsächlich Zeichen unterstreichen und mit einem Shortcut ansprechen. Das Beispiel unten lässt sich mit Sicherheit noch verbessern, aber es funktioniert.

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))
  
  TextGadget(2, 10, 30, 480, 20, "T&ext2", 0)
  SetWindowLongPtr_(GadgetID(2), #GWL_STYLE, GetWindowLongPtr_(GadgetID(2), #GWL_STYLE) & ~#SS_NOPREFIX)
  SetGadgetText(2, GetGadgetText(2))
  
  ButtonGadget(3,10,50,480,20,"&Auswahl 1",#PB_Button_Toggle)
  ButtonGadget(4,10,80,480,20,"A&uswahl 2",#PB_Button_Toggle)
  
  CheckBoxGadget(5,10,150,100,20,"        Check&Box",0)
  SetWindowLongPtr_(GadgetID(5),#GWL_STYLE,GetWindowLongPtr_(GadgetID(5),#GWL_STYLE) | #BS_LEFTTEXT)
  ;
  AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_T, 1)
  AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_E, 2)
  AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_A, 3)
  AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_U, 4)
  AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_B, 5)
  
  ; damit unabhängig von den Windowseinstellungen die unterstrichenen Shortcuts sofort angezeiogt werden
  keybd_event_(#VK_MENU,0,0,0)                ; ALT DRUECKEN
  keybd_event_(#VK_MENU,0,#KEYEVENTF_KEYUP,0) ; ALT LOSLASSEN 
;   
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow : Break
        
      Case #WM_KEYDOWN 
        Debug "KEYDOWN: " + Str(EventwParam()) 
        
      Case #WM_KEYUP 
        Debug "KEYUP  " + Str(EventwParam()) ;  
        Select EventwParam()
            Case 65
              SetGadgetState(3,0)  ; button loslassen
            Case 85
              SetGadgetState(4,0);   button loslassen
       EndSelect
         
      Case #PB_Event_Menu
        Select EventMenu()
          Case 1
            Debug "Text"
          Case 2
            Debug "Text 2"  
          Case 3
            SetGadgetState(3,1); button eindrücken
            Debug "Auswahl 1" 
          Case 4
            SetGadgetState(4,1); button eindrücken
            Debug "Auswahl 2"
          Case 5 
            If GetGadgetState(5)=#PB_Checkbox_Unchecked
                SetGadgetState(5,#PB_Checkbox_Checked  );
            Else
                 SetGadgetState(5,#PB_Checkbox_Unchecked  );
            EndIf
                Debug "Checkbox"
        EndSelect
    EndSelect
  ForEver
EndIf
;   

Re: Erstes Zeichen im ButtonGadget unterstreichen

Verfasst: 05.06.2015 02:52
von udg
Ich pers. unterstreiche meinen Buttontext nun einfach mit: #PB_Font_Underline :)

Schnipsel

Code: Alles auswählen

Btn_Nfo = ButtonGadget(#btnRemove_NFO,130,340,50,13,"Clear NFO") ; Button: Lösche Inhalt in NFO Feld
SetGadgetFont(#btnRemove_NFO, LoadFont(#Font_btnRemove_NFO, "Arial", 8, #PB_Font_HighQuality | #PB_Font_Underline)) ; Button Font
grüße

Re: Erstes Zeichen im ButtonGadget unterstreichen

Verfasst: 05.06.2015 02:55
von NicTheQuick
Es ging ja darum nur ein Zeichen zu unterstreichen.

Re: Erstes Zeichen im ButtonGadget unterstreichen

Verfasst: 05.06.2015 02:57
von udg
NicTheQuick hat geschrieben:Es ging ja darum nur ein Zeichen zu unterstreichen.
Stimmt.
sorry