Seite 1 von 1

SLE mit SLE koppeln[erledigt]

Verfasst: Do, 05. Apr 2012 16:09
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.

Re: SLE mit SLE koppeln

Verfasst: Do, 05. Apr 2012 16:33
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

Re: SLE mit SLE koppeln

Verfasst: Do, 05. Apr 2012 20:32
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.

Re: SLE mit SLE koppeln

Verfasst: Do, 05. Apr 2012 20:40
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

Re: SLE mit SLE koppeln

Verfasst: Do, 05. Apr 2012 20:52
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.

Re: SLE mit SLE koppeln

Verfasst: Fr, 06. Apr 2012 13:56
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 ...
        ...