Eventschleife - wie behandeln? [erledigt]

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Eventschleife - wie behandeln? [erledigt]

Beitrag von Wolfgang_B »

Guten Morgen,

ich stehe momentan auf dem Schlauch in der Behandlung einer Eventschleife. Ich möchte, daß ein Fenster nur dann verlassen werden kann, wenn ein bestimmter Rückgabewert einer Funktion vorliegt. Das soll speziell in diesem Fall greifen, wenn der Anwender das Fenster mit oDlg:close schließen will. so soll z.B. verhindert werden, daß das Fenster geschlossen wird, wenn noch Daten vorhanden sind, die noch nicht gespeichert sind.

Gibts da irgendeine Literatur, bei der man lernen kann, wie man die Eventschleife behandelt?
Zuletzt geändert von Wolfgang_B am Do, 07. Jan 2021 16:35, insgesamt 1-mal geändert.
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Eventschleife - wie behandeln?

Beitrag von brandelh »

Dafür musst du die Klasse ableiten und in der Close Methode prüfen ob das schon geschlossen werden darf.
Ich meine der codeblock reicht nicht, bin mir aber nicht sicher.
Das komplette Programm gegen Windows zu schützen ist aber problematisch.

Ich schaue mal später wo ich sowas gemacht habe, ist schon eine Weile her :wink:
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Eventschleife - wie behandeln?

Beitrag von Werner_Bayern »

Servus Wolfgang,

setz einfach eine Variable, die Du in der Event-Schleife, die für das Fenster zuständig ist, abfrägst:

Code: Alles auswählen

      do while nEvent <> xbeP_Close
         nEvent := AppEvent(@mp1, @mp2, @oXbp)
         if nEvent == xbeP_Close .and. .not. lBeenden
            nEvent := xbe_None   
            if janein("Buchung / Überweisung wirklich abbrechen?")
               lBeenden := .t.
               PostAppEvent(xbeP_Close,,, oFenster)
            endif
         else
            oXbp:handleEvent( nEvent, mp1, mp2 )
         endif
      enddo
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Eventschleife - wie behandeln?

Beitrag von Wolfgang Ciriack »

Wolfgang, nutzt du eXPress++ ?
Viele Grüße
Wolfgang
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Eventschleife - wie behandeln?

Beitrag von georg »

Hallo, Wolfgang -


es gibt viele Möglichkeiten - ich nutze grundsätzlich für jedes Fenster einen eigenen Thread, der einen eigenen Event-Loop hat. Diesen kann ich dann entsprechend anpassen.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: Eventschleife - wie behandeln?

Beitrag von Wolfgang_B »

Wolfgang - ich habe zwar eXpress, liegt aber seit dem Kauf brav im Schrank...
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Eventschleife - wie behandeln?

Beitrag von Werner_Bayern »

Wie Georg sagt, es gibt viele Möglichkeiten. Eine weitere, einfache Möglichkeit wäre z. B. im Close-Codeblock Deines Fensters das entsprechend behandeln.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Eventschleife - wie behandeln?

Beitrag von AUGE_OHR »

hi,

Code: Alles auswählen

LOCAL lExit := .F.

   oDlg:Close := {|| IF( CheckOk(oDlg:aEditControl), lExit := .T.,  ) }

   DO WHILE !lExit = .T.
gruss by OHR
Jimmy
Benutzeravatar
Wolfgang_B
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 484
Registriert: Do, 14. Jun 2007 18:22
Wohnort: 94065 Waldkirchen
Hat sich bedankt: 14 Mal
Danksagung erhalten: 5 Mal

Re: Eventschleife - wie behandeln?

Beitrag von Wolfgang_B »

sorry, hatte vor lauter Gartenbau vergessen, mich zu bedanken!!

Also Vielen Dank für die Tipp!
Beste Grüße
Wolfgang

Mitglied des Deutschsprachigen Xbase-Entwickler e. V.
Mitglied der XUG Osnabrück
Antworten