SLE mit SLE koppeln[erledigt]

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

SLE mit SLE koppeln[erledigt]

Beitragvon messing » Do, 05. Apr 2012 15:09

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 10:31, insgesamt 1-mal geändert.
Gruß
Bruno
Messing
Benutzeravatar
messing
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 216
Registriert: Mi, 13. Jan 2010 9:42
Wohnort: Lauterbach / Hessen

Re: SLE mit SLE koppeln

Beitragvon Jan » Do, 05. Apr 2012 15:33

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
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11453
Registriert: Fr, 23. Sep 2005 17:23
Wohnort: 49328 Melle

Re: SLE mit SLE koppeln

Beitragvon messing » Do, 05. Apr 2012 19:32

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
messing
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 216
Registriert: Mi, 13. Jan 2010 9:42
Wohnort: Lauterbach / Hessen

Re: SLE mit SLE koppeln

Beitragvon Jan » Do, 05. Apr 2012 19:40

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
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Foren-Administrator
Foren-Administrator
 
Beiträge: 11453
Registriert: Fr, 23. Sep 2005 17:23
Wohnort: 49328 Melle

Re: SLE mit SLE koppeln

Beitragvon messing » Do, 05. Apr 2012 19:52

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
messing
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 216
Registriert: Mi, 13. Jan 2010 9:42
Wohnort: Lauterbach / Hessen

Re: SLE mit SLE koppeln

Beitragvon brandelh » Fr, 06. Apr 2012 12:56

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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13201
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim


Zurück zu OOP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron