- Disable Menü
- Räume Bildschirm auf
- Funktion aufrufen
- Enable Menü
- Bildschirm aufräumen
Was verstehe oder mache ich da falsch?
Jan
Moderator: Moderatoren
Code: Alles auswählen
oMenu:addtextItem(aMenu[i][5], , , &("{|| DisableAlle(), DelChildList(), " + aMenu[i][7] + ", DelChildList(), EnableAlle()}"))
er hat ja keinen eigenen ThreadHerbert hat geschrieben:Für so was braucht es keinen eingenen Thread....
mir ist nicht klar, warum ihr so viel mit diesen Dingern rumspielt. Windows erledigt schon viel selber richtig(er).
Code: Alles auswählen
Für so was braucht es keinen eingenen Thread....
mir ist nicht klar, warum ihr so viel mit diesen Dingern rumspielt. Windows erledigt schon viel selber richtig(er).
Code: Alles auswählen
DisableAlle()
DelChildList()
MenuFunktion1()
DelChildList()
EnableAlle()
MenuFunktion1() wird laut der Beschreibung von JAN entgegen seinen Erwartungen eben gleich beendet und das ist für ein Fenster völlig normal solange man :show() und nicht :showModal() aufruft bzw. eine eigene Warteschleife baut (bei Auswahlfenster mache ich das um MODAL zu erzwingen, was früher ja nicht so einfach war).Wolfgang Ciriack hat geschrieben:Wenn in MenuFunktion1() jetzt ein Dialogfenster aufgebaut wird, was auch die Events des Dialoges behandelt,
so kann man doch erst wieder einen anderen Menüpunkt ausführen, wenn MenuFunktion1() beendet ist, oder ?
Hubert und Wolfgang: Das hatte doch Jan geschrieben...Jan hat geschrieben:Hallo Wolfgang,
es wurde aber schon mehrfach hier im Forum erwähnt, das normlerweise immer nur eine Eventscheife je Thread eingesetzt werden sollte. Das klappt dann aber nicht. Was versteh ich da falsch?
Ich muß dazu sagen daß das Neuland für mich ist. Ich arbeite in meinen eigenen Projekten wirklich mit Threads je Menüfunktion. Und da ist es dann normal, das überalll Eventschleifen eingebaut sind.
Jan
Code: Alles auswählen
eval({ || msgbox("Test1"),msgbox("Test2"),msgbox("Test3"),msgbox("Test4"),msgbox("Test5")})
Code: Alles auswählen
// - alle noch anstehenden Ereignisse nacheinander abarbeiten
// - Rueckgabe: 2-dim. Array aEvents, dass alle abgearbeiteten Ereignisse inkl. Ereignis-Parameter
// enthaelt aEvents --> { { nEvent, mp1, mp2, oXbp }, ... }
FUNCTION ForceEventLoop()
LOCAL nEvent, mp1, mp2, oXbp
LOCAL aEvents := {}
while NextAppEvent() != xbe_None
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
AAdd( aEvents, { nEvent, mp1, mp2, oXbp } )
enddo
RETURN aEvents
Eine reicht völlig, solange man einen Thread hat und nicht ein MODALES Fenster nach alter Bauart erzwingen will.Jan hat geschrieben:Dann müte mein Kunde nicht in jede aufgerufene Funktion eine eigene Eventschleife einbauen.
Das ändert dann aber nichts daran, das doch wieder mehr als nur eine Eventschleife im Programm ist.
Was aber, wie ich oben schon mehrfach anmerkte, nach meinem Wissensstand eher vermieden werden sollte.
Ich gebs aufbrandelh hat geschrieben:Zeige doch einfach den aufrufenden Code !