Seite 1 von 1

EditorGadget auffrischen nach MenuEvent

Verfasst: 29.08.2006 16:49
von Eckhard.S
Wenn ich das Menü umschalte, soll sofort der Text im EditorGadget umschalten und nicht erst dann, wenn ich dort Text hineinschreibe.
Wie macht man so etwas typischerweise?

Code: Alles auswählen

Enumeration : #window :          EndEnumeration  
Enumeration: #Menu : #Toolbar  : EndEnumeration
Enumeration: #menu51 : #menu52 : EndEnumeration  
Enumeration:  #edit1 : #edit2  : EndEnumeration 

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

CreateMenu(#Menu, hwnd)

MenuTitle("Sprache")     
   MenuItem(#menu51,"Deutsch")
   MenuItem(#menu52,"Englisch")

EditorGadget(#edit1,0,0,300,200) 
EditorGadget(#edit2,0,250,300,200 )                          

a$ =  "Hallo Deutschland! "
SetGadgetText(#edit2, a$)

Repeat 
    
    Select WaitWindowEvent() 
    
    Case #PB_Event_CloseWindow 
        Break
        
    Case #PB_Event_Menu  
       Select EventMenu()   
          Case #menu51
        
          a$ =  "Hallo Deutschland! "
       
          Case #menu52
       
          a$ =  "Hello Germany! "

       EndSelect     


    Case #PB_Event_Gadget 

        Select EventGadget() 
             Case #edit1  
            
             text_eingabe$ = GetGadgetText(#edit1)
             SetGadgetText(#edit2, a$ + text_eingabe$ ) 
           
        EndSelect 
    EndSelect     
ForEver 
End

Verfasst: 29.08.2006 16:57
von ts-soft
Das richtige Ereignis verwenden!

Code: Alles auswählen

#window = 0
 
Enumeration
  #Menu
  #Toolbar
EndEnumeration
Enumeration
  #menu51
  #menu52
EndEnumeration 
Enumeration
  #edit1
  #edit2
EndEnumeration

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

CreateMenu(#Menu, hwnd)

MenuTitle("Sprache")     
MenuItem(#menu51,"Deutsch")
MenuItem(#menu52,"Englisch")

EditorGadget(#edit1,0,0,300,200)
EditorGadget(#edit2,0,250,300,200 )                         

a$ =  "Hallo Deutschland! "
SetGadgetText(#edit2, a$)

Repeat
  
  Select WaitWindowEvent()
    
    Case #PB_Event_CloseWindow
      Break
      
    Case #PB_Event_Menu 
      Select EventMenu()   
        Case #menu51
          
          a$ =  "Hallo Deutschland! "
          SetGadgetText(#edit2, a$ + text_eingabe$ )
        Case #menu52
          
          a$ =  "Hello Germany! "
          SetGadgetText(#edit2, a$ + text_eingabe$ )
      EndSelect     
      
  EndSelect     
ForEver
End 

Verfasst: 29.08.2006 17:19
von Eckhard.S
Da kam mein Anliegen nicht so ganz rüber:

Nimm meinen Code und schreibe "Ich liebe dich" ins erste Fenster.
Er soll als Ausgabe im Fenster 2 jederzeit die Begrüßung (je nach Sprache) plus der Text stehen.

Verfasst: 29.08.2006 17:22
von Kiffi
> Nimm meinen Code und schreibe "Ich liebe dich" ins erste Fenster.

wollt Ihr das nicht lieber via PN ausmachen? ;-)

Grüße ... Kiffi

Verfasst: 29.08.2006 17:27
von Kaeru Gaman
das ereignis is schon das, was ts meint.

dann musst du den inhalt aus dem editorgadget holen,
durch ne übersetzungsroutine scheuchen,
und dann ins gadget bringen.

Verfasst: 29.08.2006 17:35
von Eckhard.S
@Kiffi
Ich liebe euch alle
:lol:

@Kaeru

Ah ok! Hab ich verstanden! Ich dachte man müsste ein "Dummy"-Ereignis ins EditorGadget schicken, damit eine Änderung erkannt wird obwohls gar keine gab.

Ich probiers jetzt mal mit Text holen - verwurschteln - Text schicken.

Merci

Verfasst: 29.08.2006 17:43
von Kaeru Gaman
SetGadgetText(), was du ja zwangsweise ausführen musst, sollte eigentlich ein refresh bewirken...

Verfasst: 29.08.2006 17:49
von ts-soft
EditorGadget wird automatisch refreshed. Ihr meint irgendwas anderes :wink:
Man kann auf Changed, KeyPress, KeyDown, KeyUp und vieles mehr
reagieren, aber dafür braucht man meist etwas API.

Ich weiß bisher nicht, was, wann passieren soll.

Am einfachsten einen Button, wenn man den drück, wird das zweite Gadget
mit neuem Text gefüllt.

Verfasst: 29.08.2006 17:51
von Kaeru Gaman
ts-soft hat geschrieben:Am einfachsten einen Button, wenn man den drück, wird das zweite Gadget
mit neuem Text gefüllt.
das wäre mir auch die einfachste lösung.

so ein hin- und herswitchen im gleichen gadget übers menü...
schon a bissel spanisch...

Verfasst: 29.08.2006 18:07
von Eckhard.S
Ende gut, alles gut. Auch wenn mein Anliegen etwas schwer nachvollziehbar war, so habt ihr mich doch auf den richtigen Weg gebracht.

Jetzt kann man beliebig tippen und jederzeit umschalten. Merci :D

Code: Alles auswählen

Enumeration : #window :          EndEnumeration 
Enumeration: #Menu : #Toolbar  : EndEnumeration 
Enumeration: #menu51 : #menu52 : EndEnumeration  
Enumeration:  #edit1 : #edit2  : EndEnumeration 

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

CreateMenu(#Menu, hwnd) 

MenuTitle("Sprache")      
   MenuItem(#menu51,"Deutsch") 
   MenuItem(#menu52,"Englisch") 

EditorGadget(#edit1,0,0,300,200) 
EditorGadget(#edit2,0,250,300,200, #PB_Editor_ReadOnly)                          

a$ =  "Hallo Deutschland! " 
SetGadgetText(#edit2, a$) 

Repeat 
    
    Select WaitWindowEvent() 
    
    Case #PB_Event_CloseWindow 
        Break 
        
    Case #PB_Event_Menu  
       Select EventMenu()    
          Case #menu51 
        
          a$ =  "Hallo Deutschland! " 
          SetGadgetText(#edit2, a$ + text_eingabe$ ) 
        
          Case #menu52 
          a$ =  "Hello Germany! " 
          SetGadgetText(#edit2, a$ + text_eingabe$ ) 
         

       EndSelect      


    Case #PB_Event_Gadget 

        Select EventGadget() 
             Case #edit1  
            
             text_eingabe$ = GetGadgetText(#edit1) 
             SetGadgetText(#edit2, a$ + text_eingabe$ ) 
                         
        EndSelect 
    EndSelect      
ForEver 
End