Selektion einer Zelle im Rechenblatt mit Script setzen

Hallo nochmal,

eine weitere AppleScript-frage:
Für die Bedienung eines Formulars würde ich gern dem Benutzer durch
ein Script die Selektion einer bestimmten Zelle in einem Rechenblatt
vorgeben.
Aber wie setzt man eine Selektion, also das die Zelle so erscheint
als wenn sie mit der Maus angeklickt worden wäre.

Inzwischen hab ich rausgefunden, dass man mit folgender Zeile eine
Zelle selektieren kann:
select cell "A5" of table "Rechenblatt 1!" of layout "Layout 1! of
document 1

Das funktionierte bei mir aber nur, wenn das betroffene Rechenblatt
nur eine Lage hat. Meines hat aber mehrere Lagen, die alle in
verschiedenen Containern zu sehen sind. Dort konnte ich das Script
nicht erfolgreich umsetzen. Liegt es vielleicht daran, dass das selbe
Rechenblatt mehrfach auf der Layoutseite vorhanden ist und RagTime
dann nicht weiss, welches davon gemeint ist?
Geht das dann überhaupt?

Dankbar für Tipps und Hinweise

Gruß Klaus

Re: Selektion einer Zelle im Rechenblatt mit Script setzen

#9148 On 10 Januar, 2010 10:35 Thomas Kaegi said,

Hallo Klaus

Deine AppleScript-Zeile ist etwas merkwürdig. Mindestens fehlt ein Anführungszeichen. Die Ausrufezeichen und die Referenz zum Layout sind aus meiner Sicht überflüssig:

select cell "A5" of table "Rechenblatt 1" of document 1

würde genügen. Für dein Problem habe ich allerdings keine Lösung. Mein Versuch mit folgendem AppleScript-Befehl:

select cell "[2]A5" of table "Rechenblatt 1" of document 1

bewirkt eine ganz eigenartige Befehlsausführung:
Zwar wird Zelle A5 in Lage 2 markiert. Gleichzeitig wird aber auch Zelle A5 in Lage 1 markiert und die Zelle ist dort mit Griffen als wirklich ausgewählte Zelle erkennbar.

Ein weiterer Versuch mit

set cell "[2]A5" of table "Rechenblatt 1" of document 1 to "x"

fügt den Wert x in Zelle A5 in beiden Lagen ein. Auch nicht gerade was ich erwartet habe.

Gruss, Thomas

Re: Selektion einer Zelle im Rechenblatt mit Script setzen

#9149 On 10 Januar, 2010 11:04 Lutz-Dieter Bornemann said,

Hallo Thomas, hallo Claus

mit fortschreitender Entwicklung von RagTime und MacOs
scheint RT immer mehr AppleScript-Fähigkeiten zu verlieren.

Während z.B. unter RT 6.2 RT noch in der Lage war,
die Lage (active plane) einer selektierten Rechenblattzelle zu erkennen,
kommt jetzt nur noch "0" dabei heraus.
(z.B. get active plane of selection)

Mein Skript zum Verlinken von Textstellen, das ich bei RT eingestellt habe,
kann unter OS 10.6.2 nicht mehr zuverlässig erkennen,
welches Textstück in RT selektiert wurde,
wenn es von Rt aus aufgerufen wird.
Ich bin gezwungen, es vom AppleScript-Editor aus aufzurufen.
Auch ein Doppelklick auf das AppleScript-Programm funktioniert nicht zuverlässig.

usw. ...

Folgendes Skript scheint bei mir aber zu funktionieren:

tell application "RagTime 6.5"
activate
set active plane of selection to 2
select cell "[2]A3" of table "Rechenblatt 1" of document 1
set cell "[2]A3" of table "Rechenblatt 1" of document 1 to 2.0
end tell

Vielleicht hilft das weiter.

Gruß
Lutz

Am 10.01.2010 um 10:36 schrieb Thomas Kaegi:

> Hallo Klaus
>
> Deine AppleScript-Zeile ist etwas merkwürdig. Mindestens fehlt ein Anführungszeichen. Die Ausrufezeichen und die Referenz zum Layout sind aus meiner Sicht überflüssig:
>
> select cell "A5" of table "Rechenblatt 1" of document 1
>
> würde genügen. Für dein Problem habe ich allerdings keine Lösung. Mein Versuch mit folgendem AppleScript-Befehl:
>
> select cell "[2]A5" of table "Rechenblatt 1" of document 1
>
> bewirkt eine ganz eigenartige Befehlsausführung:
> Zwar wird Zelle A5 in Lage 2 markiert. Gleichzeitig wird aber auch Zelle A5 in Lage 1 markiert und die Zelle ist dort mit Griffen als wirklich ausgewählte Zelle erkennbar.
>
> Ein weiterer Versuch mit
>
> set cell "[2]A5" of table "Rechenblatt 1" of document 1 to "x"
>
> fügt den Wert x in Zelle A5 in beiden Lagen ein. Auch nicht gerade was ich erwartet habe.
>
> Gruss, Thomas
>
>
>

Re: Selektion einer Zelle im Rechenblatt mit Script setzen

#9150 On 10 Januar, 2010 11:53 Thomas Kaegi said,

Hallo Lutz

Eigenartig, aber das von dir angegebene Script führt bei mir unter OS X 10.5.8 zu folgenden Fehlermeldungen:

Ausführung in RagTime:
"RagTime 6.5" hat einen Fehler erhalten: Fehler in der AppleEvent-Routine.

Ausführung aus dem ScriptEditor:
„RagTime 6.5“ hat einen Fehler erhalten: Die Aktion konnte nicht ausgeführt werden. Für diese Auswahl kann diese Eigenschaft nicht gesetzt werden.

Gruss, Thomas

Re: Selektion einer Zelle im Rechenblatt mit Script setzen

#9151 On 10 Januar, 2010 12:14 Klaus Steigemann said,

Hallo Thomas, hallo Lutz,

erst mal vielen Dank für eure Infos.
Daraus sehe ich zumindest, das es wohl nicht so einfach ist, eine
zuverlässige Lösung zu finden, die sowohl unter RT 6.0.2 als auch RT
6.5 lauffähig ist.
Werde mir was anderes einfallen lassen.

Hintergrund war eigentlich folgender:
Ich habe ein Formular mit einem Rechenblatt und zwei Lagen, die
deckungsgleich übereinander gelegt sind. Im Vordergrund wird die
Eingabe durch den Benutzer gemacht, im Hintergrund laufen, abhängig
von der Eingabe entsprechende grafische und informelle
Unterstützungen ab (Es werden z.B. Zellhintergründe und Vorgabetexte
angezeigt, die der Benutzer nicht direkt anwählen können soll).
Nun war es nötig, einen Teil des Eingabebereichs für zwei
unterschiedliche Fälle auszutauschen, die Gesamterscheinung mit den
Knöpfen für die Steuerung aber zu lassen.
Dank der Containerfähigkeit von Rechenblattzellen wollte ich dazu
einfach zwei weitere Rechenblätter (auch wieder mit je 2 Lagen) in
eine Zellvereinigung in beiden Lagen einsetzen, die per Knopf je für
Fall 1 oder Fall 2 ausgetauscht werden.
Dabei hab ich aber nun das Problem, wenn in dem eingesetzten
Rechenblatt im Vordergrund eine Zelle ausgewählt ist, was der
Normalfall ist (wegen Eingabe), nun aber der Knopf zum Wechsel zum
andern Fall betätigt wird, weiß RT nicht wohin mit der Selektion und
wählt deshalb den Container - also die Zellvereinigung - aus. Das
sieht erstens für den Bediener erschreckend aus, und zweitens besteht
nun die Gefahr, das der Bediener hier eine Fehler macht, z.B. die
Selektion versehentlich löscht.
Ein zweites Problem ist, das dabei die überlagerten Rechenblätter auf
die gleiche Lage umgestellt werden; wohl ein Bug. Man sieht also nur
noch den Vordergrund oder den Hintergrund (je nach dem welches davon
Lage 1 bzw. 2 ist)
Über das per-Script-selektieren wollte ich diesen Zustand wieder
richten lassen und für den Anwender die Selektion dorthin setzen, wo
sie Sinn macht, klappt aber nicht.

Ich löse das jetzt dadurch, dass ich die austauschbaren Rechenblätter
in eigene Container packe und per Script den einen oder anderen ins
Sichtfeld schieben lasse.

Gruß Klaus

Re: Selektion einer Zelle im Rechenblatt mit Script setzen

#9152 On 10 Januar, 2010 12:39 Lutz-Dieter Bornemann said,

Am 10.01.2010 um 11:56 schrieb Thomas Kaegi:

