EditorGadget auffrischen nach MenuEvent

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

EditorGadget auffrischen nach MenuEvent

Beitrag 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
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 »

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 
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 »

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.
Viele Grüße aus dem Sauerland
Eckhard

PureBasic 4.0 Vollversion, WinXP
Make a better world :D
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Nimm meinen Code und schreibe "Ich liebe dich" ins erste Fenster.

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

Grüße ... Kiffi
a²+b²=mc²
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
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 »

@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
Viele Grüße aus dem Sauerland
Eckhard

PureBasic 4.0 Vollversion, WinXP
Make a better world :D
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

SetGadgetText(), was du ja zwangsweise ausführen musst, sollte eigentlich ein refresh bewirken...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
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 »

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.
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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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...
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 »

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
Viele Grüße aus dem Sauerland
Eckhard

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