(gelöst) weiter nach Return beim Mac

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: (gelöst) weiter nach Return beim Mac

Re: weiter nach Return beim Mac

von erikafuchs » So, 15.04.2012 12:33

Liebe Leute,
vielleicht interessiert es ja jemanden:
ich habe

Code: Alles auswählen

'	if (oEvt.KeyCode = com.sun.star.awt.Key.TAB) Then   
durch

Code: Alles auswählen

'    if oEvt.KeyChar=chr(13) then
ersetzt - jetzt geht es.
Pit

Re: weiter nach Return beim Mac

von DPunch » Fr, 06.04.2012 02:42

Servus,

ohne zur Lösung beitragen zu können, da ich keinen Mac besitze, kurze Anmerkung:
balu hat geschrieben:Ist denn nicht Private Sub eigentlich ein Excel Befehl (oder so ähnlich)?
Weder bei "Private" noch bei "Sub" handelt es sich in dem Sinne um Befehle. Beides sind Deklarationen.
So wie Du Deine Variablen deklarierst (Private / Public / Global), so deklarierst Du auch Deine Prozeduren / Funktionen, in der Theorie.
Ein "Private Sub" deklariert also eine Prozedur nur für dieses Modul. So wie ein "Private x as String" eine Variable nur für dieses Modul deklariert.
Diese Beschränkungen im Scope (Sichtfeld -> Verfügbarkeit) bei Prozeduren / Funktionen haben allerdings meinen Erfahrungen nach keinen Einfluss in OOo Basic. Sehr wohl aber in VBA.

Re: weiter nach Return beim Mac

von erikafuchs » Do, 05.04.2012 19:43

Lieber Balu,
vielen Dank für deine Ideen.
1. Das private sub stammt aus den Anfangstagen meines Programms, dieses sub läuft schon viele Jahre lang, entweder habe ich es aus einem anderen Programm koiert oder jemand hat es mir geschickt, da ich nicht wusste wie man ein sub durch Klicken auf die Return Taste startet. Leider funktioniert "function" auch nicht.
2. Mit meinem "Rechentrainer" arbeiten hunderte gequälter Schüler mit vielne verschiedenen Computern und OpenOfficen. Ich habe mir einen Minimac gekauft, da hatte ich das Problem unter OpenOffice nur bei einigen Aufgabentypen und habe jetzt OS X Snowleopard auf zwei Lenovo Thinkpads laufen mit LibreOffice und ein Kollege als Betatester. Also Prellen von Tastaturen und Versionen scheinen unerheblich (Allerdings funktioniert OpenOffice ein bißchen besser als LibreOffice zumindest auf meinem Minimac).
3. Das mit "wait" klappt auch nicht, ich hatte schon eine ähnliche Idee.
4. Auch die Idee einen "Tastaturspeicher" zulöschen hatte ich schon - habe aber keine Idee wie.
5. Wenn ich im Code die Aufgabennummer anzeigen lasse,

Code: Alles auswählen

Function MyTextField_KeyPressed(oEvt)
   If (oEvt.KeyCode = com.sun.star.awt.Key.RETURN) Then
   EndeRechnen
print aufg
   EndIf
End Function 
kann man genau sehen, dass zuerst die zweite Aufgabe und dann ohne weitere Aktion die dritte Aufgabe erscheint ohne eine Eingabe abzuwarten. Wenn ich diesen Code durch einen "weiter" Button aufrufe klappt es einwandfrei. Allerdings ist es blöd, wenn man nach jeder Eingabe mit der Maus ein Button anklicken muss.
Vielen Dank erstmal
Pit
PS.: Gibt es hier jemanden, der Makros mit dem Mac schreibt? Nach meiner Einschätzung eher nicht weil Mac User eben User sind und weder Computer schrauben noch programmieren. (?)

Re: weiter nach Return beim Mac

von balu » Do, 05.04.2012 12:35

Hallo Pit,

auch wenn dein zitierter Code bis auf Mac überall funktioniert, so würde ich dennoch mal versuchen ihn minimal umzuschreiben.

Code: Alles auswählen

Function MyTextField_KeyPressed(oEvt)
   If (oEvt.KeyCode = com.sun.star.awt.Key.RETURN) Then
   EndeRechnen
   EndIf
