5.3 Arbeitsdatum aktualisieren (in Programmen)
Der infra: Ticker aktualisiert nur die Globalvariablen mit dem Applikation-Handle APPLHNDL_ROOT – als die Variablen der Hauptanwendung und nicht die evtl. laufender Applikationen. Das hat folgenden Hintergrund: Eigentlich alle infra: Programme holen sich irgendwann zu Beginn das aktuelle Datum aus der entsprechenden Globalvariablen GV_datum und speichern es dann in einer eigenen (von außen nicht zugänglichen) Variable. Wenn der Ticker nun die GlobalVariable GV_datum eines laufenden Programms aktualisieren würde (also die Variable GV_datum zum ulMyApplHndl), dann würde zwar im angezeigten Dialog das aktuelle Datum angezeigt, aber das Programm würde weiterhin mit der irgendwann gespeicherten Datumsvariable arbeiten -> das wäre vollkommen verwirrend.
Der infra: Ticker stellt nun eine elegante Methode zur Verfügung, einem Programm den Datumswechsel auf Zuruf zu ermöglichen. Da ein Programm sowieso zur Verwendung des immer aktuellen Datums geändert werden müsste (man dürfte dann nur noch mit GV_datum und nicht mehr mit einer eigenen Datumsvariable arbeiten), fällt die folgende Änderung zur Aktualisierung des Datums nicht so sehr in’s Gewicht:
 
/*==============================================*/
BOOL    XCACV           PrivateActionHandler
        (               /*--------------------------*/
        pVOID           pvObj,                      // pointer to calling object
        ULONG           ulID,                       // action id
        pVOID           pvActionData                // action data                     
        )               /*--------------------------*/
/*===================================================================
  Verteiler fuer die privaten Events.
===================================================================*/
{
if ( ulID == GUIACT_GlbDateChanged )
               {
               ULONG ulMyApplHndl;
 
         SCGlbVarSTRING    gvsMainDatum(GV_datum);
               SCGlbVarSTRING    gvsMainTermin(GV_termin);
               SCGlbVarSTRING    gvsMainWoche(GV_woche);           
 
               SCGlbVarSTRING    gvsDatum;
               SCGlbVarSTRING    gvsTermin;
               SCGlbVarSTRING    gvsWoche;           
 
               // --- Meinen Application Handle besorgen ---
               GuiObjQueryApplHandle(pvObj,&ulMyApplHndl);
 
               // --- Auf meine Variablen zugreifen ---
               gvsDatum.Use(GV_datum,ulMyApplHndl);
               gvsTermin.Use(GV_termin,ulMyApplHndl);
               gvsWoche.Use(GV_woche,ulMyApplHndl);
              
               // --- und aktualisieren ... ---
               gvsDatum = (SCString)gvsMainDatum;
               gvsTermin = (SCString)gvsMainTermin;
               gvsWoche = (SCString)gvsMainWoche;
 
return TRUE;
}       
 
return TRUE;
}
 
Zur Erklärung:
Der infra: Ticker ändert zunächst die Datumsvariablen des infra: Hauptprogramms (APPLHNDL_ROOT). Anschließend wird das Event „GUIACT_GlbDateChanged“ an jedes laufende infra: Programm gesendet. Besitzt ein Programm einen privaten Actionhandler (s.o.), dann kann es auf dieses Event reagieren und seine eigenen globalen Datumsvariablen aktualisieren. Danach aktualisiert der Ticker noch das in jedem Fenster eines Programms angezeigte Datum in der Statuszeile.