Menü Refresh nach SetMenuTitleText?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Eckhard.S
Beiträge: 136
Registriert: 22.07.2006 17:19
Wohnort: Meschede/Sauerland

Menü Refresh nach SetMenuTitleText?

Beitrag von Eckhard.S »

Ein Menü soll umbenannten werden.
Die umbenannten Items mit SetMenuItemText sind sofort da.
Beim Menütitel setzt sich nach SetMenuTitleText der neue aber auf den alten.
Kann man mit dem Menü einen Refresh machen (ohne das ganze Fenster neu aufzubauen)?

Code: Alles auswählen

If OpenWindow(0, 200, 200, 200, 100, "MenuTitle Example")
    If CreateMenu(0, WindowID(0))
      MenuTitle("Project")      ; normaler Menü-Titel mit nachfolgenden Einträgen
        MenuItem(1, "Open")  
        MenuItem(2, "Close")
      MenuTitle("&Edit")        ; Menü-Titel mit unterstrichenem Zeichen, die Unterstreichung wird 
                                ; jedoch nur angezeigt, wenn das Menü mit der F10-Taste aufgerufen wird
        MenuItem(3, "Undo")
        MenuItem(4, "Redo")
      MenuTitle("About")        ; nur Menü-Titel
    EndIf
    
    ;neu_beschriften:
    
  SetMenuTitleText(0, 0, "Datei")   
   
   SetMenuItemText(0, 1,"Öffnen")
   SetMenuItemText(0, 2,"Schließen")
    
    
    
    Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
  EndIf
Viele Grüße aus dem Sauerland
Eckhard

PureBasic 4.0 Vollversion, WinXP
Make a better world :D
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 »

Code: Alles auswählen

DrawMenuBar_(WindowID(0))
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
Eckhard.S
Beiträge: 136
Registriert: 22.07.2006 17:19
Wohnort: Meschede/Sauerland

Beitrag von Eckhard.S »

Danke ts-soft! :)


Grrrr! Warum findet man den Hinweis nicht in der Hilfe, direkt beim Befehl SetMenuTitleText() :?

Auch unter "Suchen" DrawMenuBar findet sich nichts.
Woher weißt du es? :o
Viele Grüße aus dem Sauerland
Eckhard

PureBasic 4.0 Vollversion, WinXP
Make a better world :D
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

An dem _Unterstrich_ am Ende_ des Befehls erkennt man, das dies ein API-Befehl ist; API Befehle stehen generell nicht in der Windowshilfe, sondern unter http://msdn.microsoft.com

API funktioniert darüberhinaus nur unter Windows.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

achte auf den underscore nach dem befehl:
das ist kein PB-Befehl, sondern ein API-aufruf, die stehen nicht in der help.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Eckhard.S
Beiträge: 136
Registriert: 22.07.2006 17:19
Wohnort: Meschede/Sauerland

Beitrag von Eckhard.S »

Aha!

Mal wieder ein Expertenbefehl. /:->
Na wenigstens steht er jetzt in diesem Forum, wenn jemand nach "SetMenuTitleText" sucht :D
Viele Grüße aus dem Sauerland
Eckhard

PureBasic 4.0 Vollversion, WinXP
Make a better world :D
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 »

>> Mal wieder ein Expertenbefehl. /:->
Programmieren erfordert nunmal jahrelange Erfahrung. Und Auslernen tut
man nie
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
Eckhard.S
Beiträge: 136
Registriert: 22.07.2006 17:19
Wohnort: Meschede/Sauerland

Beitrag von Eckhard.S »

8) Dank der neuen Erfahrung, die ich jetzt habe, konnte ich SetWindowText_ finden und die Fensterzeile auch nachträglich umbennen 8)
Viele Grüße aus dem Sauerland
Eckhard

PureBasic 4.0 Vollversion, WinXP
Make a better world :D
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 »

Eckhard.S hat geschrieben:8) Dank der neuen Erfahrung, die ich jetzt habe, konnte ich SetWindowText_ finden und die Fensterzeile auch nachträglich umbennen 8)
Warum nutzt Du nicht lieber den entsprechenden PB-Befehl. Als Einsteiger
solltest Du Dich mehr an die einfachen Standards halten :wink:

PS: MenüTitel während der Laufzeit ändern verwirrt nur den Benutzer, lieber
Extra Menüpunkte und enablen oder disablen.
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
Eckhard.S
Beiträge: 136
Registriert: 22.07.2006 17:19
Wohnort: Meschede/Sauerland

Beitrag von Eckhard.S »

<) Der User meines Esperantoprogrammes kann im Menü unter Anzeige die Sprache umschalten. Ähnlich wie bei PB unter "Einstellungen -Sprache".
Sieht cool aus, wenn alle Menüs usw. dann in Esperanto dastehen oder zurück auf Deutsch geschaltet werden können.

Woran ich noch knabbere ist, den Übersetze-Button umzubennen. Eine Art SetButtonText_ (gibts nicht). Hast du den passenden Befehl?

Code: Alles auswählen

;PB4
; ************* Variablen Deklaration *************

      
                                               
        Global FontID1
        
        FontID1 = LoadFont(1, "Courier New", 9)    ; Font für die Darstellung 

        Gosub Beschriftungen_in_Deutsch
        ; Gosub Beschriftungen_in_Esperanto
  


; ************* Fensteraufbau *************
Enumeration 
  #window : #Menu 
    #menu1 : #menu2 : #menu3 : #menu11 : #menu12 : #menu13 : #menu14 : #menu15 
    #menu21 : #menu22 : #menu23 
    #menu51 : #menu52
  #toolbar1 : #toolbar2 : #toolbar3 : #toolbar4 : #toolbar5 : #toolbar6
  #combobox1 : #combobox2
  #tile : #Splitter 
  #edit1 : #edit2 : #edit3 : #Editor_3
  #Frame 
  #Button1 : #Button2 : #ButtonBoth : #Buttontrans
  #inbtn_1 : #inbtn_2 : #inbtn_3 : #inbtn_4 : #inbtn_5 : #inbtn_6
  #outbtn_1 : #outbtn_2 : #outbtn_3 : #outbtn_4 : #outbtn_5 :  #outbtn_6
  
  #TestButton
EndEnumeration 

framebreite = 250
  

hwnd = OpenWindow(#window,0,0,800,600,fensterueberschrift$,#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget) 
SetWindowColor(0,RGB(100, 150, 100))
CreateGadgetList(hwnd) 

CreateMenu(#window, hwnd)
MenuTitle(datei$)
   MenuItem(#menu1,neu$)       : DisableMenuItem(#window, #menu1,1)
   MenuItem(#menu2,oeffnen$)   : DisableMenuItem(#window, #menu2,1)
   MenuItem(#menu3,speichern$) : DisableMenuItem(#window, #menu3,1)
MenuTitle("       ") 
MenuTitle(eingabeformat$)     
   MenuItem(#menu11,automatisch$)
   MenuItem(#menu12,"^c ^j ^g ^h ^s ^u") : DisableMenuItem(#window, #menu12,1)
   MenuItem(#menu13,"cx jx gx hx sx ux") : DisableMenuItem(#window, #menu13,1)
   MenuItem(#menu14,"ch jh gh hh sh uh") : DisableMenuItem(#window, #menu14,1)   
   MenuItem(#menu15,"c^ j^ g^ h^ s^ u^") : DisableMenuItem(#window, #menu15,1)         
MenuTitle(ausgabeformat$)     
   MenuItem(#menu21,automatisch$)
   MenuItem(#menu22,"^c ^j ^g ^h ^s ^u") : DisableMenuItem(#window, #menu22,1)
   MenuItem(#menu23,"cx jx gx hx sx ux") : DisableMenuItem(#window, #menu23,1)
MenuTitle("       ") 
MenuTitle(anzeige$)     
   MenuItem(#menu51,deutsch$)
   MenuItem(#menu52,esperanto$)
   
CreateToolBar(#window, hwnd)
ToolBarStandardButton(#toolbar1,#PB_ToolBarIcon_New)
ToolBarStandardButton(#toolbar2,#PB_ToolBarIcon_Open)
ToolBarStandardButton(#toolbar3,#PB_ToolBarIcon_Save)
ToolBarStandardButton(#toolbar4,#PB_ToolBarIcon_Undo)
ToolBarStandardButton(#toolbar5,#PB_ToolBarIcon_Redo)

Frame3DGadget(#Frame,5,17,framebreite -10,595-MenuHeight(),"") 

ButtonGadget(#Button1   ,15,220,25,18,"1") 
ButtonGadget(#ButtonBoth,50,220,25,18,"1/2") 
ButtonGadget(#Button2   ,80,220,25,18,"2") 
 
EditorGadget(#edit1,0,0,0,0) 
EditorGadget(#edit2,0,0,0,0, #PB_Window_Invisible )                          
EditorGadget(#edit3,0,0,0,0, #PB_Editor_ReadOnly) 
SetGadgetFont(#edit1, FontID1)
SetGadgetFont(#edit2, FontID1)
SetGadgetFont(#edit3, FontID1)

SplitterGadget(#Splitter, framebreite, 32, WindowWidth(#Window)- framebreite - 10, WindowHeight(#Window)- 60,#edit1, #edit3) 
AddGadgetItem(#edit1,0,"Esperanto-Textfield (1)") 
AddGadgetItem(#edit2,0,"Esperanto-Ersatztext (2)")                           
AddGadgetItem(#edit3,0,"German-Textfield (3)") 

  
      breitex = 150
 
      EditorGadget(#Editor_3, 20, 280, breitex, 260,  #PB_Editor_ReadOnly)
      SetGadgetFont(#Editor_3, FontID1)
     
      ButtonGadget(#Buttontrans, 0, 150, 100, 20, uebersetzen$)
     

      


; ************* Fensterinitialisieren *************    
  wahl_anzeige$ = "Deutsch"
  SetMenuItemState(#window,#menu11,1) ; Eingabeformat auf automatisch 
  SetMenuItemState(#window,#menu21,1) ; Ausgabeformat auf automatisch 
  SetMenuItemState(#window,#menu51,1) ; Anzeige auf Deutsch 
  
; ************* Hauptprogramm *************
  
        
 Repeat 
 Select WaitWindowEvent() 
   Case #PB_Event_CloseWindow 
        Break
    
    Case #PB_Event_Menu   
                
        
        Select EventMenu() 
        
        Case #menu51
        
           If GetMenuItemState(#window,#menu51) = 0   ; kein Häkchen bei Deutsch 
               SetMenuItemState(#window,#menu51,1)    ; Setze Häkchen bei Deutsch 
               SetMenuItemState(#window,#menu52,0)    ; Entferne Häkchen bei Esperanto
               Gosub Beschriftungen_in_Deutsch       ; Beschriftungen nach Deutsch umschalten
               Gosub neu_beschriften
           EndIf
        
        Case #menu52
        
           If GetMenuItemState(#window,#menu52) = 0   ; kein Häkchen bei Esperanto 
               SetMenuItemState(#window,#menu52,1)    ; Setze Häkchen bei Esperanto
               SetMenuItemState(#window,#menu51,0)    ; Entferne Häkchen bei Deutsch
               Gosub Beschriftungen_in_Esperanto     ; Beschriftungen nach Esperanto umschalten
               Gosub neu_beschriften
           EndIf
    
        
        EndSelect
        
    Case #PB_Event_SizeWindow 
                  
       ResizeGadget(#Frame      , #PB_Ignore, #PB_Ignore, #PB_Ignore, WindowHeight(#Window)-55) 
       ResizeGadget(#Splitter   , #PB_Ignore, #PB_Ignore, WindowWidth(#Window)- framebreite - 10, WindowHeight(#Window) - 60) 
          
           
    
    
       
  EndSelect 
ForEver 

     


End
  ;+++++++++++++++
  set1 = 0 
  set2 = 3 

Repeat 
  event = WaitWindowEvent() 
  
  Select event 
    Case #PB_Event_SizeWindow 
                  
       ResizeGadget(#Frame      , #PB_Ignore, #PB_Ignore, #PB_Ignore, WindowHeight(#Window)-55) 
       ResizeGadget(#Splitter   , #PB_Ignore, #PB_Ignore, WindowWidth(#Window)- framebreite - 10, WindowHeight(#Window) - 60) 
    ;   ResizeGadget(#Button1    , WindowWidth(#Window)-90, #PB_Ignore, #PB_Ignore, #PB_Ignore) 
    ;   ResizeGadget(#Button2    , WindowWidth(#Window)-30, #PB_Ignore, #PB_Ignore, #PB_Ignore) 
    ;   ResizeGadget(#ButtonBoth , WindowWidth(#Window)-60, #PB_Ignore, #PB_Ignore, #PB_Ignore) 
       buttonline = 120 : If WindowHeight(#Window)/2 > 150 : buttonline = WindowHeight(#Window)/2 : EndIf
     ;  ResizeGadget(#outbtn_1      , #PB_Ignore, buttonline+30, #PB_Ignore, #PB_Ignore)
     ;  ResizeGadget(#outbtn_2      , #PB_Ignore, buttonline+50, #PB_Ignore, #PB_Ignore)
     ;  ResizeGadget(#outbtn_3      , #PB_Ignore, buttonline+70, #PB_Ignore, #PB_Ignore)
       
    Case #PB_Event_Gadget 
       Select EventGadget() 
          Case #Button1 
             SetGadgetState(#Splitter, GadgetHeight(#Splitter)) 
          Case #Button2 
                      SetGadgetState(#Splitter, 0) 
          Case #ButtonBoth 
            SetGadgetAttribute(#Splitter, #PB_Splitter_SecondGadget, #edit2) 
            HideGadget(#edit3, #True) 
            HideGadget(#edit2, #False) 
            SetGadgetState(#Splitter, GadgetHeight(#Splitter)/2) 
                      
            MessageRequester("Anhalten", "", #PB_MessageRequester_Ok) 
                      
            SetGadgetAttribute(#Splitter, #PB_Splitter_SecondGadget, #edit3) 
            HideGadget(#edit2, #True) 
            HideGadget(#edit3, #False) 
            SetGadgetState(#Splitter, GadgetHeight(#Splitter)/2) 

          
       EndSelect 
  EndSelect 
  
Until event = #WM_CLOSE



; ************* Unterroutinen *************

; ************* Beschriftungen in Deutsch *************

Beschriftungen_in_Deutsch:

fensterueberschrift$ = "Esperantoübersetzer von Eckhard Stoll, Version 1.0"
esperanto$     = "Esperanto"
aussprache$    = "Aussprache"
deutsch$       = "Deutsch" 
zweisprachig$  = "Zweisprachig"
datei$         = "Datei"
  neu$         = "Neu"
  oeffnen$     = "Öffnen"
  speichern$   = "Speichern"
eingabeformat$ = "Eingabeformat"
  automatisch$ = "automatisch"
ausgabeformat$ = "Ausgabeformat"
anzeige$       = "Anzeige"
uebersetzen$   = "Übersetzen"

Return

; ************* Beschriftungen in Esperanto *************
Beschriftungen_in_Esperanto:

fensterueberschrift$ = "Esperanto tradukilo de Eckhard Stoll, versio 1.0"
esperanto$     = "Esperanto"
aussprache$    = "Prononco"
deutsch$       = "Germanio" 
zweisprachig$  = "Dulingva"
datei$         = "Dosiero"
  neu$         = "Nova"
  oeffnen$     = "Melfermu"
  speichern$   = "Surdisku"
eingabeformat$ = "Enigatoro"
  automatisch$ = "automatika"
ausgabeformat$ = "Eligatoro"
anzeige$       = "Anonco"
uebersetzen$   = "Traduktu"

Return

; ************* Neu beschriften *************

neu_beschriften:

SetMenuTitleText(#window, 0, datei$)
   SetMenuItemText(#window, #menu1,neu$)
   SetMenuItemText(#window, #menu2,oeffnen$)
   SetMenuItemText(#window, #menu3,speichern$)
SetMenuTitleText(#window, 1, "       ") 
SetMenuTitleText(#window, 2, eingabeformat$)     
   SetMenuItemText(#window, #menu11,automatisch$)
          
SetMenuTitleText(#window, 3, ausgabeformat$)     
   SetMenuItemText(#window, #menu21,automatisch$)
SetMenuTitleText(#window, 4, "       ") 
SetMenuTitleText(#window, 5, anzeige$)     
   SetMenuItemText(#window, #menu51,deutsch$)
   SetMenuItemText(#window, #menu52,esperanto$)
DrawMenuBar_(hwnd) 
SetWindowText_(hwnd, fensterueberschrift$) 
;SetButtonText_    
   
   

Return
Viele Grüße aus dem Sauerland
Eckhard

PureBasic 4.0 Vollversion, WinXP
Make a better world :D
Antworten