• Hallo, wollte unbedingt Rainers neue R-Basic Version ausprobieren und habe auf die Schnelle die Uhr in ein selbständig laufendes R-Basic Programm verwandelt. Nix besonderes, es enthält auch nur das Standard-Icon - aber es startet und läuft wie ein "echtes GEOS-Programm". Danke Rainer! :)

    Getestet unter GEOS 2.5, 3.2 und 4.10. Der R-Basic Interpreter braucht nicht installiert zu sein.

  • Ein Popup-Alarm wäre schön; denn um das Fenster in Normalgröße zu belassen, ist es mir zu groß.

    Die Größe der Uhr gehört eindeutig mit zur Programm-Idee. 8o Du hast aber schon recht, um vorrangig einen Alarm laufen zu lassen, bräuchte das Programm-Fenster nicht so groß sein. Für solche Dinge war "Alarm!" gedacht, das inzwischen aber veraltet ist.

  • Benutzt eigentlich jemand "TimeTool" und weiß jemand, ob das Programm nach dem Beenden und neu starten laufende Termine weiterführt?

    Nachtrag 08.02.16 - Habe das Programm gefunden, es läuft auch noch unter GEOS 4.

  • Hallo Bernd,

    prima, hatte schon immer überlegt, woran dieses Flackern liegt. Was war denn der Auslöser?

    Ehrlich gesagt, habe ich die Zusammenhänge nicht genau verstanden, ich wäre ohne Rainer's Hinweis auch nicht darauf gekommen, folgenden Befehl zur Vermeidung des Flackerns zu verwenden.

    Zitat

    Parallel zur Bitmap gehen die Grafikausgaben gleichzeitig auf den Bildschirm. Dort wird aber weder das Vorhandensein einer Maske noch die Information, dass eventuell "nur" die Maske bearbeitet wird, berücksichtigt. Auch eine eventuell geänderte Farbpalette (siehe Kapitel 5.3.5) wird nicht berücksichtigt. Das führt zu einem zeitweisen Widerspruch zwischen Darstellung auf dem Bildschirm und der Grafik in der Bitmap. Deswegen sollten Sie, während Sie in eine maskierte Bitmap schreiben (egal ob Maske oder Bitmapdaten), die parallel dazu verlaufende Ausgabe auf den Monitor deaktivieren. Das Gleiche gilt für das Schreiben in eine Bitmap mit geänderter Farbpalette. Für diesen Zweck gibt es die Instancevariable suspendDraw.
    Syntax UI-Code: nicht zulässig
    Lesen: <numVar> = <Bitmapobj>.suspendDraw Schreiben: <Bitmapobj>.suspendDraw = TRUE | FALSE
    SuspendDraw = TRUE deaktiviert die die gleichzeitige Ausgabe der Grafikbefehle auf den Bildschirm. Sobald suspendDraw wieder auf FALSE gesetzt wird zeichnet sich die Bitmap neu auf den Schirm, so dass die vorgenommenen Änderungen "auf einen Schlag" sichtbar werden.
    SupendDraw ist - unabhängig von der Existenz einer Maske oder einer Palette - ebenfalls nützlich, wenn Sie eine große Anzahl von Grafikbefehlen haben, die entweder zu "komischen" Zwischenresultaten führen oder sehr lange dauern. Das zeitweise Abschalten der Ausgabe auf den Schirm beschleunigt natürlich die Zeichenoperationen.
    Verliert ein Objekt den "Screen" Status (d.h. belegen Sie die Systemvariable Screen neu), so wird die Suspendierung automatisch aufgehoben.

  • Ich kürze das mal auf die wesentliche Info ein. Die Verwendung von SuspendDraw zu diesem Zweck ist eigentlich ein Nebeneffekt.
    Das Flackern entsteht, weil bei der Textausgabe erst der Hintergrund gelöscht wird (werden muss) und dann der neue Text geschrieben wird. Dazwischen gibt es dann logischerweise eine sehr kurze Zeit, in die Grafik nur den Hintergrund, aber noch nicht den Text enthält. Wen in dieser Zeit der Bildschirm aufgefrischt wird ist für kurze Zeit ein nur der Hintergrund zu sehen - der Text flackert.

    Parallel zur Bitmap gehen die Grafikausgaben gleichzeitig auf den Bildschirm.

    SuspendDraw = TRUE deaktiviert die die gleichzeitige Ausgabe der Grafikbefehle auf den Bildschirm. Sobald suspendDraw wieder auf FALSE gesetzt wird zeichnet sich die Bitmap neu auf den Schirm, so dass die vorgenommenen Änderungen "auf einen Schlag" sichtbar werden.

    Gruß
    Rainer

    Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

  • Habe gerade gesehen, dass unter ISUI die komplette Titelleiste flackert, wenn dort ein Alarm herunter gezählt wird. Die Ursache dürfte eine andere sein, als beim (beseitigten) Flackern der großen Uhrzeit-Anzeige und liegt evtl. in der ISUI selbst begründet. Unter Motif flackert die Leiste zum Glück nicht.

    Drauf gekommen bin ich beim Ausprobieren eines anderen Programms, wo die Titelleiste unter ISUI schon fast Disko-mässig flackerte.

  • Hallo Bernd,

    Habe gerade gesehen, dass unter ISUI die komplette Titelleiste flackert, wenn dort ein Alarm herunter gezählt wird. .....

    ist mir auch aufgefallen, ich wollte aber nicht nerven.. ;) . Mir ist aber noch etwas aufgefallen: Wenn die Uhr ganz normal läuft, verschluckt sie immer eine Sekunde. ( z.B. Sie zeigt an 21, 22, 23, 24, die 25 fehlt dann, erst die 26 wird wieder angezeigt usw.) Ist aber ein Alarm eingestellt der sich dann mit dem Ton meldet und nicht abgestellt wird, zählt die Uhr wieder genau alle Sekunden durch. Alles unter ISUI.

    Jens

  • Hallo Bernd,

    ist mir auch aufgefallen, ich wollte aber nicht nerven.. ;) . Mir ist aber noch etwas aufgefallen: Wenn die Uhr ganz normal läuft, verschluckt sie immer eine Sekunde. ( z.B. Sie zeigt an 21, 22, 23, 24, die 25 fehlt dann, erst die 26 wird wieder angezeigt usw.) Ist aber ein Alarm eingestellt der sich dann mit dem Ton meldet und nicht abgestellt wird, zählt die Uhr wieder genau alle Sekunden durch. Alles unter ISUI.

    Von solchen Rückmeldungen fühle ich mich grundsätzlich nie genervt, sondern bin eher dankbar, dass sich noch jemand damit beschäftigt hat. :)

    Den ungleichmäßigen Lauf der Uhr habe ich mit Version 0.71 unter ISUI jetzt auch sehen können. Version 0.72 läuft bei mehrmaligen Versuchen bisher rund. Kleine Umstellungen im Programm hatte ich zwar aus einem anderen Grund vorgenommen, vielleicht wirkt es sich aber auch positiv auf die Anzeige der Uhr aus.

  • Ich habe noch mal darüber nachgedacht, warum es überhaupt zum Verschlucken der Sekunden-Anzeige kommt.

    Anders als bei den Alarmen, wo sekündlich eine Ziffer errechnet und dann angezeigt wird, hatte ich für die Uhrzeit einfach einmal pro Sekunde die aktuelle Systemzeit ausgelesen und angezeigt. Wenn nun das Auslesen zufällig nahe an der nächsten Sekunde liegt und das System vielleicht auch anderweitig beschäftigt ist, kann sich die Anzeige der Uhrzeit minimal verzögern und die Darstellung "verschlucken". So habe ich mir das zumindest zusammengereimt...

    Die Lösung des Problems war dann ganz einfach. Die Uhrzeit wird nun vier mal pro Sekunde abgefragt anstatt nur einmal und sollte somit immer hübsch gleichmässig aussehend laufen. Version 0.73 http://www.geopixel.de/RBPROGS/UHRWERK.HTM

    Feedback willkommen, z.B. ob die Anzeige nun tatsächlich so funktioniert wie sie soll.