> Hallo Lutz
>
> Eigenartig, aber das von dir angegebene Script führt bei mir unter OS X 10.5.8 zu folgenden Fehlermeldungen:
>
> Ausführung in RagTime:
> "RagTime 6.5" hat einen Fehler erhalten: Fehler in der AppleEvent-Routine.
>
> Ausführung aus dem ScriptEditor:
> „RagTime 6.5“ hat einen Fehler erhalten: Die Aktion konnte nicht ausgeführt werden. Für diese Auswahl kann diese Eigenschaft nicht gesetzt werden.

Hallo Thomas

Ich arbeite mit MacOS 10.6.2
und RT 6.5.0 (Build 1818) – Info-Tafel von "Über RagTime …"
Den Updater für OS 10.6 habe ich angewendet.
Die MacOS-Info-Tafel gibt an: 6.5.0 (Build 1818u1).

Meine AppleScript-Version ist 2.1.1
und die AppleScript-Editor-Version 2.3 (118).

Ich habe mein Skript eben noch einmal getestet.
Es funktioniert bei mir sowohl aus RT als auch aus dem Editor einwandfrei.

Deine Fehlermeldung bekomme ich immer dann,
wenn die Lage, die ich selektieren will,
nicht existiert.

Ich glaube aber, mich zu erinnern,
dass mein Problem mit "get active plane of selection"
von einigen Anwendern auch nicht nachvollzogen werden konnte.

Vielleicht können Jürgen Schell und/oder Detlef Schulz etwas dazu sagen.

Gruß
Lutz

Re: Selektion einer Zelle im Rechenblatt mit Script setzen

#9153 On 10 Januar, 2010 13:07 Thomas Kaegi said,

Hallo Lutz

RagTime ist auch bei mir V 6.5 (1818u1). Aber AppleScript und der SkriptEditor sind älter als bei dir: 2.0.1, bzw. 2.2.1 (100.1). Ich nehme an, die neueren Versionen kommen mit SnowLeopard. Jedenfalls wird bei mir wöchentlich für AppleSoftware nach Aktualisierungen gesucht und im Moment werden keine solchen gefunden.

Thomas

Re: Selektion einer Zelle im Rechenblatt mit Script setzen

#9154 On 10 Januar, 2010 14:09 Lutz-Dieter Bornemann said,

Hallo Klaus,

möglicherweise eröffnet sich für Dich doch eine Lösungsmöglichkeit.
Ich habe leider nicht die Zeit, im Einzelnen durchzutesten.

Die folgende Reihenfolge muss u. U. genau eingehalten werden:

1) Neues RT-Dokument, beginnend mit Rechenblatt
2) Drei Lagen anfügen, sodass insgesamt 4 vorhanden sind.
3) Das Rechenblatt auf Lage 1 stellen.
4) Layout erzeugen.
5) (rechteckigen) Kontainer aufziehen, sodass der Bereich A1:E5 bequem zu sehen ist.
6) Rechenblatt hineinlegen
7) Danach erst (?!?!) zweiten Kontainer darunter aufziehen, sodass ... s. "5)"
8) Dasselbe Rechenblatt hineinlegen,
in diesem Kontainer z.B. in die Zelle B2 klicken
und zweimal "enter" drücken,
sodass die Zelle B2 im im zweiten Kontainer blau ist
und die Zelle B2 im ersten Kontainer grau.
Wenn Du jetzt andere Zellen im zweiten Kontainer anklickst,
läuft die "Selektion" im ersten Kontainer jeweils grau mit.
Das dürftest Du auch schon früher beobachtet haben.

Nun aber:

1) Im zweiten Kontainer z.B. in C3 klicken, sicherstellen, dass die Zelle blau ist
und die 4. Lage anwählen und z.B. "25" eingeben.
2) Im ersten Kontainer z.B. in A1 klicken und zweimal "enter" drücken
und die 1. Lage anwählen (Diese Zelle muss jetzt blau sein.)
3) Vom AppleScript-Editor aus folgendes Skript laufen lassen:
tell application "RagTime 6.5"
activate
set active plane of selection to 2
select cell "[2]C4" of table "Rechenblatt 1" of document 1
set cell "[2]D4" of table "Rechenblatt 1" of document 1 to 2.0
end tell

Es müsste Folgendes passieren:
Im ersten Kontainer wechselt die Selektion (blaue Zelle) auf [2]C4,
und in Zelle [2]D4 erscheint eine "2".
Im zweiten Kontainer bleibt die Anzeige wie in Schritt 1)
("25" in [4]C3).
Das ist Ergebnis, das Du wohl haben willst.

Aber:

Wenn Du nach Schritt 2 wieder in den zweiten Kontainer klickst
und zweimal "enter" drückst,
sodass die entsprechende Zelle in Lage 4 blau ist
und dann (von dort aus) das Skript laufen lässt,
läuft die Anzeige im ersten Kontainer synchron
mit grauer Zelle [2]C4 und einer "2" in [2]D4 mit.

Hoffentlich erlebst Du mit meinem Skript
nicht dieselben Fehlermeldungen
wie Thomas Kaegi.

Gruß
Lutz

Re: Selektion einer Zelle im Rechenblatt mit Script setzen

#9155 On 10 Januar, 2010 22:19 Klaus Steigemann said,

Hallo Lutz,
vielen Dank für deine Mühe. Das ist aber noch nicht ganz das, was ich
brauche.
Nach deiner Beschreibung wird das Rechenblatt in dem Container, der
die Lage evtl. falsch darstellt immer mit der Maus selektiert. Genau
das will ich ja vermeiden. Das Script soll die Selection in das
Rechenblatt setzen, welches die falsch Lage anzeigt, bevor sie dort
die Lage wechselt und dann wieder in eine Zelle im Vordergrund
springen, damit der Anwender nicht was Ungewolltes tut.
Ich will auch nicht das der Anwender erst irgendwelche Zellen
markieren muss, um erst die falsche Darstellung wieder zurecht zu
rücken, bevor er weiter machen kann.

Falsch dargestellt wird immer die Lage im dahinter liegenden
Rechenblatt (zeigt die gleiche wie im vorderen). Und...
Falsch ausgewählt ist bei den verschachtelten Rechenblättern nach dem
Auswechseln per Knopf (siehe Beschreibung von heute mittag) immer die
Vereinigung des vorderen Rechenblattes, also die gesamte Fläche des
ausgetauschten verschachtelten Rechenblattes, nicht aber eine Zell in
dem eingebauten, wo der Anwender seine Einträge machen soll.

Kann man den wenigstens die falsche Selection per Script wegnehmen/
deselektieren? Wahrscheinlich nur durch Selection eines anderen
Objektes, oder?

Gruß Klaus

PS: Habe dein Script noch nicht ausprobiert, da ich vorab wichtigeres
zu tun habe. Werde ich aber noch zu gegebener Zeit.

Am 10.01.2010 um 14:28 schrieb Lutz-Dieter Bornemann:

> Hallo Klaus,
>
> möglicherweise eröffnet sich für Dich doch eine Lösungsmöglichkeit.
> Ich habe leider nicht die Zeit, im Einzelnen durchzutesten.
>
> Die folgende Reihenfolge muss u. U. genau eingehalten werden:
>
> 1) Neues RT-Dokument, beginnend mit Rechenblatt
> 2) Drei Lagen anfügen, sodass insgesamt 4 vorhanden sind.
> 3) Das Rechenblatt auf Lage 1 stellen.
> 4) Layout erzeugen.
> 5) (rechteckigen) Kontainer aufziehen, sodass der Bereich A1:E5
> bequem zu sehen ist.
> 6) Rechenblatt hineinlegen
> 7) Danach erst (?!?!) zweiten Kontainer darunter aufziehen,
> sodass ... s. "5)"
> 8) Dasselbe Rechenblatt hineinlegen,
> in diesem Kontainer z.B. in die Zelle B2 klicken
> und zweimal "enter" drücken,
> sodass die Zelle B2 im im zweiten Kontainer blau ist
> und die Zelle B2 im ersten Kontainer grau.
> Wenn Du jetzt andere Zellen im zweiten Kontainer anklickst,
> läuft die "Selektion" im ersten Kontainer jeweils grau mit.
> Das dürftest Du auch schon früher beobachtet haben.
>
> Nun aber:
>
> 1) Im zweiten Kontainer z.B. in C3 klicken, sicherstellen, dass die
> Zelle blau ist
> und die 4. Lage anwählen und z.B. "25" eingeben.
> 2) Im ersten Kontainer z.B. in A1 klicken und zweimal "enter" drücken
> und die 1. Lage anwählen (Diese Zelle muss jetzt blau sein.)
> 3) Vom AppleScript-Editor aus folgendes Skript laufen lassen:
> tell application "RagTime 6.5"
> activate
> set active plane of selection to 2
> select cell "[2]C4" of table "Rechenblatt 1" of document 1
> set cell "[2]D4" of table "Rechenblatt 1" of document 1 to 2.0
> end tell
>
> Es müsste Folgendes passieren:
> Im ersten Kontainer wechselt die Selektion (blaue Zelle) auf [2]C4,
> und in Zelle [2]D4 erscheint eine "2".
> Im zweiten Kontainer bleibt die Anzeige wie in Schritt 1)
> ("25" in [4]C3).
> Das ist Ergebnis, das Du wohl haben willst.
>
> Aber:
>
> Wenn Du nach Schritt 2 wieder in den zweiten Kontainer klickst
> und zweimal "enter" drückst,
> sodass die entsprechende Zelle in Lage 4 blau ist
> und dann (von dort aus) das Skript laufen lässt,
> läuft die Anzeige im ersten Kontainer synchron
> mit grauer Zelle [2]C4 und einer "2" in [2]D4 mit.
>
> Hoffentlich erlebst Du mit meinem Skript
> nicht dieselben Fehlermeldungen
> wie Thomas Kaegi.
>
> Gruß
> Lutz

