ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > Fortschrittsanzeige mit RxMui | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
22.12.2008, 14:53 Uhr ruebennase56 Posts: 24 Nutzer |
Hallo Leute, Vielleicht kann mir hier jemand helfen. Ich hab zwei Probleme mit dem unten stehenden RxMui-Script: 1. Während der Go-Schleife öffnet sich eine Fortschrittsanzeige. Der komplette Durchlauf kann schon mal 5 Minuten betragen, also wäre ein Cancel-Button nicht schlecht,der die Schleife verlässt. Aber das Fenster erlaubt erst wieder eine Eingabe, wenn die Schleife durch ist und man sich wieder in Handle_app befindet. Hat jemand eine Idee? 2. Das zweite Problem ist wahrscheinlich ziemlich lächerlich. In der Zeile call set("gauge_glob_progress","Current",percent) akzeptiert die Funktion nur ganze Zahlen, aber wenn man sich wie im Beispiel die Prozent mit z.B. 57*100/1054=5.408... an die Set-Funktion übergibt, gibt es eine Fehlermeldung. Wie wandelt man in Arexx eine reelle in eine natürliche zahl um? Vielen Dank im Voraus /* Convert CDID */ CreateApp: procedure /* vorher allerlei buttons und fenster*/ app.SubWindow.1="progress" progress.ID="sprogress" progress.Title="Counting ..." progress.Contents="sgroup" /* die fortschrittsanzeige /* sgroup.0="pe" pe.class="group" pe.0 = "tgroup" tgroup.class = "hgroup" gauge_glob_progress.weight = 20 gauge_glob_progress.showme = 0 tgroup.0 = MakeObj("gauge_glob_progress","Gauge",,100,0,"") /* cancel sollte abbrechen tut es aber nicht, weil sich das fenster nur während der go-schleife offen ist */ sgroup.1="be" be.class="group" be.horiz=1 be.0=hspace() be.1=button("cancel","Cancel") be.2=hspace() call Notify("win","CloseRequest",1,"app","ReturnID","quit") call notify("cancel","pressed",0,"app","return","????") return handle_app: return /* die schleife mit der fortschrittsanzeige */ go: call set("progress","open",1) ns=1 DO a=0 to 1054 if a*100/1054>5*ns then do percent=5*ns /* die anzeige wird aktualisiert */ call set("gauge_glob_progress","Current",percent) call set("gauge_glob_progress","InfoText",percent||"%") call set("gauge_glob_progress","ShowMe",1) ns=ns+1 end call set(“progress“,“open“,0) END [ - Antworten - Zitieren - Direktlink - ] |
22.12.2008, 16:42 Uhr Gazelle Posts: 151 Nutzer |
ad 1: keine Ahnung ad 2: mit trunc(Zahl, Nachkommastellen) kann man die Stellen bestimmen. code:percent = trunc(percent+0.5, 0) Das "+0.5" ist zum Runden. [ - Antworten - Zitieren - Direktlink - ] |
22.12.2008, 19:08 Uhr ruebennase56 Posts: 24 Nutzer |
Zitat: Danke; Wie erwartet kinderleicht [ - Antworten - Zitieren - Direktlink - ] |
22.12.2008, 19:23 Uhr cgutjahr Posts: 2783 [Administrator] |
Zitat:Was bedeutet "Fenster erlaubt keine Eingabe"? Ist der Abbrechen-Knopf tatsächlich ghosted, also nicht anklickbar? Kenne mich mit RxMUI nicht aus - aber bei MUI siehst du prinzipiell erst dann eine Reaktion auf einen Mausklick wenn die Anwendung, zu der das Fenster gehört, bei MUI nach Eingabe-Ereignissen fragt. Genau das tut dein Skript - also die Schleife - aber nicht, das wäre doch eine Erklärung dafür, dass der Knopf sich nicht rührt? -- Gutjahrs Amiga Seiten [ - Antworten - Zitieren - Direktlink - ] |
23.12.2008, 01:47 Uhr ruebennase56 Posts: 24 Nutzer |
Zitat: Nein der knopf ist nicht gesperrt, die eingabe wird nicht registriert. Das ist genau das problem, nur in der handle_app schleife wird die gui-eingabe abgefragt, aber genau da will ich durch den abbruchknopf hin. [ - Antworten - Zitieren - Direktlink - ] |
23.12.2008, 02:57 Uhr cgutjahr Posts: 2783 [Administrator] |
Zitat:Und warum frägst du dann nicht innerhalb der Schleife den Abbrechen-Knopf ab? Ist vermutlich ne blöde Frage, aber ich verstehe im Moment das Problem nicht so ganz. -- Gutjahrs Amiga Seiten [ - Antworten - Zitieren - Direktlink - ] |
23.12.2008, 17:47 Uhr ruebennase56 Posts: 24 Nutzer |
Zitat: Ich bin kein spezialist wenn es um rxmui geht, aber so wie du denkst geht es nicht. Die graphische oberfläche wird immer nur in der handle_app:...return schleife abgefragt, und zwar in der art, daß das script nichts tut auser auf eine eingabe zu warten. Klickt man nun auf einen knopf oder menupunkt wird die zugeordnete funktion ausgeführt. In diesem fall die go: funktion. Integriert man in dieser schleife eine weitere abfrage der oberfläche bleibt das script an der stelle stehen und wartet auf eine eingabe. Und das ist nicht sinn der sache, die elend lange schleife soll abgearbeitet werden, aber wenn es zu lang dauert soll man sie unterbrechen können. [ - Antworten - Zitieren - Direktlink - ] |
29.12.2008, 12:44 Uhr Gazelle Posts: 151 Nutzer |
@ruebennase56: Nur der Vollständigkeit halber hier die Lösung, die ich bereits in der RxMUI Mailingliste gepostet habe: ARexx code:/* Diese Notifys in CreateApp einfügen, Fenster-Schließen oder Cancel-Button */ call Notify("progress","CloseRequest",1,"app","Return","LEAVEME") call Notify("cancel","pressed",0,"app","Return","LEAVEME") /* END Notifys */ ---- /* die schleife mit der fortschrittsanzeige */ go: call set('win','Sleep',1) call set("progress","open",1) ns=1 DO a=0 to 1054 if a*100/1054>5*ns then do percent=5*ns /* die anzeige wird aktualisiert */ call set("gauge_glob_progress","Current",percent) call set("gauge_glob_progress","InfoText",percent||"%") call set("gauge_glob_progress","ShowMe",1) ns=ns+1 end /* Jetzt nach Events abfragen, aber die Anwendung nicht blockieren */ h.NoWait = 1 call NewHandle("APP","H") /* Das einzige Event hier sollte LEAVEME sein */ if h.event="LEAVEME" then leave END call set("progress","open",0) call set('win','Sleep',0) return [ - Antworten - Zitieren - Direktlink - ] |
30.12.2008, 14:58 Uhr ruebennase56 Posts: 24 Nutzer |
Zitat: Nochmals Danke Die beiden Scripts findet man im Aminet: http://aminet.net/package/util/conv/ConvertCDID http://aminet.net/package/util/rexx/ARexxShell [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > Fortschrittsanzeige mit RxMui | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |