Seite 1 von 1
Window auffrischen
Verfasst: 09.06.2010 14:25
von Daffy0815
Hallo,
folgendes Problem:
In einer Prozedur namens "EinstellenAnzeige()" wird ein Fenster aufgebaut in dem sich durch Druck auf verschiedene Knöpfe die Sprache ändern lässt.
Wie kann man die Prozedur "auffrischen" so das die Texte nun in der neuen Sprache erscheinen ohne dass die Prozedur erneut "kopiert" wird so wie im unten stehenden Beispiel
Code: Alles auswählen
Repeat
Event = WaitWindowEvent()
Select Event
;
Case #PB_Event_CloseWindow
Quit = #True
;
Case #PB_Event_Gadget
Gadget = EventGadget()
Select Gadget
;
Case ID_EinstellenAnzeigeSprachauswahlButtonDE.l
Sprache.b = #Deutsch
EinstellenAnzeige()
;
Case ID_EinstellenAnzeigeSprachauswahlButtonGB.l
Sprache.b = #Englisch
EinstellenAnzeige()
;
EndSelect
;
Default
Delay(1)
;
EndSelect
;
Until Quit = 1
Edit by NicTheQuick: Code-Tags gesetzt
Re: Window auffrischen
Verfasst: 09.06.2010 14:30
von STARGÅTE
ndem du die Entscheidung welche Sprache geladen wird in die Procedure auslagerst und dann nur noch:
EventGadget()
übergibst ...
Re: Window auffrischen
Verfasst: 09.06.2010 14:57
von Daffy0815
@STARGÅTE
Verstehe ich nicht!
Sprache ist eine globale Variable.
Das Druck auf den entsprechenden Länderbutton löst das Ereignis aus, dass dann den Wert von "Sprache" entsprechend ändert.
Nun soll zum Beispiel die Prozedur beendet werden und erneut aufgerufen werden
Code: Alles auswählen
;Deklarationsteil
...
...
Procedure.l EinstellenAnzeige()
...
...
...
EndProcedure
...
...
;============= Aufruf der Prozedur
z.l=EinstellenAnzeige()
;==========================
;
Repeat
Event = WaitWindowEvent()
Select Event
;
Case #PB_Event_CloseWindow
Quit = #True
;
Case #PB_Event_Gadget
Gadget = EventGadget()
Select Gadget
;
Case ID_EinstellenAnzeigeSprachauswahlButtonDE.l
Sprache.b = #Deutsch
[color=#FF0000];LAUFENDE PROZEDUR PLATTMACHEN[/color]
EinstellenAnzeige()
;
Case ID_EinstellenAnzeigeSprachauswahlButtonGB.l
Sprache.b = #Englisch
[color=#FF0000];LAUFENDE PROZEDUR PLATTMACHEN[/color]
EinstellenAnzeige()
;
EndSelect
;
Default
Delay(1)
;
EndSelect
;
Until Quit = 1
End
Re: Window auffrischen
Verfasst: 09.06.2010 15:14
von STARGÅTE
was willst du "platt machen"
wenn das nächste mal EinstellenAnzeige() aufgerufen wird, dann ist doch die alte schon längst beendet, sonst würde es ja zu keinem neuen ereignis kommen ...
Re: Window auffrischen
Verfasst: 09.06.2010 15:27
von Daffy0815
@STARGÅTE
Ich denke hier liegt ein Verständnisproblem vor!
Ich programmiere normalerweise in Assembler und da habe ich ja die volle Kontrolle...
Also nochmal:
Der Aufruf von "EinstellenAnzeige()" im Programm führt in der Prozedur zum Öffnen eines Fensters in dem man unter anderem die Sprache ändern kann.
Nach dem "EinstellenAnzeige()" abgelaufen ist (EndProcedure) "fällt" der Programmzeiger in die "Repeat-Schleife" und "eiert" dort herum.
Das Fenster "EinstellenAnzeige" ist ja weiterhin mit z. B. deutschen Texten geöffnet.
Nun klickt jemand in dem Fenster auf den Button "Enlisch".
Das wird in der Repeat-Schleife registriert und der Wert der globalen Variablen "Sprache" auf "#Englisch" geändert.
So, und nun kommt es....
Jetzt soll das noch offene Fenster NEU AUFGEBAUT werden (mit den englischen Texten).
Ich hoffe es ist jetzt klar.
Re: Window auffrischen
Verfasst: 09.06.2010 15:32
von Daffy0815
Ich hab's!!!
Code: Alles auswählen
Repeat
Event = WaitWindowEvent()
Select Event
;
Case #PB_Event_CloseWindow
Quit = #True
;
Case #PB_Event_Gadget
Gadget = EventGadget()
Select Gadget
;
Case ID_EinstellenAnzeigeSprachauswahlButtonDE.i
Sprache.b = #Deutsch
CloseWindow(ID_EinstellenAnzeigeWindow.i)
EinstellenAnzeige()
;
Case ID_EinstellenAnzeigeSprachauswahlButtonGB.i
Sprache.b = #Englisch
CloseWindow(ID_EinstellenAnzeigeWindow.i)
EinstellenAnzeige()
;
EndSelect
;
Default
;Delay(1)
;
EndSelect
;
Until Quit = 1
End ; All the opened windows are closed automatically by PureBasic
Re: Window auffrischen
Verfasst: 09.06.2010 20:06
von Blackskyliner
Code: Alles auswählen
Repeat
Event = WaitWindowEvent()
Select Event
;
Case #PB_Event_CloseWindow
Quit = #True
;
Case #PB_Event_Gadget
Gadget = EventGadget()
Select Gadget
;
Case ID_EinstellenAnzeigeSprachauswahlButtonDE.i
Sprache.b = #Deutsch
;
Case ID_EinstellenAnzeigeSprachauswahlButtonGB.i
Sprache.b = #Englisch
;
EndSelect
CloseWindow(ID_EinstellenAnzeigeWindow.i)
EinstellenAnzeige()
;
Default
;Delay(1)
;
EndSelect
;
Until Quit = 1
End ; All the opened windows are closed automatically by PureBasic
Warum nicht so? Da sparste dir 2 Zeilen pro Sprache
Edit: Okay... gibt sicher auch noch andere Gadgets, dann isses nicht sinnvoll... Sorry hab grad erst gemerkt das du mit
den einzelnen ; eigentlich sowas wie ;----SNIP----, bzw. ;[...] meinst, also das da noch anderer code steht...