Re: Selektion einer Zelle im Rechenblatt mit Script setzen

#9157 On 11 Januar, 2010 15:43 Thomas Kaegi said,

Hallo Klaus

Ich bin nicht ganz sicher, glaube aber eine Lösung für dein Problem gefunden zu haben.

Ich weiss, dass du mit Lagen gearbeitet hast. Gleichzeitig haben wir aber festgestellt, dass AppleScript damit Probleme hat. Nimm also für den Hintergrund deines Formulars ein anderes Rechenblatt. Natürlich ist das aufwändiger, da die Grösse der Zellen im Vorder- und Hintergrund nicht automatisch gleich sind.

Ich habe folgende Versuchsanordnung erfolgreich getestet:
1. Im Rechenblatt 1 sind die Zellen A1:C1 je 10 cm breit und 2,1 cm hoch.
2. Im Rechenblatt 2 und Rechenblatt 3 sind die Zelle A1:B1 je 5 cm breit und 0,7 cm hoch
3. Das Rechenblatt 2 liegt in Zelle B1 von Rechenblatt 1
4. Das Rechenblatt 3 liegt in Zelle C1 von Rechenblatt 1
5. In Zelle A1 von Rechenblatt 1 steht die Formel Wenn(A2;C1;B1)
6. Das AppleScript "Varianten" lautet wie folgt (ich weiss nicht, ob die doppelten Anführungszeichen in Deutschland evtl. als einfache Anführungszeichen geschrieben werden müssen):
tell application "RagTime 6.5"
activate
if value of cell "A2" of table "Rechenblatt 1" of document 1 = 0 then
set cell "A2" of table "Rechenblatt 1" of document 1 to 1
select cell "A2" of table "Rechenblatt 3" of document 1
else
set cell "A2" of table "Rechenblatt 1" of document 1 to 0
select cell "A2" of table "Rechenblatt 2" of document 1
end if
set value of selection to empty
end tell

7. Für den Knopf "Variantenwahl" ist der Titel als Formel definiert:
Wenn(Rechenblatt 1!$A$2;'Variante 2';'Variante 1')
und der Befehl heisst "Varianten"
(also der Name des AppleScripts - ohne Anführungszeichen)

Mit Klick den Knopf wird das AppleScript aufgerufen, welches zuerst den Inhalt von Zelle A2 im Rechenblatt 1 von 1 zu 0 ("wahr" zu "falsch") oder umgekehrt wechselt. Das bestimmt, welches der Rechenblätter 2 oder 3 in die im Layout sichbare Zelle A1 des Rechenblatts 1 geholt wird. Gleichzeitig ändert auch der Text im Knopf. Im zweiten Schritt selektiert das Skript die Zelle A2 des sichtbaren "Unterrechenblatts" und löscht dessen Inhalt, unabhängig davon, was vorher ausgewählt war. Eine Eingabe über die Tastatur ist sofort möglich. Bei mir erscheint sie allerdings nur im Eingabefenster in der Werkzeugleiste. Der Zellinhalt wird erst im Rechenblatt angezeigt, nachdem die Eingabe, z.B. mit Enter, abgeschlossen wird.

Gruss
Thomas

Re: Selektion einer Zelle im Rechenblatt mit Script setzen

#9158 On 12 Januar, 2010 11:34 Klaus Steigemann said,

Hallo Thomas,

das sieht ja schon ganz gut aus, jedenfalls deutlich besser als das
was bei mir bisher ablief.

Leider kommt da dann viel zusätzliche Arbeit auf mich zu, weil in den
bisher verwendeten Lagen einiges an Formeln eingebaut ist, die sich
auf diverse Zellen der Lagen beziehen. Diese Formeln muss ich alle
anpassen. Und der Vorteil der Lagen beim Übereinanderlegen geht durch
das Verwenden getrennter Rechenblätter auch verloren. Ich muss also
jedes Rechenblatt von Hand in Zellbreiten und -höhen anpassen.

Wird wohl nicht anders gehen.

Am 11.01.2010 um 15:46 schrieb Thomas Kaegi:
> ...
> 6. Das AppleScript "Varianten" lautet wie folgt (ich weiss nicht,
> ob die doppelten Anführungszeichen in Deutschland evtl. als
> einfache Anführungszeichen geschrieben werden müssen):
> ...
In AppleScript ist das in Deutschland und Schweiz identisch, da das
Programm keine Länderanpassung in der Syntax hat.
> Eine Eingabe über die Tastatur ist sofort möglich. Bei mir
> erscheint sie allerdings nur im Eingabefenster in der
> Werkzeugleiste. Der Zellinhalt wird erst im Rechenblatt angezeigt,
> nachdem die Eingabe, z.B. mit Enter, abgeschlossen wird.
>
> Gruss
> Thomas
Das erscheint bei mir genauso. Ist zwar nicht ganz wie erwartet/
gewünscht, aber zumindest nutzbar.

Wenn Du in deiner Beispieldatei, den Container so breit aufziehst,
dass die Spalten B und C von Rechenblatt 1 zu sehen sind, kannst du
sehen, wo dein Script eigentlich die Selection macht.
Ich vermute mal, du hast die Installation der Rechenblätter 2 und 3
als erstes hier gemacht. Deshalb nimmt AppleScript diese als das
Original an.
Das kann man auch sehen, wenn man einfach noch zwei Rechtecke
aufzieht und dort die beiden Rechenblätter noch einmal installiert.
Auch hier sind die ausgewählten Zellen nur in grau zu sehen.
Im Original sind sie blau mit Auswahlrand wie gewohnt.

Diese Beobachtung passt auch mit dem was Lutz in seiner letzten Mail
am 10.01. geschrieben hat zusammen.

Vielen Dank für deine Mühe, das hilft weiter

Gruß Klaus

Re: Selektion einer Zelle im Rechenblatt mit Script setzen

#9159 On 12 Januar, 2010 12:53 Thomas Kaegi said,

Hallo Klaus

Ich habe noch einen Schritt mehr herausgefunden. Aber zuerst noch eine Korrektur zu meinem gestrigen Beitrag: Schritt 2 müsste richtig heissen:
2. Im Rechenblatt 2 und Rechenblatt 3 sind die Zelle A1:B3 je 5 cm breit und 0,7 cm hoch

Jetzt fügst du meiner gestrigen Anleitung noch folgende Schritte hinzu:
2a Leg eine Zeichnung 1 an und leg Rechenblatt 2 an Position 0/0 und mit Linienvorlage "Containerrand" und Grösse 10,0 x 2,1 cm dort hinein
2b Analog eine Zeichnung 2 mit Rechenblatt 3
Ersetz Schritte 3 und 4 wie folgt:
3. Zeichnung 1 (statt Rechenblatt 2) liegt in Zelle B1 von Rechenblatt 1
4. Zeichnung 2 (statt Rechenblatt 3) liegt in Zelle C1 von Rechenblatt 1

Der Unterschied zur gestrigen Lösung: Jetzt sind auch noch die Griffe der ausgewählten Zelle sichtbar. Aber leider ist der in die so ausgewählte Zelle eingegebene Wert auch so noch - bis die Eingabe abgeschlossen wird - lediglich in der Werkzeugleiste zu sehen.

Mit freundlichem Gruss
Thomas

Re: Selektion einer Zelle im Rechenblatt mit Script setzen

#9160 On 12 Januar, 2010 13:19 Klaus Steigemann said,

Hallo Thomas,

so in etwa wäre ich auch vorgegangen, musste jedoch erst noch andere
Dinge hier erledigen.
Für meinen Bedarf reicht mir das aber in dieser Form erst einmal aus.

Danke und Gruß, Klaus

Am 12.01.2010 um 12:56 schrieb Thomas Kaegi:
> Hallo Klaus
>
> Ich habe noch einen Schritt mehr heruasgefunden. Aber zuerst noch
> eine Korrektur zu meinem gestrigen Beitrag: Schritt 2 müsste
> richtig heissen:
> 2. Im Rechenblatt 2 und Rechenblatt 3 sind die Zelle A1:B3 je 5 cm
> breit und 0,7 cm hoch
>
> Jetzt fügst du meiner gestrigen Anleitung noch folgende Schritte
> hinzu:
> 2a Leg eine Zeichnung 1 an und leg Rechenblatt 2 an Position 0/0
> und mit Linienvorlage "Containerrand" dort hinein
> 2b Analog eine Zeichnung 2 mit Rechenblatt 3
> Ersetz Schritte 3 und 4 wie folgt:
> 3. Zeichnung 1 (statt Rechenblatt 2) liegt in Zelle B1 von
> Rechenblatt 1
> 4. Zeichnung 2 (statt Rechenblatt 3) liegt in Zelle C1 von
> Rechenblatt 1
>
> Der Unterschied zur gestrigen Lösung: Jetzt sind auch noch die
> Griffe der ausgewählten Zelle sichtbar. Aber leider ist der in die
> so ausgewählte Zelle eingegebene Wert auch so noch - bis die
> Eingabe abgeschlossen wird - lediglich in der Werkzeugleiste zu sehen.
>
> Mit freundlichem Gruss
> Thomas

Re: Selektion einer Zelle im Rechenblatt mit Script setzen

#9162 On 14 Januar, 2010 09:19 Jürgen Schell said,
Hallo Thomas,

ich bin verblüfft. Ich hab ein Dokument mit einem Rechenblatt mit 6 Lagen. Es ist in einem Container auf einer Layout-Seite platziert.

folgendes Script

tell application "RagTime 6.5"
    select cell "[4]A1" of table "Rechenblatt 1" of document 1
    set value of cell "[2]A1" of table "Rechenblatt 2" of document 1 to "xyz"
end tell

bewirkt bei mir: Im Container ist Lage 4 zu sehen und Zelle A1 dieser Lage ausgewählt. Wenn ich auf Lage 2 wechsle, steht dort "xyz" wie erwartet, und das steht auch in keiner anderen Zelle. Was  machen wir verschieden?

Gruß, Jürgen

Am 10.01.10 10:36, schrieb Thomas Kaegi:

Hallo Klaus

Deine AppleScript-Zeile ist etwas merkwürdig. Mindestens fehlt ein Anführungszeichen. Die Ausrufezeichen und die Referenz zum Layout sind aus meiner Sicht überflüssig:

select cell "A5" of table "Rechenblatt 1" of document 1

würde genügen. Für dein Problem habe ich allerdings keine Lösung. Mein Versuch mit folgendem AppleScript-Befehl:

select cell "[2]A5" of table "Rechenblatt 1" of document 1

bewirkt eine ganz eigenartige Befehlsausführung:
Zwar wird Zelle A5 in Lage 2 markiert. Gleichzeitig wird aber auch Zelle A5 in Lage 1 markiert und die Zelle ist dort mit Griffen als wirklich ausgewählte Zelle erkennbar.

Ein weiterer Versuch mit

set cell "[2]A5" of table "Rechenblatt 1" of document 1 to "x"

fügt den Wert x in Zelle A5 in beiden Lagen ein. Auch nicht gerade was ich erwartet habe.

Gruss, Thomas


Re: Selektion einer Zelle im Rechenblatt mit Script setzen

#9163 On 14 Januar, 2010 11:10 Thomas Kaegi said,

Hallo Jürgen

In der Tat - ich bin vermutlich einer Täuschung aufgesessen. Ich habe das damalige Dokument nicht mehr. Aber ich habe ein neues angelegt und in 4 Containern auf einer Layoutseite die Lagen 1-4 von Rechenblatt 1 platziert. In Zelle C1 habe ich jeweils die Formel "Lage" eingegeben, so dass ich immer sehe, welche Lage dort angezeigt ist. Dann habe ich das von dir gegebene Script (allerdings alles mit Rechenblatt 1):
--
tell application "RagTime 6.5"
select cell "[4]A1" of table "Rechenblatt 1" of document 1
set value of cell "[2]A1" of table "Rechenblatt 1" of document 1 to "xyz"
end tell
--
ausgeführt und es funktioniert alles perfekt - in Lage 2 wird der gewünschte Wert eingesetzt und in Lage 4 (und nur in dieser) ist die Zelle A1 ausgewählt. Allerdings habe ich dabei bemerkt, weshalb ich mich wohl habe täuschen lassen: Im ersten Container, in welchem Lage 1 gezeigt wird, ist nach Ausführung des Scripts gar nicht mehr Lage 1 angezeigt, sondern die Lage 4 gemäss dem Select-Befehl. Vermutlich habe ich also bei meinem Versuch, der zur Problemmeldung führte, einfach nicht bemerkt, dass die im einen Container angezeigte Lage getauscht wurde, und somit gemeint, die Zelle sei in zwei Lagen ausgewählt (selektiert), bzw. der Wert sei in zwei Lagen eingesetzt worden.

So weit so gut - aber weshalb wird denn im einen Container die angezeigte Lage getauscht? Es nützt auch nichts, wenn ich den Container mit Lage 1 lösche und einen neuen Container mit Lage 1 anlege, weil ich vermute, die Reihenfolge des Anlegens der Container könne das Verhalten beeinflussen.

In einem weiteren Versuch stelle ich aber fest, dass das Verhalten trotzdem irgend etwas mit der Reihenfolge des Anlegens und/oder der Anordnung im Layout zu tun hat: Ich lege einen fünften Container an, in welchem ich ebenfalls Lage 1 anzeigen lasse. Den ersten Container ziehe ich auf der Layoutseite in die unterste Position. In der Reihenfolge der Erstellung lasse ich in den Containern die folgenden Lagen anzeigen: 3 - 1 - 2 - 1 - 4 (also gegenüber ursprünglicher Zuordnung getauscht). Jetzt lasse ich das Script wieder laufen und stelle fest:
1. In allen Containern bleibt die zugewiesene Lage unverändert angezeigt
2. In Lage 2 wurde der Zelle A1 der gewünschte Wert zugewiesen
3. In Lage 4 (und nur in dieser) ist Zelle A1 ausgewählt
Was ich nicht herausgefunden habe: Manchmal sind die Griffe der ausgewählten Zelle sichtbar und manchmal nicht (in diesem Fall: Rechenblatt im eigenen Fenster öffnen und Lage 4 anzeigen - dort sind sie sichtbar) - von was hängt das ab?

Mit Herumprobieren könnte ich wohl auch die Fragen
Weshalb werden bei Ausführung des Skripts manchmal
- die in einem Container angezeigte Lage des Rechenblatts verändert
- die Griffe der ausgewählten Zelle angezeigt
und manchmal nicht, noch beantworten. Aber dafür fehlt mir die Motivation. ;-)

Gruss
Thomas

Re: Selektion einer Zelle im Rechenblatt mit Script setzen

#9164 On 14 Januar, 2010 16:14 Jürgen Schell said,

Am 14.01.10 11:11, schrieb Thomas Kaegi:
> So weit so gut - aber weshalb wird denn im einen Container die
> angezeigte Lage getauscht? Es nützt auch nichts, wenn ich den
> Container mit Lage 1 lösche und einen neuen Container mit Lage 1
> anlege, weil ich vermute, die Reihenfolge des Anlegens der Container
> könne das Verhalten beeinflussen.
"select" simuliert mausige Aktionen. Und eine Zelle in einem Container
kannst Du nur anklicken, wenn die Lage sichtbar ist. Letztlich verhält
sich das sehr ähnlich, wie eine Auswahl durch Adresseingabe in der
Werkzeugleiste. Wenn Du in ein Rechenblatt klickst und oben in der
Werkzeugleiste (Feld mit der Zelladress-Angabe) z.B. "[2]A5" eingibst,
wird auch Lage 2 angezeigt. Wenn Dein Container 100 Zeilen zeigt und Du
gibst "[200]A5" ein, geht das Rechenblatt in einem eigenen Fenster auf,
um die Selektion zeigen zu können. Ebenso bei einem AppleScript.

Wenn das Rechenblatt in mehreren Containern existiert, hab ich auch
keine Methode gefunden, zu steuern, in welchem Container die Auswahl
getroffen wird. Da hab ich auch nicht viel ausprobiert, da das in der
ursprünglichen Frage nicht vorkam.

Gruß, Jürgen