SLE mit SLE koppeln[erledigt]

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

Antworten
Benutzeravatar
messing
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 216
Registriert: Mi, 13. Jan 2010 9:42
Wohnort: Lauterbach / Hessen

SLE mit SLE koppeln[erledigt]

Beitrag von messing »

Servus, was muß ich machen, wenn ich mehrere SLE koppeln will? Ich meine, 1.SLE = Anfangszeit, 2.SLE = Endzeit, 3.SLE Differenz zwischen 1. und 2. SLE, das nach eEingabe im 1. SLE sich das 3.SLE aufgrund der Rechenformel autom. aktualisiert. Bzw. was muß man machen damit mehrere oder alle SLE sich durch eine Eingabe in einem SLE aktualisieren.Ich benutze 2 SLE für die Zeiteingabe im Formar "00:00:00" und berechne mit

Code: Alles auswählen

function std_umrstd(endtime,anftime)
   memvar edat_end
   local nDatwechsel,nAnftime,nEndtime,std,std1
   local x1
   local x2

   nDatwechsel:=1
   edat_end:=0
   nAnftime:=Timetosec(anftime)                // Abfrage erste zeit
   nEndtime:=Timetosec(endtime)               // Abfrage zweite zeit
   if nEndtime<nAnftime
      nDatwechsel:=2
   endif
   std:=nEndtime-nAnftime                        // Zweite Zeit minus erste Zeit in sek.
   std1:=std/60/60                        // Sekunden auf Stunden umrechnen
   if nDatwechsel > 1
      x1:=86400-nAnftime
      x2:=nEndtime
      std:=x1+x2
      std1:=std/60/60
      edat_end:=1
   endif
return (std1)
die Stunden.
Zuletzt geändert von messing am Mi, 11. Apr 2012 11:31, insgesamt 1-mal geändert.
Gruß
Bruno
Messing
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: SLE mit SLE koppeln

Beitrag von Jan »

Du kannst den oSle:killInputFocus dafür nehmen. Wenn Du ein SLE verläßt, wird das ausgeführt, was in dem COdeblock drinsteht. Also z. B. die Berechnung und die Aktualisierung der anderen oSLE.

Wichtig ist dabei natürlich, das alle drei oSle eindeutig ansprechbar sind, also verschiedene Namen haben!

Und bist Du Dir sicher, das die Ausgabe auch in einem SLE stattfinden soll? Wäre nicht ein Static besser?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
messing
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 216
Registriert: Mi, 13. Jan 2010 9:42
Wohnort: Lauterbach / Hessen

Re: SLE mit SLE koppeln

Beitrag von messing »

Ja, ein Satic käme auch in betracht, nur mit den Verbindungen zu den versch. Objekten hab ich noch nicht ganz weg. Da bräucht ich mal nen Schubs.
Gruß
Bruno
Messing
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: SLE mit SLE koppeln

Beitrag von Jan »

Hallo Bruno,

nun, Du könntest folgendes versuchen (ungetestet, so direkt in den Foreneditor gehämmert):

Code: Alles auswählen

oSleAnfangzeit:create()
oSleAnfangszeit:killInputfocus := {|x, y, oSle| oStaticDifferenz:setCaption(oSleEndzeit:editBuffer() - oSle:editBuffer())}
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
messing
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 216
Registriert: Mi, 13. Jan 2010 9:42
Wohnort: Lauterbach / Hessen

Re: SLE mit SLE koppeln

Beitrag von messing »

Jan hat geschrieben:Hallo Bruno,

nun, Du könntest folgendes versuchen (ungetestet, so direkt in den Foreneditor gehämmert):

Code: Alles auswählen

oSleAnfangzeit:create()
oSleAnfangszeit:killInputfocus := {|x, y, oSle| oStaticDifferenz:setCaption(oSleEndzeit:editBuffer() - oSle:editBuffer())}
Jan
Danke, werd ich testen.
Gruß
Bruno
Messing
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: SLE mit SLE koppeln

Beitrag von brandelh »

Hi,

ich erledige das in einer Methode, man will ja selten nur eine Abhängigkeit ...

Code: Alles auswählen

oSleAnfangszeit:killInputfocus := {|p1, p2, oXbp| ::schalten(oXbp) }
oSleEndezeit:killInputfocus     := {|p1, p2, oXbp| ::schalten(oXbp) }
oSonstNochWas:killInputfocus  := {|p1, p2, oXbp| ::schalten(oXbp) }

METHOD ...:schalten(oXbp)
    local cAnfang, cEnde
    // hier werden alle unabhängigen Einstellungen geregelt ...
    ...
    // 
    do case
        case oXbp = ::oSleAnfangszeit .or. oXbp = ::oSleEndezeit
              ... hier kannst du den Inhalt von oSleZeitDifferenz ermitteln. ACHTUNG, es könnte auch nur "" sein !
              cAnfang :=  ::oSleAnfangszeit:editBuffer()
              cEnde    :=  ::oSleEndezeit:editBuffer()
              if cAnfang = ??? .and. cEnde  == ??? // hier auf Plausibilität prüfen
                 ::oSleZeitDifferenz:setData( ... )
              else
                 ::oSleZeitDifferenz:setData( ""  )
                 ... Fehlermeldung ...
        ...
Gruß
Hubert
Antworten