End Function 
Ich habe hier ein paar simple Testdateien, wo ich genau den gleichen Code drin hatte wie Du (blos ich rufe eine andere Sub auf). Und dann habe ich grad eben eine von den Testdateien auf diesen Code hier geändert. Ergebnis; es funktioniert ohne Probleme (zumindest unter WinXP).
Also würde ich dir hiermit den Tipp geben, versuchs mal mit dem geänderten Code. Vielleicht hilft es ja.



@Alle
In einer Hinsicht bin ich jetzt aber doch ein wenig verwirrt.
Ist denn nicht Private Sub eigentlich ein Excel Befehl (oder so ähnlich)? Wenn dem aber so ist, warum habe ich das dann im WWW in vedrschiedenen Foren für SO & OOo gelesen? Oder schmeiß ich jetzt hier irgendetwas durcheinander?



Gruß
balu

Re: weiter nach Return beim Mac

von balu » Mi, 04.04.2012 23:55

Hallo Pit,

da ich kein Mac habe, kann ich dir wohl nicht zielführend helfen. Ich hät aber vielleicht dennoch den ein oder anderen Ansatzpunkt.

Welche OOo-Versionen kommen zum Einsatz, sind es die gleichen, oder unterschiedliche?
eine neue Aufgabe erscheint, die Antwort wird nicht abgewartet
Prellt die Tastatur?
Ich meine damit, dass anstatt ein Impuls mehrere gleichzeitig von der Tastatur ausgehen. Und so das Makro durcheinander bringt. Ich weiß, hört sich unlogisch an, aber das sind so Überlegungen die mir durch den Kopf gehen.

Gehen wir mal davon aus das die Tastatur nicht prellt -{was wohl zutreffend ist}-, dann fiele mir noch folgendes ein.
Ich weiß das Du ein recht gutes Wissen in Basic hast, aber dennoch frage ich dich: An was für ein Ereignis hast Du das Tastatur-Event angehängt, Taste gedrückt, oder Taste losgelassen?
Hast Du mal versucht das Ereignis zu tauschen? Also wenn gedrückt, dann auf losgelassen, oder umgekehrt.

Ferner fiel mir noch folgendes ein.
Es muss nicht zwangsläufig an dem Tastatur-Event liegen, es kann genau so gut an der Sub liegen die dann aufgerufen wird. Da ich es nicht kenne, kann ich auch nichts dazu sagen. Aber vielleicht könnte es ja helfen, wenn Du dort dann z.B. ein kurzes

Code: Alles auswählen

Wait 10
einbaust.


Zu guter letzt noch eine rein hypothetische Überlegung.
Ich weiß nicht ob das irgendwie funktionieren kann/wird, aber vielleicht sollte das Tastatur-Event in der dann aufgerufenen Sub aus dem Speicher entfernt werden. Denn ich vermute das es dort noch immer aktiv ist, und dadurch den Enter-Impuls mit sich rumschleppt. Wie jetzt aber das Event aus dem Speicher gelöscht wird, weiß ich nicht.


Auch wenn ich hier vielleicht etwas "blödsinniges" gesagt habe, so sind das ja überwiegend nur Überlegungen die ich angestellt habe, da ich wegen fehlendem Mac-System das Problem nicht nachstellen kann.



Gruß
balu

(gelöst) weiter nach Return beim Mac

von erikafuchs » Mi, 04.04.2012 20:43

Sorry für das Hin-und-Her, ich habe festgestellt, dass die Fragen im Unterforum für Macs sich eher nicht mit Makros beschäftigen und den Beitrag daher wieder hier eingestellt. Wo ist er den besser aufgehoben?

Hallo zusammen,
ich habe schon an anderer Stelle von meinen Problemen mit dem Mac berichtet, ich habe noch eins. In meinem Makro wird eine neue Aufgabe erstellt wenn nach der Eingabe einer Zahl in ein Dialogfenster die Returntaste gedrückt wird. Das entsprechende Fenster ruft folgendes Makro auf:

Code: Alles auswählen

Private Sub MyTextField_KeyPressed(oEvt)
	If (oEvt.KeyCode = com.sun.star.awt.Key.RETURN) Then
	EndeRechnen
	EndIf
End Sub
... unter Windows klappt das prima. Unter Linux auch. Beim Mac passiert zwar auch was, es wird aber anscheinend eine Aufgabe übersprungen. Das heißt, die Schüler beantworten die Aufgabe richtig, es taucht kurz "richtig" auf, eine neue Aufgabe erscheint, die Antwort wird nicht abgewartet, es erscheint die Meldung "falsch" und die nächste Aufgabe erscheint. Was ist hier beim Mac anders?
Grüße Pit

Nach oben