Seite 1 von 2

Menü Refresh nach SetMenuTitleText?

Verfasst: 25.08.2006 17:58
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

Verfasst: 25.08.2006 18:08
von ts-soft

Code: Alles auswählen

DrawMenuBar_(WindowID(0))

Verfasst: 25.08.2006 18:14
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

Verfasst: 25.08.2006 18:16
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.

Verfasst: 25.08.2006 18:16
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.

Verfasst: 25.08.2006 18:20
von Eckhard.S
Aha!

Mal wieder ein Expertenbefehl. /:->
Na wenigstens steht er jetzt in diesem Forum, wenn jemand nach "SetMenuTitleText" sucht :D

Verfasst: 25.08.2006 18:25
von ts-soft
>> Mal wieder ein Expertenbefehl. /:->
Programmieren erfordert nunmal jahrelange Erfahrung. Und Auslernen tut
man nie

Verfasst: 25.08.2006 18:42
von Eckhard.S
8) Dank der neuen Erfahrung, die ich jetzt habe, konnte ich SetWindowText_ finden und die Fensterzeile auch nachträglich umbennen 8)

Verfasst: 25.08.2006 18:47
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.

Verfasst: 25.08.2006 19:08
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